公司 AppDirect 地点 加利福尼亚州,旧金山 行业 软件

挑战

AppDirect 为基于云的产品和服务提供端到端的商务平台。软件开发总监 Pierre-Alexandre Lacerte 于 2014 年开始在该公司工作时,公司有一个部署在 “tomcat 基础设施” 上的单体应用,“整个发布过程对于它本应的样子来说太复杂了,” 他说。“其中涉及很多手动步骤,一个工程师构建一个功能,然后另一个团队接手这个变更。因此,将功能交付到生产环境的流程中存在瓶颈。” 与此同时,工程团队正在不断壮大,公司意识到需要一个更好的基础设施来支持这种增长并提高开发速度。

解决方案

“我的想法是:让我们创建一个环境,让团队可以更快地部署他们的服务,他们会说,‘好吧,我不想再在单体应用中构建了。我想构建一个服务,’” Lacerte 说。他们在 2016 年初决定采用 Kubernetes 之前,考虑并原型化了几种不同的技术。Lacerte 的团队还将 Prometheus 监控集成到平台中;下一步是跟踪。如今,AppDirect 在生产中有超过 50 个微服务,并在全球范围内的 AWS 和本地部署了 15 个 Kubernetes 集群。

影响

Kubernetes 平台帮助支持了工程团队在过去几年中 10 倍的增长。再加上他们不断添加新功能的事实,Lacerte 说,“我认为如果我们没有这个新基础设施,我们的开发速度会慢很多。” 迁移到 Kubernetes 和服务意味着部署变得更快,因为减少了对定制的、脆弱的带有 SCP 命令的 shell 脚本的依赖。部署新版本的时间从 4 小时缩短到几分钟。此外,公司投入了大量精力为开发人员实现自助服务。“引入一个新服务不需要 Jira 工单或与三个不同的团队开会,” Lacerte 说。如今,该公司每周部署 1600 次,而之前只有 1-30 次。通过将其市场和计费单体应用从传统的 EC2 主机迁移到 Kubernetes,以及利用自动扩缩容(因为工作时间的流量更高),公司还实现了成本节约。

自 2009 年以来,AppDirect 一直通过其为云产品和服务提供的端到端商务平台,帮助 Comcast 和 GoDaddy 等组织简化数字供应链。

当软件开发总监 Pierre-Alexandre Lacerte 于 2014 年开始在那里工作时,公司有一个部署在 “tomcat 基础设施” 上的单体应用,“整个发布过程对于它本应的样子来说太复杂了,” 他说。“其中涉及很多手动步骤,一个工程师构建一个功能然后创建一个拉取请求,另一个 QA 或工程师验证这个功能。然后它被合并,再由其他人负责部署。因此,我们将功能交付到生产环境的流程中存在瓶颈。”

与此同时,这个由 40 人组成的工程团队正在不断壮大,公司希望为其产品增加越来越多的功能。作为平台团队的一员,Lacerte 开始听到多个团队希望使用不同的框架和语言部署应用程序,从 Node.jsSpring Boot Java。他很快意识到,为了支持增长并提高速度,公司需要一个更好的基础设施,以及一个团队能够自主、自行部署并对其生产服务负责的系统。

Lacerte 从一开始就说:“我的想法是:让我们创建一个环境,让团队可以更快地部署他们的服务,他们会说,‘好吧,我不想再在单体应用中构建了。我想构建一个服务。’” (Lacerte 于 2019 年离开公司。)

通过与运营团队合作,Lacerte 的团队获得了对公司 AWS 基础设施 的更多控制权和访问权限,并开始对几种编排技术进行原型设计。“那时候,Kubernetes 还有点地下,不为人知,” 他说。“但我们看了社区、拉取请求的数量、GitHub 上的开发速度,我们看到它正在获得关注。而且我们发现它比其他技术更容易管理。”

他们使用 ChefTerraform 供应在 Kubernetes 上启动了最初的几个服务,随着更多服务的加入,自动化也随之增加。“我们在世界各地都有集群——在韩国、澳大利亚、德国和美国,” Lacerte 说。“自动化对我们至关重要。” 他们现在主要使用 Kops,并且正在考察几家云提供商的托管 Kubernetes 产品。

如今,虽然单体应用仍然存在,但提交和功能越来越少。所有团队都在新的基础设施上进行部署,服务已成为常态。AppDirect 现在在生产中有超过 50 个微服务,并在全球的 AWS 和本地部署了 15 个 Kubernetes 集群。

Lacerte 的策略最终奏效,因为 Kubernetes 平台对部署时间产生了非常实际的影响。由于减少了对定制的、脆弱的带有 SCP 命令的 shell 脚本的依赖,部署新版本的时间从 4 小时缩短到几分钟。此外,公司投入了大量精力为开发人员实现自助服务。“引入一个新服务不需要 Jira 工单或与三个不同的团队开会,” Lacerte 说。如今,该公司每周部署 1600 次,而之前只有 1-30 次。

此外,Kubernetes 平台帮助支持了工程团队在过去几年中 10 倍的增长。“所有权是 AppDirect 的核心价值观,这体现在我们能够独立于单体代码库发布服务的能力上,” 与 Lacerte 共同推动该计划的资深软件开发人员 Alexandre Gervais 说。“现在,小团队拥有我们业务领域模型的关键部分,他们在自己解耦的专业领域内运作,对整个代码库的了解有限。这减少并隔离了部分复杂性。” 再加上他们不断添加新功能的事实,Lacerte 说,“我认为如果我们没有这个新基础设施,我们的开发速度会慢很多。”

通过将其市场和计费单体应用从传统的 EC2 主机迁移到 Kubernetes,以及利用自动扩缩容(因为工作时间的流量更高),公司还实现了成本节约。

AppDirect 的云原生技术栈还包括 gRPCFluentd,团队目前正在设置 OpenCensus。平台已经集成了 Prometheus,所以“当团队部署他们的服务时,他们就有通知、警报和配置,” Lacerte 说。“例如,在测试环境中,我希望在 Slack 上收到消息,而在生产环境中,我希望收到 Slack 消息,并且还希望收到呼叫。我们与 PagerDuty 进行了集成。团队对他们的服务拥有更多的所有权。”

当然,这也意味着更多的责任。“我们要求工程师们拓宽视野,” Gervais 说。“我们从一种仅限于‘将代码推送到分支’的文化,转变为代码库之外令人兴奋的新职责:功能和配置的部署;应用程序和业务指标的监控;以及在发生故障时的待命支持。这是一次巨大的工程文化转变,但在规模和速度方面的好处是不可否认的。”

随着工程队伍的不断壮大,平台团队面临着新的挑战,即确保 Kubernetes 平台对每个人都易于访问和使用。“我们如何确保当我们团队增加更多人时,他们是高效、富有成效的,并且知道如何快速上手这个平台?” Lacerte 说。“所以我们有布道者、文档、一些项目示例。我们做演示,我们有 AMA(Ask Me Anything)会议。我们正在尝试不同的策略来吸引大家的注意力。”

在他们 Kubernetes 之旅的三年半后,Gervais 觉得 AppDirect “在正确的时间做出了正确的决定,” 他说。“Kubernetes 和云原生技术现在被视为事实上的生态系统。我们知道应该将精力集中在哪里,以应对我们在扩展过程中面临的新一轮挑战。社区非常活跃和充满活力,这与我们出色的内部团队形成了很好的互补。展望未来,我们的重点将真正转向从生态系统中获益,通过在我们的日常运营中提供附加的业务价值。”