性能提升👆,复杂度降低👇:Shopify 工程部的重大革新 [译]
在 Shopify,追求技术卓越是我们的宗旨。我们始终致力于基础设施的完善,即便这些努力的成果不总是一目了然。
我们经常通过简化系统来改进基础设施。这种持续的简化是创新的基础。为什么这么说呢?因为虽然并非所有快速软件都卓越,但所有卓越的软件一定是高效快速的。对我们的商户而言,每一毫秒都极为宝贵。这就意味着我们的系统不仅要易于扩展,还要避免复杂繁琐的架构。
正如我们的 CEO 兼创始人 Tobi Lütke 所指出的,软件简化往往能带来最长远的投资回报。以下是我们在 2023 年推出的一些重大更新,旨在减少复杂性,提高系统性能。
性能的突破
在电子商务领域,性能是核心。出色的性能能带来愉悦且流畅的用户体验,能促进转化,为我们的商户创造更多收益。因此,2023 年(以及未来每一年),提升性能是我们的重点。具体来说,我们做了以下改进:
- 为特定商户优化了 Shopify 管理界面客户和订单页面的加载速度——一个包含 80,000 条记录的列表的加载时间从大约 20 秒缩短到只需大约 400 毫秒。
- 大幅提升了跨境订单关税计算的速度。现在,99% 的请求处理时间从大约 550 毫秒减少到约 80 毫秒。简而言之:结账环节至关重要,电商是全球化的,我们注重每一个细节。
- Shopify 管理界面的搜索结果现在的显示速度提升了 7 倍以上。这只是我们众多提升效率、节省商户时间措施中的一例。
- 对于有多种变体的产品,现在的序列化(即为每种变体分配一个唯一标识)速度提高了 200 倍。一个包含 2,000 种变体的产品现在只需一秒钟即可完成序列化。这一突破是在我们意识到一个缓存问题后实现的。
- GraphQL Storefront API 的查询响应速度现在是以前的 3 倍。我们将这些查询从 Shopify 的核心系统中分离出来,放到了我们的 Storefront 渲染器中。这一改进尤为重要,因为过去一年中 Storefront API 的流量大幅增长。这只是我们在 2023 年做出的众多 GraphQL 改进中的一个。
- 我们将 Observe 查询系统的性能提升了 5 倍。Observe 是我们用来追踪 Shopify 性能的仪表盘系统。我们开发了一个新的查询引擎,能够跨多个地点分布处理请求,从而使查询性能提高了 80%。如今,加载仪表盘变得更加流畅快捷。🫰
清理与简化
我们认为,简化就是进步。
复杂和杂乱会减慢速度,给我们的商户带来不必要的麻烦。因此,我们大刀阔斧地进行了清理。
以下是我们在 2023 年取得的一些显著成果:
- 清除了将近 300 万行代码。实际数字可能更多,这只是我们内部交流中的粗略估计。我敢肯定实际数字更加惊人。
- Shopify 管理平台的开发反馈周期提速了 20 倍,包括使用 35% 更少的计算资源将持续集成 (Continuous Integration, CI) 速度提升了 50%。
- 清理了约 6,800 个不再使用且多余的 GitHub 仓库,数量远超往年。
- 合并了 702 个自动生成的代码合并请求,以移除无用代码。
- 在我们的在线商店网站中,一个后台进程的内存使用量从大约 3 GB 减少到 400 MB,这大幅优化了我们的开发体验。我们致力于打造最佳的开发环境,这一点对我们至关重要。
- 我们还在 Storefront Renderer 中优化了 Ruby 的垃圾回收机制 (Garbage Collector, GC),这是一种内存管理技术。通过这些调整,我们平均的垃圾回收时间减少了 56%,而在极端情况下 (P99) 的垃圾回收时间减少了 80%。这充分展示了我们如何全面优化技术栈,以更好地服务于电商行业。
工程中融入 AI
利用 AI 可以帮助我们更快地为商户提供更多服务。因此,我们一直在探索如何将 AI 整合进我们的工作流程。我们的工程团队与 AI 紧密协作,提高工作效率。
我们使用的一个重要工具是 GitHub Copilot——早在 2022 年 1 月,我们就成为了他们的首批客户。以下是 Copilot 对我们工作的一些影响:
- 大约 70% 的 Shopify 工程师团队经常使用 Copilot
- 根据不同编程语言,我们接受建议的比例大约在 21% 到 34% 之间
- 我们估计每个工作日接受超过 20,000 行代码
- 总共接受了约 675,000 条建议
- 总共接受了约 975,000 行代码
这样的性能提升使 Shopify 每周能提交超过 25,000 次代码,每天处理大约 1,300 到 1,400 个代码合并请求。
我们还依赖于一个内部开发的工具——VaultBot。它是一个 AI 驱动的聊天机器人,Shopify 员工可以向它咨询有关 Shopify 的问题。目前,VaultBot 回答了大约 32% 的工程相关问题。
BFCM 表现
对于我们众多商户来说,黑色星期五至网络星期一的购物周末是一年中最重要的盛事。它所带来的巨大流量,也是对我们平台的极致考验。我们整年都在为应对 BFCM 期间的流量高峰做准备 — 接着,这种流量水平在次年往往会成为我们的新常态。
我们为今年 BFCM 期间的表现感到非常骄傲,因为它让我们的每一位数百万商户都能为其客户提供一种快速且流畅的购物体验,从而在他们的 Shopify 应用中频频收获订单。
以下是一些反映 Shopify 在 2023 年 BFCM 期间表现的惊人数据,首先是我们 CEO Tobi Lütke 特别喜爱的数据:
- 我们实现了 99.999+% 的在线率,处理了来自我们整个基础设施的 29.7 PB(千亿字节)数据 — 平均每分钟超过 5 TB(万亿字节)。
- 高峰期间,我们的核心应用服务器每秒处理了 967K(96.7 万)次请求,相当于每分钟 5800 万次请求。
- 在 BFCM 高峰期,我们的 MySQL 群组(包括 MySQL 5.7 和 MySQL 8 版本)处理了超过每秒 1900 万次查询(QPS)。
- 高峰期我们每秒索引了 22 GB(千兆字节)的日志和 51.4 GB 的指标数据!此外,我们还每秒处理了 900 万个追踪数据的跨度。我们实时监控生产系统的秒级表现数据。
- 我们的 Apache Kafka 流媒体基础设施在高峰时每秒处理了 2900 万条信息。与 2022 年相比增长了 45%,而且今年我们使用了比去年少 14% 的代理服务器。
所有这些出色的性能使我们的商户在 BFCM 期间实现了全球销售额达 93 亿美元,其中 黑色星期五 高峰期的销售额每分钟达到了 420 万美元。
“快速的软件不仅是技术成就,更是一种文化现象,它源自好奇心而非自我。” - Ian Ker-Seymer(Shopify 的生产工程师)
为了继续培育这种文化,我们将持续庆祝并分享这些成就。我们的实力源于我们的基础,而我们的文化则确保这一基础坚固、灵活且让人愉悦。
这一切为何如此重要?因为这使我们能够以最佳方式支持我们的商户,满足他们的需求,帮助他们不断发展业务。这样,他们就可以向世界展示创业的真正力量 —— 有着高性能支持的电子商务平台为他们的背后强力撑腰。