挑战
AppDirect 为基于云的产品和服务提供端到端的商业平台。 软件开发总监 Pierre-Alexandre Lacerte 在 2014 年开始在那里工作时,公司有一个部署在 “tomcat 基础设施上的单体应用程序,并且整个发布过程对于它应该有的样子来说是复杂的”,他说,“涉及到很多手动步骤,一个工程师构建一个功能,然后另一个团队接手变更。因此,在将功能交付到生产环境的管道中存在瓶颈。”与此同时,工程团队不断壮大,公司意识到需要更好的基础设施来支持增长并提高速度。
解决方案
Lacerte 说:“我的想法是:让我们创建一个环境,让团队可以更快地部署他们的服务,他们会说,‘好吧,我不想再在单体中构建了。我想构建一个服务。’” 在决定在 2016 年初采用 Kubernetes 之前,他们考虑并原型化了几种不同的技术。Lacerte 的团队还将 Prometheus 监控集成到平台中;接下来是跟踪。如今,AppDirect 在全球的 AWS 和本地部署了 50 多个生产中的微服务和 15 个 Kubernetes 集群。
影响
Kubernetes 平台帮助支持了工程团队在过去几年中 10 倍的增长。再加上他们不断添加新功能,Lacerte 说,“我认为如果我们没有这个新的基础设施,我们的速度会大大降低。”迁移到 Kubernetes 和服务意味着部署变得更快,因为对使用 SCP 命令的定制的、脆弱的 shell 脚本的依赖减少了。部署新版本的时间已从 4 小时缩短到几分钟。此外,公司投入了大量精力来使开发人员能够自助服务。Lacerte 说:“入职新服务不需要 Jira 工单或与三个不同的团队会面。”如今,该公司每周的部署量为 1600 次,而之前为 1-30 次。该公司还通过将市场和计费单体从旧版 EC2 主机迁移到 Kubernetes 以及利用自动扩展,在业务时间流量较高的情况下实现了成本节约。
软件开发总监 Pierre-Alexandre Lacerte 在 2014 年开始在那里工作时,公司有一个部署在 “tomcat 基础设施上的单体应用程序,并且整个发布过程对于它应该有的样子来说是复杂的”,他说,“涉及到很多手动步骤,一个工程师构建一个功能,然后创建一个拉取请求,然后 QA 或另一个工程师验证该功能。然后它被合并,其他人将负责部署。因此,我们在将功能交付到生产环境的管道中存在瓶颈。”
与此同时,拥有 40 名成员的工程团队不断壮大,公司希望在其产品中添加越来越多的功能。作为平台团队的一员,Lacerte 开始听到多个团队希望使用不同的框架和语言部署应用程序,从 Node.js 到 Spring Boot Java。他很快意识到,为了支持增长并提高速度,公司需要更好的基础设施,以及一个团队可以自主、可以自行部署并对生产环境中的服务负责的系统。
Lacerte 说,从一开始,“我的想法是:让我们创建一个环境,让团队可以更快地部署他们的服务,他们会说,‘好吧,我不想再在单体中构建了。我想构建一个服务。’” (Lacerte 于 2019 年离开了公司。)
Lacerte 的小组与运营团队合作,获得了对其公司 AWS 基础设施的更多控制和访问权限,并开始原型化几种编排技术。他说:“当时,Kubernetes 有点不为人知。”“但我们查看了社区、拉取请求的数量、GitHub 上的速度,我们看到它正在获得关注。我们发现它比其他技术更容易管理。”
他们使用 Chef 和 Terraform 配置在 Kubernetes 上启动了前几个服务,随着添加了更多服务,自动化也增加了。“我们在世界各地都有集群——在韩国、澳大利亚、德国和美国,”Lacerte 说,“自动化对我们至关重要。” 他们现在主要使用 Kops,并且正在考虑来自几家云供应商的托管 Kubernetes 产品。
如今,尽管单体仍然存在,但提交和功能越来越少。所有团队都在新的基础设施上进行部署,服务是常态。AppDirect 现在在全球的 AWS 和本地部署了 50 多个生产中的微服务和 15 个 Kubernetes 集群。
Lacerte 的策略最终奏效,因为 Kubernetes 平台对部署时间产生了非常真实的影响。由于减少了对使用 SCP 命令的定制的、脆弱的 shell 脚本的依赖,部署新版本的时间已从 4 小时缩短到几分钟。此外,公司投入了大量精力来使开发人员能够自助服务。Lacerte 说:“入职新服务不需要 Jira 工单或与三个不同的团队会面。”如今,该公司每周的部署量为 1600 次,而之前为 1-30 次。
此外,Kubernetes 平台还帮助支持了工程团队在过去几年中 10 倍的增长。“所有权是 AppDirect 的核心价值,反映在我们独立于单体代码库交付服务的能力中,”与 Lacerte 合作开展该计划的员工软件开发人员 Alexandre Gervais 说。“小型团队现在拥有我们业务领域模型的关键部分,他们在自己独立的专业领域中运营,对整个代码库的了解有限。这减少并隔离了一些复杂性。”再加上他们不断添加新功能,Lacerte 说,“我认为如果我们没有这个新的基础设施,我们的速度会大大降低。”
该公司还通过将市场和计费单体从旧版 EC2 主机迁移到 Kubernetes 以及利用自动扩展,在业务时间流量较高的情况下实现了成本节约。
AppDirect 的云原生堆栈还包括 gRPC 和 Fluentd,该团队目前正在设置 OpenCensus。该平台已经集成了 Prometheus,因此“当团队部署他们的服务时,他们会收到通知、警报和配置,”Lacerte 说,“例如,在测试环境中,我想在 Slack 上收到消息,在生产环境中,我想收到 Slack 消息,我还想收到分页。我们与页面值班系统集成。团队对他们的服务有更多的所有权。”
当然,这也意味着更多的责任。“我们要求工程师拓展他们的视野,”Gervais 说,“我们从一种仅限于‘在分支中推送代码’的文化转变为代码库之外令人兴奋的新责任:功能和配置的部署;应用程序和业务指标的监控;以及在发生中断时的随叫随到的支持。这是一个巨大的工程文化转变,但就规模和速度而言,好处是不可否认的。”
随着工程人员的不断壮大,平台团队面临着新的挑战,即确保每个人都可以访问并轻松使用 Kubernetes 平台。“我们如何确保当我们在团队中添加更多人员时,他们能够高效、富有成效,并且知道如何启动该平台?” Lacerte 说,“所以我们有传播者、文档、一些项目示例。我们做演示,我们有 AMA 会议。我们正在尝试不同的策略来引起每个人的注意。”
Gervais 表示,在 Kubernetes 之旅的三年半里,AppDirect 认为他们“在正确的时间做出了正确的决定”。他说:“Kubernetes 和云原生技术现在被视为事实上的生态系统。我们知道应该把精力放在哪里,以便应对我们在扩展过程中面临的新一轮挑战。社区非常活跃且充满活力,这对我们优秀的内部团队来说是一个很好的补充。展望未来,我们的重点将真正放在从生态系统中受益,在我们的日常运营中提供更高的商业价值。”