大数跨境

性能👆,复杂度👇:Shopify 工程团队的杀手级更新

性能👆,复杂度👇:Shopify 工程团队的杀手级更新 Shopify电商独立站
2024-01-10
2
导读:在 Shopify,我们痴迷于技术卓越。一直以来都是如此。我们在基础设施上投入了大量时间——即使其成果并非立竿见影。

作者:Farhan Thawar,Shopify 副总裁兼工程负责人

在 Shopify,我们痴迷于技术卓越。一直以来都是如此。我们在基础设施上投入了大量时间——即使其成果并非立竿见影。

通常,这些基础设施工作涉及简化我们的系统。持续这样做是创新的必要条件。为什么?并非所有快速的软件都是优秀的,但所有优秀的软件都必须是快速的。每一毫秒对我们商家来说都至关重要。这意味着系统需要易于扩展,且不会被过于复杂的架构所拖累。

正如我们的首席执行官兼创始人 Tobi Lütke 所说,软件投资中一些最好的长期回报就来自这些简化措施。以下是我们在 2023 年推出的一些关键更新,旨在消除复杂性并提升性能。

性能胜利

在商务领域,性能为王。性能带来令人愉悦且无缝的用户体验。性能推动转化率,从而为商家的利润底线增加收入。因此,性能胜利是我们 2023 年(以及每一年)的重点关注领域。我们:

  • 优化了部分商家在 Shopify Admin 客户和订单页面加载时间的尾部延迟——一个拥有 8 万条记录的列表,加载时间从约 20 秒缩短至约 400 毫秒 (ms)。
  • 大幅提升了跨境订单的关税计算速度。我们的 p99* 从约 550 毫秒降至约 80 毫秒。TL;DR(太长不看版):结账环节至关重要,商务是全球性的,而我们注重细节。*这表示 99% 的请求在此时间内完成。
  • Shopify 管理后台的搜索结果现在显示速度快了 7 倍以上。这只是我们提高效率、为商家节省时间的众多方式之一。
  • 对于具有多个变体的产品,序列化它们(即,为每个变体分配唯一 ID)的速度现在快了 200 倍。一个拥有 2,000 个变体的产品现在只需一秒即可完成序列化。当我们发现缓存拖慢了这一过程时,便实现了这一突破。
  • GraphQL Storefront API 查询的渲染速度现在提高了 3 倍。我们将这些查询从 Shopify Core 中提取出来,放入我们的 Storefront Renderer 中。这真是个好举措,因为 Storefront API 流量在过去一年中显著增加。 这是我们在 2023 年进行的许多 GraphQL 改进之一。
  • 我们将 Observe(用于追踪 Shopify 性能仪表板的中心平台)的查询性能提升了 5 倍。我们创建了一个新的查询引擎,可将请求分发到多个位置,从而使查询性能提高了 80%。现在加载仪表板更加流畅、迅速。🫰

清理与精简

我们推崇“以减为增”的理念。

杂乱会拖慢进度,并给商家带来不必要的复杂化。因此,我们清除了大量冗余内容。

以下是 2023 年部分简化工作的亮点:

  • 删除了近 300 万行代码。实际数量可能更多;这是根据我们内部共享“清理成果”的看板进行的粗略统计。我敢打赌,真实数字远不止于此。
  • 将 Shopify Admin 的开发反馈循环速度提升了 20 倍,包括使用 35% 更少的计算资源实现持续集成(CI)速度提升 50%。
  • 归档了约 6,800 个未使用且不必要的 GitHub 仓库,数量远超往年。
  • 合并了 702 个由机器生成的拉取请求(PR),以删除死代码。
  • 将 online-store-web 上某个后台进程的内存使用量从约 3 GB 降低至 400 MB。这对我们的开发者体验是一项重大改进,因为我们致力于让 Shopify 成为最佳的开发平台。
  • 大幅改进了 Storefront Renderer 对 Ruby 垃圾回收器(GC,一种内存管理系统)的使用。我们的优化使平均 GC 时间减少了 56%,P99 GC 时间减少了 80%。这清楚地表明了我们专注于让整个技术栈更好地服务于商业。 整个技术栈 更好地服务于商业。

