Amazon Web Services ブログ
小売業におけるサーバーレスなイベント駆動型の注文管理システムの構築
電子商取引市場は、過去数年間で年間成長率が大幅に伸びています。顧客の購買行動はオンラインにシフトしていますが、店頭受け取りなどの新しいトレンドも一般的になりつつあります。米国センサス局によると、2022 年の米国の小売電子商取引の売上高は 1 兆ドルを超え、2021 年比 7.7% 増加しました。
小売業者はデジタルコマースに大規模な投資をしてきましたが、特にブラックフライデーのようなセールスイベントのピーク時には EC トラフィックを把握するのに苦労しています。消費者行動の変化に対応するために、小売業者はアプリケーションをクラウドに移行するだけでなく、クラウドネイティブ技術を最大限に活用する必要があります。
このブログでは、非同期イベント駆動アプローチとサーバーレスサービスを使って小売注文管理システムをリファクタリングまたは再構築することで、小売業者がレジリエンシー、スケーラビリティを改善し、イノベーションに注力できるようになる方法について説明します。
ブラックフライデーの販売イベント中に深刻な障害を経験した後、LEGO はモノリシックな EC プラットフォームをリファクタリングしました。通常の販売イベント時には、LEGO はオンライントランザクションが最大 200 倍に、ユーザートラフィックが最大 9.5 倍に跳ね上がるのを経験していました。サーバーレスなイベント駆動アプローチを使ってプラットフォームをリファクタリングすることで、トラフィックのピーク時でも問題なく対応できるようになりました。
米国の高級小売店であるニーマンマーカスは、ストラングラーフィグ移行パターンを使ってサーバーレスに移行することで、アプリケーションの起動時間を 50% 短縮し、開発者の敏捷性を高め、コストを削減しました。
なぜサーバーレスのイベント駆動型アーキテクチャを選択するのか
Dr. Werner Vogels は re:Invent 2022 の基調講演で、世界は本質的に非同期的でイベント駆動型であると指摘しました。例えば、小売業における注文管理システムを考えてみましょう。顧客が EC サイトで注文をするとそれがイベントになります。顧客はほぼ即座に注文を受け付けたことの通知を受け取ります。一方、残った注文処理部分は疎結合されたサービスを通じて非同期的に処理することができます。
例えば、支払いサービスは独立して支払いを処理しステータスを返すことができます。在庫サービスは商品の在庫があるかどうかをチェックしシステムに通知することができます。これらの様々なサービスは、イベントブローカーと呼ばれる中央のハブを通じて互いに通信します。
イベント駆動型アーキテクチャの意味を説明したところで、サーバーレスについて考えてみましょう。サーバーレスとイベント駆動型アーキテクチャの相性が良いのは、AWS Lambda のようなサーバーレスサービスがイベントをトリガーにして構築されているからです。課金が発生するのはイベントが処理されている時だけです。
要約すると、サーバーレスのイベント駆動型アーキテクチャのメリットは以下の通りです。
- レジリエンシー – 疎結合システムのメリットは、システムの一部品が故障してもその故障はそのコンポーネントに限定され、システムの残りの部分は影響を受けないことです。例えば配送サービスがダウンしても、チェックアウトサービスには影響しません。このため、開発者が配送サービスの修復に取り組む一方で、顧客はオンライン注文を続けることができます。LEGO が AWS 上でサーバーレスを採用することを決めたのは、大変人気のあるセールスイベント中に 2 時間近くの障害があったことがきっかけでした。
- スケーラビリティ – サーバーレスサービスは、プロビジョニングなしに要求に応じて自動的にスケールします。サーバーレスであることでシステムはピーク需要時に自動的にスケールアップし、需要が少ない時にはスケールダウンしてコストを節約することができます。さらに、疎結合されたサービスは互いに独立してスケールできます。Taco Bell は、サーバーレスのイベント駆動型ミドルウェアソリューションを構築することで、6 ヶ月で配達パートナーを 4 社追加しました。
- スピードとアジリティ – サーバーレスアプリケーションは構築が簡単で実験も容易です。イベント駆動型アーキテクチャの疎結合な性質のおかげで、アーキテクチャの進化や既存アプリケーションへの新機能の追加が迅速に行えます。スウェーデン最大のオンライン専門食料品店の MatHem.se は、AWS 上でサーバーレスと非連結アーキテクチャを採用することで、10 倍のスピードでイノベーションを起こせるようになりました。
小売注文管理フロー
次の図は、サンプルの小売注文管理システム内でイベントがどのように流れるか、および、それらを使用して疎結合の e コマースシステムを構築する方法の概念図を示しています。
この例は、以下のサービスを示しています: チェックアウトサービス、注文サービス、フルフィルメントサービス、倉庫管理サービス、通知サービス。 これらのサービスは、独立したマイクロサービスとして構築されているため、他のコンポーネントに影響を与えることなく、独立してスケールし、独立して失敗することができます。 異なるサービスは直接お互いと通信せず、イベントブローカーを経由して通信します。 サービスはタスクの完了時にイベントブローカーにイベントを発行し、その特定のイベントを待機している他のサービスがそれを受け取ります。 顧客が商品を注文して出荷されるまでのイベントの流れを見てみましょう。
- 顧客が商品を注文すると、CheckOut Service が OrderCreated イベントを発行します。
- Order Service は OrderCreated イベントを受け取ります。
- Order Service は支払いを処理し、OrderProcessed イベントを作成します。
- Fulfillment Service は OrderProcessed イベントを受け取ります。
- イベントを取得すると履行プロセスを開始し、エラーがなければ ShipmentPrepared イベントを発行します。
- Warehouse Service は ShipmentPrepared イベントを受け取ります。
- これにより、倉庫担当者にアイテムの梱包を通知します。それが完了すると、Warehouse Service は ShipmentProcessed イベントを発行します。
- Fulfillment Service は ShipmentProcessed イベントを受け取ります。
- ShipmentProcessed イベントを取得すると、処理を完了させ OrderFulfilled イベントを発行します。
- Notification Service は注文の受注から出荷までの進捗状況を顧客に通知するために、すべての関連イベントを受け取ります。
イベント駆動型アーキテクチャを用いて疎結合なシステムを構築する概念は、銀行、保険(ローン処理、保険処理など)、顧客サービス、製造など、多くの業界のユースケースに適用できます。
コンポーザブルコマースと MACH
AWS がテクノロジー・イネーブラーとして参加している組織である MACH アライアンスが規定しているガイダンスに基づいてコンポーザブルコマースアプローチを採用している小売業者は、このサーバーレスのイベント駆動型パターンを採用して自社の e コマースシステムの注文管理部分を構築することができます。 MACH (マイクロサービスベース、API ファースト、クラウドネイティブ SaaS、ヘッドレスの略)により、小売業者は最善のソリューションを選択し、プラットフォームの一部を組み立て(または自社で構築)することで将来性のあるプラグイン可能なソリューションを構築できます。
まとめ
このブログでは、小売注文処理のためのサーバーレスイベント駆動アーキテクチャについて説明しました。マイクロサービスやサーバーレスなどのクラウドネイティブ技術を利用した e コマースシステムは、時間当たりの市場投入能力、レジリエンシー、拡張性を向上させ、コストを削減することで、小売業者が競争優位を確保するのに役立ちます。
詳細は以下のリソースをご覧ください:
著者について
Vandana Venkatesan
Vandana Venkatesan は、AWS のサーバーレスな Go-to-Market 戦略の専門家です。 Vandana は、サーバーレスファーストのアプローチを用いた AWS 上のアプリケーションモダナイゼーションを通じて、顧客が最も重要なビジネス目標を達成するのを支援しています。
Alexander Vladimirov
Alexander Vladimirov は、AWS サーバーレスとアプリケーションモダナイゼーションの専門家です。ソリューションアーキテクチャとソフトウェアエンジニアリングの分野で 20 年以上の実務経験があります。彼が情熱を傾けているのはイベント駆動型アーキテクチャで、顧客のクラウド近代化の一環としてこの最新アプローチの採用を支援しています。彼は AWS サーバーレススタックを使用して、完全にサーバーレスで、スケーラブルで、堅牢で、高効率のイベント駆動型ソリューションの設計とプロトタイピングを楽しんでいます。
翻訳はソリューションアーキテクトの飯野が担当しました。原文は こちら です。