亚马逊AWS官方博客

构建无服务器事件驱动型零售订单管理系统

在过去几年中,电商市场逐年增长明显,消费者趋向转移至线上购买商品,甚至开始盛行线上下单、线下提货的新趋势。美国人口普查局的数据显示,2022 年美国零售电商销售额估算超过 1 万亿美元,同比增长 7.7%。

零售商已在数字商务方面投入大量资金,但仍难以维持非常高的电商流量,尤其是在“黑色星期五”这样的销售高峰期。为迎合消费者行为习惯的不断变化,零售商须将其单体式应用程式迁移至云端,还要充分利用各种云原生技术。

本博文将探讨如何重构或重建零售订单管理系统,使用无服务器服务的异步事件驱动法帮助零售商提高弹性和可扩展性,以及专注创新。

在经历黑色星期五销售活动期间的严重故障后,乐高(LEGO)重构了单体电商平台,随后,在一次具有代表性的销售活动中,乐高的在线交易峰值增长高达 200 倍,用户流量增长高达 9.5 倍,而使用无服务器事件驱动法重构的平台帮助其成功应对流量高峰,同时未发生任何故障

美国的奢侈品零售商尼曼(Neiman Marcus)通过将 Strangler Fig 迁移模式转换为无服务器模式,应用程序启动时间成功缩短 50%,同时提高了开发人员的灵活性,降低了成本。

为什么选择无服务器事件驱动型架构?

Werner Vogels 博士在 2022 年亚马逊云科技 re:Invent 全球大会主题演讲中指出,世界由事件驱动,本质上的异步的。在零售订单管理系统中,消费者于电商网站下订单就是一个事件,消费者几乎能够立即收到订单已接收的通知,同时,订单的其余环节均可通过解耦服务进行异步处理。

例如,支付服务可独立处理付款,并反馈处理结果;库存服务可用于查看产品是否有库存,并通知系统。各类服务通过名为事件代理的中央集线器相互联通,该集线器可接收并传递事件。

既然我们已探讨了事件驱动型架构的意义,那么现在我们来谈一下无服务器。无服务器和事件驱动型架构相辅相成,因构建无服务器服务(如 Amazon Lambda)可触发事件,仅在处理事件时才需付费。

无服务器事件驱动型架构的优势总结如下:

  1. 弹性——松耦合系统的优势在于,当松耦合系统中的一个组件发生故障时,故障会隔离在该组件内,而系统的其他部分并不受影响。例如,运输服务出现故障时,并不会影响结账服务,因此,顾客可继续在线上下订单,而开发人员仅需修复运输服务故障即可。乐高因在一次备受瞩目的销售活动中出现了近 2 个小时的故障,所以才决定在亚马逊云科技平台上使用无服务器构建系统。
  2. 可扩展性——无服务器服务可根据需求自行扩展,无需进行任何额外配置。无服务器可实现系统在需求高峰期时自动扩容,在低峰期时自动缩容,从而节约成本。此外,松耦合服务可彼此独立地扩展。塔可贝尔(Taco Bell)公司通过构建无服务器事件驱动型架构,仅仅 6 个月便为其在线配送系统新增了 4 个配送合作伙伴
  3. 速度和敏捷性——无服务器应用程序易于构建和试验。事件驱动型架构因其松耦合特性,可实现快速进化,或为现有应用程序快速添加新功能。瑞典最大的纯线上百货商品零售商 MatHem.se 采用无服务器和解耦架构在亚马逊云科技平台上构建电商网站,令其革新速度提升了 10 倍

零售订单管理流程

下图展示的概念视图说明了事件在示例零售订单管理系统中如何流转,以及如何利用事件构建松耦合电商系统。


示例零售订单管理系统中的事件流

该示例展示了以下服务:结账服务、订单服务、物流服务、仓储服务和通知服务。这些服务均为独立的微服务,可独立扩展和独立故障,并不影响其他组件。各服务间并不直接相连,而是经由事件代理进行联通。服务完成任务后,会向事件代理发布事件,其他服务(关注该特定事件)将会接收该事件。我们一起看下从消费者下单订购商品至商品发货的事件流程:

  1. 消费者对商品下订单时,结账服务会发布一个 OrderCreated 事件。
  2. 订单服务接收 OrderCreated 事件。
  3. 订单服务处理付款,并创建一个 OrderProcessed 事件。
  4. 物流服务接收 OrderProcessed 事件。
  5. 获取事件后,物流服务开始进行物流处理,未出错地完成后,发布 ShipmentPrepared 事件。
  6. 仓储服务接收 ShipmentPrepared 事件。
  7. 事件将通知仓库人员打包商品,打包完成后,仓储服务会发布 ShipmentProcessed 事件。
  8. 物流服务接收 ShipmentProcessed 事件。
  9. 获取 ShipmentProcessed 事件后,物流服务完成,发布 OrderFulfilled 事件。
  10. 通知服务接收所有的相关事件,让消费者了解他们的订单从下单到发货的处理进度。

利用事件驱动型架构构建松耦合系统的解决方案可应用于多个行业用例,包括银行和保险业(例如贷款处理和保险处理)、客户服务、制造业等。

可组合商务和 MACH

使用可组合商务法(使用 MACH 联盟的规定性指南,在该联盟组织中亚马逊云科技为技术推动者)的零售商也可采用无服务器的事件驱动模式构建其电商订单管理系统。MACH(Microservices-based,API-first,Cloud-native SaaS and Headless)能够使零售商选择最佳解决方案,将平台的各个部分组合在一起(或自建),构建面向未来的可插拔解决方案。

总结

本博文描述了用于零售订单处理的无服务器事件驱动型架构。使用无服务器等微服务和云原生技术构建的电商系统,通过增加上市时间、弹性和可扩展性,以及降低成本,帮助零售商在竞争中保持领先地位。

查看以下资源了解更多:

 

Original URL: https://aws.amazon.com/blogs/industries/building-a-serverless-event-driven-retail-order-management-system/

本篇作者

Vandana Venkatesan

Vandana Venkatesan 是亚马逊云科技的无服务器市场推广专员,利用无服务器优先的方法,帮助客户在亚马逊云科技平台上进行应用程序现代化,达成客户最重要的业务成果。

Alexander Vladimirov

Alexander Vladimirov 是亚马逊云科技无服务器和应用程序现代化专家,在解决方案架构和软件工程方面拥有 20 年的实践经验,长期致力于事件驱动型架构的研究,帮助客户将该现代化方法应用于云现代化。Alexander 很享受使用亚马逊云科技无服务器堆栈来设计和制作完全无服务器、可扩展、强大和高效的事件驱动型解决方案的原型。