イベント駆動アーキテクチャとは?
システム間の連携処理にメッセージ処理やキューイングシステムを挟むことはよくあります。これを挟むことによって、システムごとの負荷や障害影響を分離させることができます。
メッセージを受け取る側の処理は、メッセージ駆動型です。これを発展させたものがイベント駆動アーキテクチャです。何らかのきっかけ(イベント)があって反応(アクション)があるというのは、実世界では普通のこと。同じ考え方で、イベントやメッセージを受け取ったら処理を起動するという形をシステムとして実装します。
イベントはいつ発生するかわかりません。したがって、通常は、イベントを待ち受けるものが必要になります。この待ち受け処理をサーバーレスで行うことで、費用の面でも運用工数の面でも経済的なシステムとなります。
AWS DevAx::connect - イベント駆動アーキテクチャシリーズ!
ライブラリ・アーカイブ: こちら
サーバーレスとイベント駆動
リクエストの呼び出しイベント、処理の完了イベント、データの変更イベントなどの状態の変化をイベント発行元(イベントプロデューサ)からイベントストア/ルーター/バスを通じて、後続の処理サービスへと伝播します。
- イベントストア/ルーター/バス
イベントを受信し、ルーティングする中継作業を行うコンポーネント。用途に応じていくつかのサーバーレス型の選択肢があります。
- イベントコンシューマ(処理サービス)
イベント駆動で処理を起動します。イベント待ち受けの効率性/経済性を考慮すると、サーバーレスは良い選択肢になります。
関連記事 : Operating Lambda
AWS Lambda のイベント駆動アーキテクチャへの適合性やデザイン原則を紹介したブログシリーズです。
1. Lambda とイベント駆動パラダイム
2. イベント駆動のデザイン原則
3. アンチパターン
イベントストア/ルーター/バス: 紹介デモ動画
SQS/SQS FIFO : 順序保証/重複排除可能なサブシステム間連携
イベントを中継し、システム間の連携によく利用されるサーバーレスなサービス Amazon SQS と SNS。シンプルなキューおよび通知サービスでありながら、エンタープライズで求められる順序保証・重複排除が可能な FIFO(First-In, First-Out)機能も提供しています。その動作がわかるデモ動画をご覧ください。
関連情報
SQS で受信したメッセージ駆動で処理実行するサービスとして Lambda を利用できます。
SQS-Lambda 連携機能 ≫
実践に役立つ、SQS-SNS-Lambda によるスケーラブルなイベント駆動アーキテクチャを解説します。
動画セッション(英語)を見る ≫
EventBridge : SaaS 連携、AWSサービス間のイベント連携
各種 AWS サービスが出力するログイベント、サードパーティ SaaS の出力イベントを受信し、後続サービスに処理をトリガーするサーバーレス型のサービスバス Amazon EventBridge。動画では、SaaS イベントとの連携を紹介しています。
Amazon MQ : マネージドな RabbitMQ/ActiveMQ
RabbitMQ/ActiveMQ をマネージドで利用可能にする Amazon MQ。既存 RabbitMQ/ActiveMQ ユーザーは移行コストを最小限に、クラウドによるマネージドのメリットを享受できます。
また、Amazon MQ は、Lambda のイベントソースとしても利用可能です。
ストリームデータへの対応
連続的に押し寄せるデータストリーム要件に対するイベントストアとして、以下の選択肢があります。
Next Step
イベント駆動アーキテクチャのための次のステップとして、より深く理解するための進め方やデザインパターンの解説資料、または、実際に動きを体感するワークショップに進みましょう。それぞれ、以下のリンクから、アクセスできます。
導入のためのステップとデザインパターン
イベント駆動のためのステップやデザインパターンの紹介資料です
PDF | Slideshare
ワークショップ(英語)
Amazon EventBridge、Lambda、SQS/SNS によるイベント駆動処理を体験できます
ワークショップを開始する ≫
サーバーレス学習ガイド
イベント駆動と相性の良いサーバーレスの典型的な学習手順を進めてみませんか?
学習ガイドを見る ≫
関連情報 : Event Driven Architecture | サーバーレスを始めよう | 形で考えるサーバーレス設計 | サーバーレスのビジネス効果