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

2024-03-13 07:12

本文主要是介绍对话Shopify:平台工程如何帮助其自动化应对流量高峰,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文脱胎于 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 所说,“作为一个支持数百万商家的平台,我们没有办法让每个人都提前告诉我们”。因此,在大多数情况下,这些高峰期的处理都是完全自动化的。

这篇关于对话Shopify:平台工程如何帮助其自动化应对流量高峰的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/804038

相关文章

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码