挑战
在经历了敏捷转型之后,ING 意识到它需要一个标准化的平台来支持开发人员的工作。基础架构架构师 Thijs Ebbers 表示:“我们的 DevOps 团队被赋予了自主权。这有很多好处;你会得到各种各样的想法。但很多团队都在重复造轮子。团队开始尝试 Docker、Docker Swarm、Kubernetes、Mesos。然而,对于一家公司来说,拥有 100 个轮子并不真正有用,而拥有一个好轮子才更有用。
解决方案
ING 团队使用 Kubernetes 进行容器编排,使用 Docker 进行容器化,开始为其 CI/CD 管道和全新应用程序构建内部公共云。该管道基于 Mesos Marathon 构建,将迁移到 Kubernetes 上。面向英国(以及即将进入法国和意大利)市场的银行账户管理应用程序 Yolt 已经上线,托管在 Kubernetes 框架上。目前至少有两个基于 Kubernetes 框架的全新项目将在今年晚些时候投入生产。到 2018 年底,该公司计划将银行客户体验中使用的许多 API 转换为云原生 API,并将其托管在基于 Kubernetes 的平台上。
影响
基础架构架构师 Onno Van der Voort 表示:“云原生技术正在帮助我们提高速度,从将应用程序投入测试到验收再到生产。如果你现在去 ING 看看,你会看到所有这些 DevOps 团队都在进行站会、演示。他们试图真正快速地推出新功能。我们为现有的一个组件举办了一场黑客马拉松,并在 2.5 天内将其基本转换为云原生,当然,在代码完全准备好投入生产之前,还需要更多时间。”
本着同样的精神,该公司在几年前进行了一次敏捷转型。基础架构架构师 Thijs Ebbers 表示:“我们的 DevOps 团队被赋予了自主权。这有很多好处;你会得到各种各样的想法。但很多团队都在重复造轮子。团队开始尝试 Docker、Docker Swarm、Kubernetes、Mesos。然而,对于一家公司来说,拥有 100 个轮子并不真正有用,而拥有一个好轮子才更有用。”
为了在公司严格的安全准则内实现部署流程的标准化,该团队考察了几种解决方案,发现过去一年“Kubernetes 赢得了容器管理框架之战”,Ebbers 说。“我们决定在 Kubernetes 框架上实现 ING 的标准化。” 他补充说,由于银行监管的原因,所有东西都在本地运行,但“我们将构建一个内部公共云。我们正在努力赶上公共云的发展步伐。这就是我们选择 Kubernetes 的原因之一。”
他们还采用了 Docker 来解决 ING CI/CD 管道中的一个主要痛点。基础架构架构师 Onno Van der Voort 表示,在容器化之前,“每个开发团队都必须订购一台虚拟机,这对他们来说是一个相当繁重的交付模型。容器化的另一个用例是,当应用程序在管道中传输时,他们会启动 Docker 容器来对应用程序进行测试工作,在完成工作后,容器会被再次终止。”
由于行业法规,应用程序只能通过管道(在管道中强制执行合规性),而不能直接部署到容器中。Van der Voort 说:“我们必须运行我们需要的完整服务平台,许多路由来自不同的地方。我们需要这个 Kubernetes 框架来部署容器,以及所有这些组件、监控、日志记录。这很复杂。” 出于这个原因,ING 选择从 OpenShift Origin Kubernetes 发行版开始。
Van der Voort 说:“云原生技术已经帮助我们提高了速度,从将应用程序投入测试到验收再到生产。如果你现在去 ING 看看,你会看到所有这些 DevOps 团队都在进行站会、演示。他们试图真正快速地推出新功能。我们为现有的一个组件举办了一场黑客马拉松,并在 2.5 天内将其基本转换为云原生,当然,在代码完全准备好投入生产之前,还需要更多时间。”
该管道基于 Mesos Marathon 构建,将迁移到 Kubernetes 上。一些遗留应用程序也被重写为云原生,以便在框架上运行。至少有两个基于 Kubernetes 构建的较小全新项目将在今年投入生产。到 2018 年底,该公司计划将银行客户体验中使用的许多 API 转换为云原生 API,并将其托管在基于 Kubernetes 的平台上。
然而,该团队认为该银行的后端系统不会迁移到 Kubernetes 平台上。Van der Voort 说:“我们的理念是,只有在云原生时,将东西迁移到云上才有意义。如果你有传统的架构,构建传统的模式,那么迁移到云上没有任何价值。” 云平台架构师 Alfonso Fernandez-Barandiaran 补充道:“ING 对我们的发展方向有一个战略,以便提高我们的敏捷性。所以这不是这项技术有多酷,而是要找到合适的技术和方法。”
Kubernetes 框架将托管一些对 ING 来说高度优先的全新项目:该公司正在开发的应用程序是为了响应 PSD2,这是欧盟委员会的一项指令,要求提供更具创新性的在线和移动支付,该指令已于 2018 年初生效。例如,一个名为 Yolt 的银行账户管理应用程序,服务于英国市场(以及即将进入法国和意大利),它是在 Kubernetes 平台上构建的,并且已经投入生产。ING 还在开发将在 Kubernetes 平台上运行的区块链应用程序。Ebbers 说:“很多开发团队都联系过我们,他们对如何使用容器有自己的想法。”
即使在银行业有特殊要求的情况下,ING 也成功地在技术和创新方面处于领先地位。Fernandez-Barandiaran 说:“每次我们遇到限制时,我们都会寻找一种更好的方式来使用这项技术。”
毕竟,结果是值得付出努力的。Ebbers 说:“云原生对我们业务的最大承诺是在 48 小时内从构思到生产。这将需要所有这些项目都成熟起来。我们距离这个目标还有几年的时间,但这对我们来说是完全可行的。”