公司 蒙特利尔市 地点 加拿大魁北克省蒙特利尔 行业 政府

挑战

与许多政府机构一样,蒙特利尔市拥有众多遗留系统,该市的首席技术官 Jean-Martin Thibault 表示:“我们的一些系统比在这里工作的一些开发人员年龄还大。” “我们有大型机,各种版本的 Windows、各种版本的 Linux、新旧 Oracle 系统、Sun 服务器以及各种数据库。与所有大型企业一样,一些最重要的系统,如预算和人力资源,在过去 30 年里都是在内部大型机上开发的。”总共有 1,000 多个应用程序,其中大部分运行在不同的生态系统上。2015 年,新的管理团队决定打破这些竖井,投资 IT 以转向更集成的城市治理模式。他们需要弄清楚如何实现架构现代化。

解决方案

第一步是容器化。该团队从一个由四五个服务器组成的小型 Docker 集群开始,使用 Rancher 提供对 Docker 容器及其日志的访问,并使用 Jenkins 进行部署。解决方案架构师 Marc Khouzam 表示:“我们的努力基于新的趋势;我们了解了不可变性、不停机部署等的好处。”他们很快意识到还需要编排,并选择了 Kubernetes。企业架构师 Morgan Martinet 说:“Kubernetes 提供了如何描述任何类型应用程序架构的概念,并基于这些概念部署运行基础设施所需的一切。它正在成为事实上的标准。”

影响

产品上市时间大大缩短,从数月缩短到几周。部署时间从数月缩短到几小时。Thibault 表示:“过去,你必须申请虚拟机,仅此一项就可能轻易耗时数周。现在你甚至无需申请任何东西。只需创建项目即可部署。”Kubernetes 还提高了该市计算资源的利用效率:Martinet 说:“以前,我们目前在 Kubernetes 上运行的 200 个应用组件需要数百台虚拟机,而现在,如果只谈论一个生产环境,我们能够将它们运行在包括 Kubernetes Master 在内的 8 台机器上。”这一切都由一个仅有 5 人组成的小团队来运营 Kubernetes 集群完成。

作为加拿大第二大城市,蒙特利尔市拥有大量支撑政府运转的遗留系统。该市的首席技术官 Jean-Martin Thibault 开玩笑说,虽然这些系统并非追溯到该市 1642 年建市之初,但“我们的一些系统比在这里工作的一些开发人员年龄还大”。

"我们有大型机,各种版本的 Windows、各种版本的 Linux、新旧 Oracle 系统、Sun 服务器以及各种数据库。一些最重要的系统,如预算和人力资源,在过去 30 年里都是在内部大型机上开发的。”

近年来,这一事实成为一个主要的痛点。总共有 1,000 多个应用程序,运行在几乎同样多的不同生态系统上。2015 年,新的市政府管理团队决定打破这些竖井,投资 IT 以转向更集成的治理模式。Thibault 表示:“组织是竖井式的,所以架构也随之竖井化。一旦我们整合到一个 IT 团队中,我们就决定重塑整体企业架构。”

实现架构现代化的第一步是容器化。解决方案架构师 Marc Khouzam 表示:“我们的努力基于新的趋势;我们了解了不可变性、不停机部署等的好处。”该团队从一个由四五个服务器组成的小型 Docker 集群开始,使用 Rancher 提供对 Docker 容器及其日志的访问,并使用 Jenkins 进行部署。

但这种 Docker 集群设置存在一些局限性,包括缺乏自愈能力和基于流量的动态扩缩容,以及优化服务器资源并将同一容器扩缩容到多个实例所需的工作量。团队很快意识到还需要编排。Thibault 表示,“Kubernetes 应运而生”,带来了所有这些特性,使得管理变得更加容易,并为用户带来了更多好处。

团队评估了几种编排解决方案,但 Kubernetes 脱颖而出,因为它解决了所有痛点。(他们还受到 Yahoo! Japan 案例的启发,团队成员觉得该案例接近他们的设想。)企业架构师 Morgan Martinet 表示:“Kubernetes 提供了如何描述任何类型应用程序架构的概念,并基于这些概念部署运行基础设施所需的一切。它正在成为事实上的标准。它还承诺跨云提供商的可移植性。选择 Kubernetes 现在为我们提供了许多选项,例如在内部或任何 IaaS 提供商中运行集群,甚至在任何主要的云提供商中使用 Kubernetes 即服务。”

另一个重要的决定因素是供应商中立性。Thibault 表示:“作为一个政府实体,我们在选择产品和提供商时保持中立至关重要。Cloud Native Computing Foundation 不隶属于任何公司的独立性提供了这一点。”

Kubernetes 的实施始于使用内部 Ansible playbook 部署一个小型集群,该集群很快被 Kismatic 发行版取代。考虑到他们看到运营 Kubernetes 平台的复杂性,他们决定为开发团队提供基于 Helm 的自动化 CI/CD 解决方案。Khouzam 表示:“Kubernetes 上的集成 CI/CD 解决方案标准化了各个开发团队设计和部署其解决方案的方式,同时允许他们保持独立性。”

在重新架构过程中,团队还添加了用于监控和告警的 Prometheus、用于日志记录的 Fluentd 以及用于可视化的 Grafana。Martinet 表示:“我们对部署情况有了更高的可见性。” Khouzam 补充道:“最大的好处是我们可以跟踪任何东西,即使是不在 Kubernetes 集群中运行的东西。这是我们统一监控工作的方式。”

总的来说,云原生解决方案对交付速度和管理开销都产生了积极影响。通过标准化、代码生成、自动部署到 Kubernetes 以及通过 Prometheus 实现标准化监控,产品上市时间大大缩短,从数月缩短到几周。部署时间从数月乃至数周的规划缩短到几小时。Thibault 表示:“过去,你必须申请虚拟机,仅此一项就需要数周才能妥善配置。此外,对于专用系统,通常需要请专家根据他们的经验进行安装,这可能需要数周甚至数月的时间。”

Khouzam 表示,现在“我们几乎可以在没有任何人帮助的情况下部署任何已经 Docker 化的应用程序。让项目在 Kubernetes 中运行完全取决于你编写实际软件需要多长时间。它不再依赖于部署。部署速度快到可以忽略不计。”

Kubernetes 还提高了该市计算资源的利用效率:Martinet 说:“以前,我们目前在 Kubernetes 上运行的 200 个应用组件需要数百台虚拟机,而现在,如果只谈论一个生产环境,我们能够将它们运行在包括 Kubernetes Master 在内的 8 台机器上。”这一切都由一个仅有五人组成的小团队来运营 Kubernetes 集群完成。Martinet 补充道:“无论衡量什么,这都是一个巨大的进步。”

因此,团队未来的战略是尽可能地以 Kubernetes 为目标也就不足为奇了。Thibault 表示:“如果有什么东西不能在 Kubernetes 内部运行,我们就会等着它。”这意味着他们还没有将该市的任何 Windows 系统迁移到 Kubernetes 上,尽管这是他们想做的事情。Martinet 表示:“只要可能,我们就会与市场合作,向我们的供应商施压,要求他们支持 Kubernetes,因为它是一种更容易管理的解决方案。”

Thibault 预计在不久的将来,该市 60% 的工作负载将在 Kubernetes 平台上运行——基本上是他们能让其在那里运行的任何和所有用例。他说:“这比我们过去做事的方式效率高得多。没有回头路可走了。”