← 最新论文
💻 computer science

Portable and Secure CI/CD for COBOL: Lessons from an Industrial Migration

本文通过丹麦银行 IT 服务商 Bankdata 的案例,阐述了如何将脆弱且耦合的 Jenkins COBOL CI/CD 流水线迁移至基于容器化和抽象层的架构,从而在满足高安全合规要求的同时将构建时间减少了 82%。

原作者: Andreas Askholm, Kenneth Johnsen, Jacopo Mauro

发布于 2026-04-02
📖 1 分钟阅读☕ 轻松阅读

原作者: Andreas Askholm, Kenneth Johnsen, Jacopo Mauro

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇文章讲述了一个关于**“给老古董穿上高科技新鞋”**的故事。

想象一下,Bankdata(丹麦的一家大型银行 IT 服务商)就像是一个拥有百年历史的**“金融帝国”。这个帝国里运行着许多至关重要的系统,它们是用一种叫COBOL的古老语言编写的。COBOL 就像是一种“古典拉丁语”**,虽然古老,但极其精准、可靠,至今仍在处理着数以亿计的资金交易。

然而,这个帝国面临着一个大麻烦:他们用来管理这些古老系统的**“流水线”(CI/CD 管道),就像是一个摇摇欲坠的、由旧木箱和胶带拼凑起来的传送带**。

1. 旧系统的问题:像是一个“随时会散架的乐高城堡”

在迁移之前,Bankdata 的自动化流程(用来测试和部署代码的工具)存在几个大问题:

  • 太依赖特定平台(Vendor Lock-in): 他们的流水线是专门为Jenkins(一种自动化服务器)定制的。这就像是你造了一辆车,但它的引擎只能加一种特定品牌的汽油,而且只能在特定的加油站(Jenkins)里才能启动。如果你想换加油站,车就废了。
  • 结构混乱(四个仓库): 他们的代码被拆散在四个不同的“房间”(仓库)里。维护人员想要修一个螺丝,得跑四个房间找图纸,非常累人。
  • 每次启动都要“现买零件”: 每次流水线运行,它都要临时去网上下载和安装所需的工具(就像每次做饭前,厨师都要先去菜市场买菜、洗菜、切菜,而不是提前准备好)。这导致每次运行都要等很久(平均 724 秒),而且如果网络不好,菜买不到,饭就做不成了。
  • 脆弱且不安全: 因为太复杂,稍微改一点东西,整个系统就可能崩溃。而且因为临时下载东西,很难保证每次用的“食材”都是干净安全的。

2. 解决方案:把厨房搬进“集装箱”

为了解决这些问题,Bankdata 的团队决定进行一场**“大搬家”。他们把流水线从 Jenkins 搬到了GitHub Actions**(另一种更现代的自动化平台),并采用了**“容器化”**技术。

我们可以用**“移动厨房”**的比喻来理解这次迁移:

  • 抽象层(Abstraction Layer)= 通用翻译官:
    以前,厨师(代码)只会说"Jenkins 方言”。现在,他们请了一位翻译官(抽象层)。厨师只需要对翻译官说“我要炒菜”,翻译官负责把这句话转换成 Jenkins 或 GitHub 都能听懂的指令。这样,以后想换平台,只需要换翻译官,厨师不用重新学语言。

  • 容器化(Containerization)= 预制菜与移动厨房:
    以前,每次做饭都要临时找锅碗瓢盆。现在,他们造了一个**“移动集装箱厨房”。这个集装箱里预先装好了**所有的锅碗瓢盆、调料、甚至厨师需要的工具(COBOL 编译器、测试工具等)。

    • 好处: 无论这个集装箱被运到哪里(任何服务器),里面的环境都是一模一样的。厨师不需要再临时找东西,直接开火就能做。
  • 精简仓库 = 整理杂物间:
    他们把分散在四个房间的图纸,全部整理进了一个整洁的文件夹里。现在,谁想改代码,一眼就能找到,不再迷路。

3. 成果:从“老牛拉车”到“高铁飞驰”

这次改造的效果非常惊人:

  • 速度提升 82%: 以前跑一次流水线要12 分钟(724 秒),现在只需要2 分钟(130 秒)。就像把老牛拉车换成了高铁。
  • 更稳定、更安全: 因为所有工具都预先打包在“集装箱”里,不再临时下载,所以环境永远一致,不会出现“今天能跑,明天就报错”的情况。同时,因为工具是预先审核过的,安全性也大大提高了。
  • 不再被“绑架”: 现在,这个流水线不再死死绑定在 Jenkins 上。如果未来 Bankdata 想换到别的平台,只需要调整一下“翻译官”,核心逻辑完全不用动。

4. 学到的教训(给其他老企业的建议)

这篇文章最后总结了一些宝贵的经验,就像给其他想改造的老企业开的“药方”:

  1. 不要直接改老代码,要加个“中间层”: 就像给老房子加电梯,不要拆掉承重墙,而是加一个独立的电梯井(抽象层),这样以后换电梯品牌也不影响房子结构。
  2. 提前准备好所有工具(容器化): 别指望每次开工都临时找工具,把工具箱打包好,随叫随到。
  3. 别忘了“人”的因素: 技术再好,如果老员工(COBOL 程序员)觉得新系统太难用,他们也会抵触。所以,要让他们参与进来,甚至提供像 VS Code 插件这样的工具,让他们在熟悉的界面里工作,减少不适感。
  4. 安全不仅仅是“藏好密码”: 在日志里把密码藏起来是不够的,要从根本上防止密码泄露,比如严格控制谁能访问什么。

总结

这篇论文讲述了一个**“老树发新芽”的故事。Bankdata 没有抛弃他们赖以生存的古老 COBOL 系统,而是通过“容器化”“抽象层”这两项现代技术,给这些老系统装上了现代化的“自动驾驶系统”**。

结果就是:跑得更快了(效率提升),更安全了(风险降低),而且以后想换车(换平台)也更容易了。 这对于任何拥有古老但关键系统的企业来说,都是一个极具参考价值的成功案例。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →