イベント駆動アーキテクチャ - Amazon EventBridge で実現する疎結合システム設計

Amazon EventBridge を活用したイベント駆動アーキテクチャの構築方法を解説します。

イベント駆動アーキテクチャの設計原則

イベント駆動アーキテクチャ (EDA) は、システムのコンポーネント間をイベントで疎結合に接続する設計パターンです。コンポーネントはイベントを発行するだけで、誰がそのイベントを消費するかを知る必要がありません。この疎結合性により、各コンポーネントの独立したデプロイ、スケーリング、障害分離が可能になります。Amazon EventBridge は AWS のサーバーレスイベントバスサービスで、AWS サービス、SaaS アプリケーション、カスタムアプリケーションからのイベントを統一的にルーティングします。オンプレミスでイベント駆動アーキテクチャを構築するには、RabbitMQ や Apache Kafka などのメッセージブローカーの運用が必要で、クラスタ管理、スケーリング、障害復旧の運用負荷が発生します。EventBridge はフルマネージドで、イベントの発行と消費に集中できます。

EventBridge のイベントルーティングとフィルタリング

EventBridge の最大の特徴は、コンテンツベースのイベントルーティングです。イベントパターンを定義することで、イベントの内容に基づいて特定のターゲットにルーティングできます。JSON のフィールド値、プレフィックスマッチ、数値範囲、IP アドレス範囲など、豊富なフィルタリング条件をサポートします。1 つのイベントバスに最大 300 のルールを定義でき、1 つのルールに最大 5 つのターゲットを指定できます。ターゲットには LambdaSQSSNSStep FunctionsKinesisAPI Gateway など 20 以上の AWS サービスを直接指定でき、コードを書かずにイベント駆動のワークフローを構築できます。EventBridge はイベント JSON の任意のフィールドに対するパターンマッチングをサポートし、より柔軟なルーティングが可能です。また、EventBridge はイベントの入力変換機能により、ターゲットに渡すイベントの形式をルール内で変換でき、コンシューマー側のコードを簡素化できます。以下は EventBridge ルールの定義例です。 ```json { "source": ["my-app"], "detail-type": ["OrderCreated"], "detail": { "amount": [{"numeric": [">", 10000]}], "region": ["ap-northeast-1"] } } ```

SaaS 統合とスキーマレジストリ

EventBridge は 30 以上の SaaS パートナー (Zendesk 、 Datadog 、 Auth0 、 Shopify など) からのイベントをネイティブに受信できます。 SaaS アプリケーションのイベントを AWS のサービスに直接ルーティングでき、 Webhook の受信サーバーやポーリング処理を自前で構築する必要がありません。 EventBridge Schema Registry はイベントのスキーマを自動検出し、カタログとして管理します。スキーマディスカバリーを有効にすれば、イベントバスを流れるイベントのスキーマが自動的に登録され、 Java 、 Python 、 TypeScript のコードバインディングを自動生成できます。これにより、イベントの型安全な処理が可能になり、開発者の生産性が向上します。また、 Event Grid にはスキーマレジストリに相当する機能がなく、イベントスキーマの管理は開発者が手動で行う必要があります。 EventBridge Pipes はイベントソースとターゲットをポイントツーポイントで接続し、フィルタリング、エンリッチメント、変換をコードなしで実現します。 サービス連携の知見を広げたい場合はAmazon の専門書も活用できます。

EventBridge と Lambda、SQS の連携パターン

EventBridge を中心としたイベント駆動アーキテクチャでは、LambdaSQS を組み合わせた複数の連携パターンが活用されます。ファンアウトパターンでは、1 つのイベントを複数の Lambda 関数に同時配信し、並列処理を実現します。バッファリングパターンでは、EventBridge から SQS にイベントを送信し、Lambda が SQS からバッチ処理することで、バックプレッシャーに対応します。サガパターンでは、EventBridge と Step Functions を組み合わせて、分散トランザクションのオーケストレーションを実現します。EventBridge Scheduler は cron 式やレート式でイベントをスケジュール発行でき、定期的なバッチ処理やメンテナンスタスクの自動化に活用できます。1 回限りのスケジュールも設定可能で、将来の特定時刻にイベントを発行する予約処理にも対応します。

EventBridge の料金

EventBridge のカスタムイベントは 100 万イベントあたり約 1.00 ドルです。AWS サービスからのイベント (EC2 状態変更、S3 オブジェクト作成等) は無料です。スキーマレジストリとスケジューラーの利用に追加料金は発生しません。Pipes はソースからターゲットへのイベント転送で、100 万リクエストあたり約 0.40 ドルです。SQS (100 万リクエストあたり約 0.40 ドル) や SNS (約 0.50 ドル) と組み合わせたイベント駆動アーキテクチャ全体のコストを見積もる際は、各サービスの料金を合算して評価します。

まとめ - イベント駆動アーキテクチャの導入価値

Amazon EventBridge は、イベント駆動アーキテクチャの中核として、イベントの収集、ルーティング、配信を包括的にサポートします。Lambda、SQS、Step Functions との組み合わせにより、ファンアウト、バッファリング、サガなど多様なパターンをサーバーレスで実装できます。マイクロサービスアーキテクチャの疎結合化を推進する組織にとって、EventBridge は最も包括的なイベントバスサービスです。