工程中的 AI

借助 AI,我们能够更快、更多地为商家交付产品,因此我们不断寻找新方法将 AI 融入工作流程。我们的工程团队与 AI 紧密协作,以提高工作效率。

我们使用的工具之一是 GitHub Copilot——我们是其 2022 年 1 月的首批客户。以下是 Copilot 对我们工作的一些影响:

  • Shopify 工程团队中约 70% 的人定期使用 Copilot
  • 建议接受率平均为 21%-34%,具体取决于编程语言
  • 我们估计每个工作日接受的代码行数超过 20,000 行
  • 总计接受约 67.5 万条建议
  • 总计接受约 97.5 万行代码

这类性能提升有助于推动 Shopify 每周产生超过 25,000 次提交,以及每天约 1,300-1,400 个 PR。

我们还依赖内部开发的工具 VaultBot,这是一个由 AI 驱动的聊天机器人,Shopifolk 可以在其中提出与 Shopify 相关的问题。VaultBot 目前回答了约 32% 的工程相关问题。

BFCM 表现

黑色星期五-网络星期一购物周末是我们许多商家一年中最大的活动。由于它产生的巨大流量,这也是对我们平台的终极压力测试。我们全年都在构建以应对 BFCM 期间的流量高峰——而那种级别的流量往往会在次年成为我们的新常态。 

我们对今年的 BFCM 表现感到非常自豪,因为它让数百万商家能够向顾客提供快速、流畅的购物体验,从而在他们的 Shopify 应用中带来了许多“叮当”声(指销售成功提示音)。

以下是反映 Shopify 在 2023 年 BFCM 期间表现的惊人数据,首先从我们的 CEO Tobi Lütke 最喜欢的统计数据开始:

极客版 BFCM 数据:

Shopify 的出口流量在周五处理了 1,450 亿次请求。应用服务器峰值处理能力约为每分钟 6,000 万次请求,增长 38%。总 GMV 为 41 亿美元,比去年增长 22%。

但 Rails 无法扩展,所以我们到底在做什么 🤷‍♂️

— tobi lutke (@tobi) 2023 年 11 月 25 日
  • 我们实现了 99.999%+ 的正常运行时间,处理了从整个基础设施中服务的 29.7 PB 数据——即每分钟超过 5 TB。
  • 在峰值期间,我们的核心应用服务器每秒处理 967K 个请求,相当于每分钟 5800 万个请求。
  • 在 BFCM 高峰期,我们的 MySQL 集群(由 MySQL 5.7 和 MySQL 8 组成)每秒处理超过 1900 万次查询(QPS)。
  • 在峰值期间,我们以每秒 22 GB 的速度索引日志数据,以每秒 51.4 GB 的速度索引指标数据!此外,我们还以每秒 900 万次的速度摄入追踪数据。我们持续监控生产系统性能的秒级数据。
  • 我们的 Apache Kafka 流式基础设施在峰值期间每秒服务 2900 万条消息。这比 2022 年增长了 45%——而且今年我们在减少 14% broker 数量的情况下更高效地完成了这一目标。

所有这些性能使我们的商家能够在 全球销售额达到 93 亿美元 在整个 BFCM 期间,其中黑色星期五的峰值为每分钟 420 万美元 黑色星期五。

________________________________

“快速软件是一种文化现象,由好奇心而非自负驱动。” —— Ian Ker-Seymer(Shopify 的一名生产工程师)

为了继续构建这种文化,我们将继续庆祝并分享这些胜利。我们的实力取决于基础,而我们的文化有助于保持这一基础强大、敏捷且令人愉悦。

为什么这一切如此重要?因为它使我们能够以最佳方式、以商家需要的方式为他们提供支持,从而帮助他们继续开展业务,并向世界展示创业的真实力量——这一切都依托于一个高性能的 AF 商务平台。

【声明】内容源于网络
0
0
Shopify电商独立站
1234
内容 6353
粉丝 0
Shopify电商独立站 1234
总阅读1.7k
粉丝0
内容6.4k