对话Shopify:平台工程如何帮助其自动化应对流量高峰

news/2024/7/24 12:17:52 标签: 平台工程, 团队开发, shopify, IDP

本文脱胎于 Obeservability Talk,完整内容请查看:

https://www.youtube.com/watch?v=6ShtsTTUizI

平台工程是近年来的热门话题。我们已经在 2023 年看到了开发人员们对它的追捧,预计在 2024 年后,我们也许会看到平台工程被广泛应用于企业生产。针对这一话题,我将向已经大规模实施该技术的公司学习——全球知名电商平台 Shopify。

在最新一期的 OpenObservability Talks 中,我们有幸邀请到 Shopify 的生产工程总监 Aparna Subramanian。在此之前,她曾担任 VMware 的工程总监,是混合云 Kubernetes 平台 Tanzu on vSphere 的创始成员之一。

01 Shopify 的业务规模

一开始,我们探讨了 Shopify 的庞大业务运营规模,Aparna 详细介绍了 Shopify 当前巨大的业务量,尤其是在“黑色星期五”和“剁手星期一”等重要电商营销节点。

她分享到,在这种高峰段期间,Shopify 的应用服务器每分钟要处理 5800 万次请求,数据库每秒要处理 1900 万次查询。如果查看一下他们的流基础设施,每秒大约也要处理 2900 万条信息流。这意味着 Shopify 平台工程团队需要管理规模庞大的基础设施

02 Shopify 平台工程的演进

接着,我们开始讨论 Shopify 最初是如何采用平台工程的。Aparna 带我们回到 2016 年,当时 Shopify 面临着多个团队以不同方式部署生产的挑战。也就是这时,Shopify 突然意识到,采用 DevOps 将运维所有权转移给了开发人员,却没有真正给予他们合适的工具和时间来解决这些问题。从而他们开始在团队内部对此进行改进,最终平台工程在 Shopify 诞生。

“Shopify 决定采用平台工程的方法。在这个平台上,所有这些工具都是为我们的业务定制的,为我们的开发人员定制的,并且有一种统一的方式将东西部署到生产中”,Aparna 解释道,并强调了统一高效部署策略的必要性

目前,Shopify 的平台工程采用分层模式。内部设置了一个基础架构小组,在该小组内有数据平台、可观测平台、有状态系统和流平台。还有生产平台,它是支持所有这些平台的底层,而这些平台则为应用开发人员提供支持。这样,Shopify 就能快速扩大规模。Aparna 介绍称,他们每天发布大约 1,000 个 PR,而应用程序本身每天要部署到生产中 107 次。

03 Kubernetes:Shopify 平台的支柱

随着 Kubernetes 的采用,Shopify 的云原生之路发生了关键性的转变,Aparna 解释了 Kubernetes 如何成为其运维的支柱,在整个团队中运行着约 400 个 Kubernetes 集群。她表明,在 Shopify 的一切都运行在 Kubernetes 上,包括他们的无状态工作负载、应用程序和有状态工作负载,即所有的数据库。

最突出的是“平台的平台(platform of platforms)”这一概念。尽管一切都统一在 Kubernetes 下,但 Shopify 的基础架构是分层的,由专门的平台团队负责和管理不同的层级,如数据库平台、流平台和可观测性平台。

04 平台和应用程序共享可观测性

Aparna 强调的成功关键因素之一是应用开发人员和平台工程师之间的明确责任分工。在 Shopify,每个人都负责监控,并随时待命,但应用程序开发人员负责应用程序部分,平台工程师负责平台和基础设施。

Aparna 表明,当出现问题时,他们会一起排除故障,找出应用程序的问题所在。值得强调的是,在出现故障时合理安排不同角色的分工可以以更为简洁的方式解决问题。

05 Shopify 内部开发者平台

在 Shopify,正如在其他许多企业内部看到的那样,通过产品的方法来实现平台工程平台工程团队为公司内部的开发者社区开发产品,让应用程序开发者可以通过自服务完成一切

在可观测性方面,Aparna 分享道,平台工程提供了监控生产的所有工具。例如告警、可观测性、仪表盘、它们均可弹性伸缩,同时还有随叫随到的事件管理团队。

平台团队拥有并管理各自的平台,而应用程序开发人员则需关注自己的应用程序代码,并负责将其根据发布周期部署到生产中。

06 平衡平台的灵活性和抽象性

