本文脱胎于 Obeservability Talk,完整内容请查看:
https://www.youtube.com/watch?v=6ShtsTTUizI
平台工程是近年来的热门话题。我们已经在 2023 年看到了开发人员们对它的追捧,预计在 2024 年后,我们也许会看到平台工程被广泛应用于企业生产。针对这一话题,我将向已经大规模实施该技术的公司学习——全球知名电商平台 Shopify。
在最新一期的 OpenObservability Talks 中,我们有幸邀请到 Shopify 的生产工程总监 Aparna Subramanian。在此之前,她曾担任 VMware 的工程总监,是混合云 Kubernetes 平台 Tanzu on vSphere 的创始成员之一。
一开始,我们探讨了 Shopify 的庞大业务运营规模,Aparna 详细介绍了 Shopify 当前巨大的业务量,尤其是在“黑色星期五”和“剁手星期一”等重要电商营销节点。
她分享到,在这种高峰段期间,Shopify 的应用服务器每分钟要处理 5800 万次请求,数据库每秒要处理 1900 万次查询。如果查看一下他们的流基础设施,每秒大约也要处理 2900 万条信息流。这意味着 Shopify 平台工程团队需要管理规模庞大的基础设施。
接着,我们开始讨论 Shopify 最初是如何采用平台工程的。Aparna 带我们回到 2016 年,当时 Shopify 面临着多个团队以不同方式部署生产的挑战。也就是这时,Shopify 突然意识到,采用 DevOps 将运维所有权转移给了开发人员,却没有真正给予他们合适的工具和时间来解决这些问题。从而他们开始在团队内部对此进行改进,最终平台工程在 Shopify 诞生。
“Shopify 决定采用平台工程的方法。在这个平台上,所有这些工具都是为我们的业务定制的,为我们的开发人员定制的,并且有一种统一的方式将东西部署到生产中”,Aparna 解释道,并强调了统一高效部署策略的必要性。
目前,Shopify 的平台工程采用分层模式。内部设置了一个基础架构小组,在该小组内有数据平台、可观测平台、有状态系统和流平台。还有生产平台,它是支持所有这些平台的底层,而这些平台则为应用开发人员提供支持。这样,Shopify 就能快速扩大规模。Aparna 介绍称,他们每天发布大约 1,000 个 PR,而应用程序本身每天要部署到生产中 107 次。
随着 Kubernetes 的采用,Shopify 的云原生之路发生了关键性的转变,Aparna 解释了 Kubernetes 如何成为其运维的支柱,在整个团队中运行着约 400 个 Kubernetes 集群。她表明,在 Shopify 的一切都运行在 Kubernetes 上,包括他们的无状态工作负载、应用程序和有状态工作负载,即所有的数据库。
最突出的是“平台的平台(platform of platforms)”这一概念。尽管一切都统一在 Kubernetes 下,但 Shopify 的基础架构是分层的,由专门的平台团队负责和管理不同的层级,如数据库平台、流平台和可观测性平台。
Aparna 强调的成功关键因素之一是应用开发人员和平台工程师之间的明确责任分工。在 Shopify,每个人都负责监控,并随时待命,但应用程序开发人员负责应用程序部分,平台工程师负责平台和基础设施。
Aparna 表明,当出现问题时,他们会一起排除故障,找出应用程序的问题所在。值得强调的是,在出现故障时合理安排不同角色的分工可以以更为简洁的方式解决问题。
在 Shopify,正如在其他许多企业内部看到的那样,通过产品的方法来实现平台工程。平台工程团队为公司内部的开发者社区开发产品,让应用程序开发者可以通过自服务完成一切。
在可观测性方面,Aparna 分享道,平台工程提供了监控生产的所有工具。例如告警、可观测性、仪表盘、它们均可弹性伸缩,同时还有随叫随到的事件管理团队。
平台团队拥有并管理各自的平台,而应用程序开发人员则需关注自己的应用程序代码,并负责将其根据发布周期部署到生产中。
然而,在平台工程团队中不断遇到的一个核心挑战是如何平衡灵活性和抽象性。而对于 Shopify 是如何解决这个问题的,Aparna 表示这是一项 Shopify 正在进行中的工作。其实他们一开始在 Kubernetes 的基础上建立了一个抽象层,但实际的效果并不好。
有了这些经验,他们认识到把 Kubernetes 隐藏抽象起来并不是一个最佳方式。目前的平衡点是为大多数开发人员提供有意义的默认设置,以及让高级用户可以操作的清单。
Aparna 认为,平台团队专注于提供一条 “黄金路径(Golden Path)”,同时鼓励开发人员对不断演进的平台提出改进建议并做出贡献。只有拥抱变化,才能期待开发团队能够真正突破界限。
最后,针对 Shopify 如何为流量高峰期做好准备,Aparna 深入介绍了从容量估算到弹性测试的缜密规划。她分享了 Shopify 如何在这些情况下禁用默认的自动扩展,转而依靠超额配置来满足像“黑色星期五”和“剁手星期一”期间的极端流量。
除了这些重大事件外,某些商家还可能推出闪购活动,从而产生流量高峰。让企业商家提前向 Shopify 预告,有助于为这一高峰期做好准备。但是,正如 Aparna 所说,“作为一个支持数百万商家的平台,我们没有办法让每个人都提前告诉我们”。因此,在大多数情况下,这些高峰期的处理都是完全自动化的。