Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバーレスで実装するイベントドリブンアーキテクチャ

Avatar for kojikojisan kojikojisan
March 13, 2025
16

 サーバーレスで実装するイベントドリブンアーキテクチャ

Avatar for kojikojisan

kojikojisan

March 13, 2025

Transcript

  1. 5 注文完了後に新たな処理を追加する際のイメージ イベントドリブンアーキテクチャ(2/3) Users 注文受付 在庫管理 配送管理 顧客通知 受注完了 イベント

    顧客分析 Users 注文受付 在庫管理 配送管理 顧客通知 顧客分析 ロジック 修正 リクエスト・レスポンス イベントドリブン
  2. 6 イベントドリブンアーキテクチャ(3/3) イベントドリブンアーキテクチャは非同期にイベントを通じて処理を実行するサービス設計 通信モデル 結合度 スケーラビリティ エラーハンドリング データの一貫性 1対1の同期的な通信 1対多の非同期的な通信

    比較的強い結合 スケーリングが比較的難しい 直接的なエラー処理が可能 強い一貫性を保ちやすい ほとんど疎結合 各処理が独立してスケーリング エラー処理が複雑になる 最終的一貫性モデルが多い リクエスト・レスポンス イベントドリブン
  3. 7 Amazon EventBridge で実現するイベントドリブン Event Event bus Rule Event Event

    AWS Cloud SaaS Application Servers Rule Rule Amazon EventBridge Instances AWS CloudTrail AWS Step Functions AWS Lambda Amazon Simple Queue Service (Amazon SQS) サーバーレスなイベントドリブンアーキテクチャ (1/4)
  4. 8 AWS Lambda Amazon EventBridge AWS Step Functions Amazon Simple

    Notification Service (Amazon SNS) AWS Lambda Instances サーバーレスなイベントドリブンアーキテクチャ (2/4) Amazon EventBridge で実現するイベントドリブン
  5. イベント定義する際は標準仕様 CloudEvents を参考にする 9 { "specversion" : "1.0", "type" :

    "com.example.submit_order.opened", "source" : "https://example.com/cloudevents/spec/submit", "subject" : "123", "id" : "A234-1234-1234", "time" : "2018-04-05T17:31:00Z", "comexampleextension1" : "value", "comexampleothervalue" : 5, "datacontenttype" : "application/json", "data" : { "appinfoA" : "abc", "appinfoB" : 123, "appinfoC" : true } } サーバーレスなイベントドリブンアーキテクチャ (3/4)
  6. イベントドリブンアーキテクチャはサーバーレス環境で効果を発揮する • サービス間が疎結合 ⇒ 柔軟な拡張が可能 • イベント発生時のみ処理を実行 ⇒ 従量課金が最小限 10

    サーバーレスなイベントドリブンアーキテクチャ (4/4) サーバーレスで設計する際 • その処理は同期処理でなければいけないのか? • その処理はイベントドリブンで表現できないのか? AI 活用が進む今だからこそイベントドリブンアーキテクチャを考える