挑战
Northwestern Mutual 客户体验工程总监 Brad Williams 表示,2015 年春,Northwestern Mutual 收购了金融科技初创公司 LearnVest,并决定“将 Northwestern Mutual 的领先产品和服务与 LearnVest 的数字体验和创新金融规划平台相结合”。公司现有的基础设施已针对在本地网络上托管的批处理工作流进行了优化;部署非常传统,侧重于遵循流程而非提供部署敏捷性。Williams 说:“我们必须构建一个具有弹性可扩展性,同时响应速度更快的平台,这样我们就能快速将数据传输到客户网站,让我们的终端客户获得他们期望的体验。”
解决方案
平台团队提出了使用公共云 (AWS)、Docker 容器和 Kubernetes 进行编排的计划。Northwestern Mutual 云原生工程师 Frank Greco Jr. 说:“Kubernetes 为我们提供了基础框架,因此团队在构建和快速频繁交付方面可以非常自主。”团队还构建并开源了 Kanali,这是一款使用 OpenTracing、Jaeger 和 gRPC 的 Kubernetes 原生 API 管理工具。
影响
以前,基础设施部署可能需要数周;现在,只需几分钟即可完成。部署次数大幅增加,从每年约 24 次增加到 2017 年前 10 个月的 500 多次。可用性也提高了:以前每周日早上有 6 小时的提交控制窗口,以及其他一般维护期,在此期间可能会发生中断。Northwestern Mutual 应用程序平台团队经理 Bryan Pfremmer 说:“现在我们已经消除了计划中的中断窗口。”Kanali 对利润产生了影响。Pfremmer 说,公司以前使用的供应商 API 管理产品需要 23 台服务器,“专用于 API 管理”。“现在,它已全部集成到现有堆栈中,并作为 Kubernetes 上的另一个部署运行。这只是一个环境。我们拥有的三个环境加上测试环境,这都是实实在在的节省。”
多年来,该公司在技术管理方面采取了类似的方法,最近进行了数字化转型,以推进公司的数字化战略——包括在云原生领域引起了很大轰动。
Northwestern Mutual 客户体验工程总监 Brad Williams 表示,2015 年春,这家保险和金融服务公司收购了金融科技初创公司 LearnVest,并决定“将 Northwestern Mutual 的领先产品和服务与 LearnVest 的数字体验和创新金融规划平台相结合”。公司现有的基础设施已针对在本地数据中心托管的批处理工作流进行了优化;部署非常传统,并且有许多容易出错的手动步骤。
Williams 说,为了给公司的 450 万客户提供他们所期望的数字体验,“我们必须构建一个具有弹性可扩展性,同时响应速度更快的平台,这样我们就能快速将数据传输到客户网站。我们基本上是说,‘你构建你认为支持新的、面向现代的系统所必需的系统。’这就是我们脱离所有传统系统的原因。”
Williams 和平台团队的其他成员决定,第一步是开始从私有数据中心迁移到 AWS。考虑到新的微服务架构——以及实施最适合组织的自由——他们开始使用 Docker 容器。在研究了各种容器编排选项后,他们选择了 Kubernetes,尽管当时它仍处于测试阶段。Northwestern Mutual 云原生工程师 Frank Greco Jr. 说:“我们曾就是否应该自己构建一些东西,还是只是利用该产品并随之发展进行了一些讨论。Kubernetes 绝对是我们正确的选择。它为我们提供了基础框架,因此团队在构建和快速频繁交付方面可以自主。”
作为早期采用者,团队必须使用大量的 Ansible 脚本来搭建集群。Northwestern Mutual 应用程序平台团队经理 Bryan Pfremmer 解释说:“鉴于我们业务的性质,我们有许多严格的安全要求。我们发现我们运行的配置很少有人尝试过。”客户体验团队是第一个使用新平台的团队;如今,该公司 1500 名工程师中有数百人正在使用它,更多人渴望加入。
结果非常显著。以前,基础设施部署可能需要两周;现在,只需几分钟即可完成。现在,Pfremmer 说,通过专注于基础设施自动化和自助服务,“如果你愿意,你可以在当天将应用程序投入生产。”
以前,这个过程非常繁琐,以至于小型的 bug 发布都会与功能发布捆绑在一起。借助 Kubernetes 实现的新简化系统,部署次数已从每年约 24 次增加到 2017 年前 10 个月的 500 多次。可用性也得到了改善:以前每周日早上有 6 小时的提交控制窗口,以及其他一般维护期,在此期间可能会发生中断。Pfremmer 指出:“现在没有计划中的中断窗口。”
Northwestern Mutual 构建了名为 Kanali 的 API 管理工具,并于 2017 年夏季将其开源。Greco 说,团队承担这个项目是因为它是他们正在构建的关键能力,而且之前的解决方案以一种“反云原生方式工作,与我们所做的其他一切都不同”。现在,API 管理只是部署到 Kubernetes 的另一个容器,以及一个单独的 Jaeger 部署。
现在,使用 Kubernetes 部署平台的工程师拥有生产环境中的可见性和自主权。以前,集中式团队必须运行跟踪。Greco 说:“现在,开发人员拥有自主权,他们可以随时随地使用它。随着我们在其中成熟,下游的仪表化越多,它的价值就越大。”
但团队并没有就此止步。Greco 说:“在大型企业中,你会有使用 Kubernetes 的人,但你也会有使用 WAS 和 .NET 的人。你可能还没有达到整个堆栈都能实现云原生的地步。如果你能将你的 API 管理工具变为云原生,但仍然代理到传统系统,会怎么样?利用云原生、开源和 Kubernetes 原生的不同组件,你可以做一些非常创新的事情。”
随着团队不断改进其堆栈并分享其 Kubernetes 最佳实践,他们觉得 Northwestern Mutual 作为一家技术优先公司的声誉也在不断发展。Pfremmer 说:“没有人会认为一家拥有 160 多年历史的公司会如此深入地涉足云和基础设施堆栈。”他们希望这意味着他们将能够吸引新人才。“我们正在努力让我们的工作为人所知,这样我们就能找到那些说‘是的,这很有趣。我想来做!’的人。”