然而,在平台工程团队中不断遇到的一个核心挑战是如何平衡灵活性和抽象性。而对于 Shopify 是如何解决这个问题的,Aparna 表示这是一项 Shopify 正在进行中的工作。其实他们一开始在 Kubernetes 的基础上建立了一个抽象层,但实际的效果并不好。

有了这些经验,他们认识到把 Kubernetes 隐藏抽象起来并不是一个最佳方式。目前的平衡点是为大多数开发人员提供有意义的默认设置,以及让高级用户可以操作的清单

Aparna 认为,平台团队专注于提供一条 “黄金路径(Golden Path)”,同时鼓励开发人员对不断演进的平台提出改进建议并做出贡献。只有拥抱变化,才能期待开发团队能够真正突破界限。

07 处理流量高峰期的技巧

最后,针对 Shopify 如何为流量高峰期做好准备,Aparna 深入介绍了从容量估算到弹性测试的缜密规划。她分享了 Shopify 如何在这些情况下禁用默认的自动扩展,转而依靠超额配置来满足像“黑色星期五”和“剁手星期一”期间的极端流量

除了这些重大事件外,某些商家还可能推出闪购活动,从而产生流量高峰。让企业商家提前向 Shopify 预告,有助于为这一高峰期做好准备。但是,正如 Aparna 所说,“作为一个支持数百万商家的平台,我们没有办法让每个人都提前告诉我们”。因此,在大多数情况下,这些高峰期的处理都是完全自动化的。


http://www.niftyadmin.cn/n/5424266.html

相关文章

命名空间多线程计时(C++基础)

命名空间 不要在头文件内使用using namespace,一定要确保实在一个足够小的作用域下使用,在哪个范围内,比如函数、if语句等,但一定不要在头文件中使用!!! 上述示例中,会调用orange中…

开源模型应用落地-安全合规篇(二)

一、前言 在前面的“业务优化篇系列文章”的学习中,我们学会了如何使用线程池、Redis和向量数据库等工具。现在,我们要加快学习的速度。一方面,我们会继续改进AI服务的性能瓶颈,另一方面,我们还要学习如何进行合规操作。 接下来,我们将学习如何使用腾讯云的内容安全审核来…

PHP立体安全攻击向量:保护应用程序的关键挑战

PHP立体安全攻击向量:保护应用程序的关键挑战 PHP作为一种广泛使用的服务器端脚本语言,拥有庞大的用户群体和丰富的生态系统。然而,随着互联网的发展,网络安全问题也变得愈发严重。本文将深入探讨PHP的立体安全攻击向量&#xff0…

社交创新的先锋:探秘Facebook背后的故事与智慧

起源与初创阶段 Facebook的故事始于2004年,由马克扎克伯格(Mark Zuckerberg)、埃迪华索伦(Eduardo Saverin)、安德鲁麦克卡拉姆(Andrew McCollum)、克里斯休斯(Chris Hughes&#x…

搜索与图论——DFS

深度优先搜索(DFS) 深搜的过程:从根进入,向下走,走到底,向上走,即绕树兜圈,最后从根退出 深搜的实现:深搜是通过系统栈实现的,因为栈满足先进后出的性质&am…

Flink K8S Operator 离线安装

一 推送镜像 docker pull quay.io/jetstack/cert-manager-cainjector:v1.8.2 docker tag quay.io/jetstack/cert-manager-cainjector:v1.8.2 10.177.85.101:8000/flink/cert-manager-cainjector:v1.8.2 docker push 10.177.85.101:8000/flink/cert-manager-cainjector:v1.8.2d…

【敬伟ps教程】视频动画

文章目录 视频文档视频时间轴帧动画视频文档 工作区需由[基本功能]切换为[动感] 可以看到我们需从时间的维度来编辑动态视觉图像 时间轴:从时间的维度来编辑动态视觉图像 PS提供的时间轴有两种:1、视频时间轴;2、动画时间轴 新建视频文档,点击新建或Ctrl+N,预设选择“胶…

免费AI软件开发工具测评:iFlyCode VS CodeFlying

前言 Hello,各位看官,今天为大家带来两款人工智能的软件开发工具的测评,他们分别是iFlyCode和CodeFlying,我相信当大家看到这两款产品名字的时候不禁都会有些好奇,两个产品都有Code 和Fly两个元素,那他们之…