AWSのイベント駆動アーキテクチャ(EDA: Event-Driven Architecture)を導入することで、システムはより柔軟かつスケーラブルになり、非同期処理やマイクロサービス連携が容易になります。本記事では、主要な3つのイベントサービス Amazon SNS、Amazon SQS、Amazon EventBridge について、基礎から実践まで詳細に解説します。
目次[非表示]
1. イベント駆動アーキテクチャとは?
イベント駆動アーキテクチャとは、システムの各コンポーネントがイベント(状態の変化など)を生成し、他のコンポーネントがそれをトリガーとして動作する設計思想です。これにより、疎結合で拡張性の高いシステムが実現できます。
メリット
- 非同期処理の実現(例:バッチ処理、メール送信)
- スケーラブルな設計(トラフィックに応じた動的な処理分散)
- サービス間の疎結合化(独立開発・テストが容易)
- 高可用性・耐障害性(リトライ機構、デッドレターキュー)
代表的なユースケース
- ユーザー登録完了時のメール送信(SNS)
- 注文処理の非同期化(SQS)
- マイクロサービス間のイベント連携(EventBridge)
- ログのリアルタイム分析(Kinesis + EventBridge)
2. Amazon SNS(Simple Notification Service)
AWS SNSは、パブリッシュ/サブスクライブモデルの通知サービスです。1対多のメッセージ配信に最適で、リアルタイム通知やイベントブロードキャストの用途に活用されます。
SNSの特徴
- 複数の宛先に一斉通知が可能(Eメール、SMS、Lambda、SQS など)
- 高スケーラビリティと可用性
- モバイルプッシュ通知も対応
主なユースケース
- CloudWatchアラームによるアラート通知
- 注文完了通知(ユーザー向けEメール/SMS)
- 他サービスと連携するためのイベント発火(SNS → SQS, Lambda)
SNSの作成手順(コンソール)
- 「SNS」サービスを開く
- 「トピックの作成」をクリックし、名前とタイプを設定
- サブスクリプション(通知先)を追加し、Lambdaやメール宛を指定
AWS CLIでSNSを操作
aws sns create-topic --name MySNSTopic
aws sns publish --topic-arn arn:aws:sns:us-east-1:123456789012:MySNSTopic --message "New order received"
3. Amazon SQS(Simple Queue Service)
SQSは、キューを通じて非同期通信を行うサービスです。送信者と受信者を完全に分離し、処理のタイミングを柔軟に制御できます。
SQSの特徴
- メッセージの最大14日間保持
- 標準キューとFIFOキューの2種類を提供
- 他サービスとの連携(Lambda, EC2, ECSなど)も容易
主なユースケース
- ECサイトの注文キュー処理
- 動画変換・画像リサイズなどのバッチ処理
- 処理失敗時のDLQ(デッドレターキュー)による障害対策
SQSの作成手順(コンソール)
- SQSサービスを開く
- 「キューの作成」を選択し、標準 or FIFO を選択
- メッセージ保持期間や可視性タイムアウトを設定
AWS CLIでSQSを操作
aws sqs create-queue --queue-name MySQSQueue
aws sqs send-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MySQSQueue --message-body "Order received"
aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MySQSQueue
4. Amazon EventBridge
EventBridgeは、イベントベースのルーティングプラットフォームです。AWSサービスやカスタムアプリケーションからのイベントを収集し、特定のルールに基づいて処理を実行します。
EventBridgeの特徴
- AWSネイティブサービス(S3、EC2など)からのイベントを扱える
- カスタムアプリケーションのイベント発火も可能
- スケジュールルールやイベントパターンによる制御が柔軟
主なユースケース
- S3アップロードをトリガーにLambda関数を実行
- 定時処理のスケジューラとして活用(cron/rate)
- 組織間のアカウント統合イベント共有(EventBus機能)
EventBridgeの設定手順(コンソール)
- EventBridgeサービスを開く
- 「ルールの作成」でイベントソースを選択
- ターゲットとしてLambdaやSQS、SNSを設定
- 必要に応じて入力変換ルール(InputTransformer)を指定
AWS CLIでEventBridgeを操作
aws events put-rule --name MyScheduledRule --schedule-expression "rate(5 minutes)"
aws events put-targets --rule MyScheduledRule --targets "Id"="1","Arn"="arn:aws:lambda:us-east-1:123456789012:function:MyLambdaFunction"
5. 各サービスの使い分けポイント
サービス | 用途 | 特徴 |
---|---|---|
SNS | 通知・リアルタイム連携 | 1対多・即時通知向け |
SQS | 非同期処理のバッファ | 一時保存・順次処理 |
EventBridge | イベントルーティング・統合 | 柔軟なイベント制御と拡張性 |
6. まとめ
本記事では、AWSにおけるイベント駆動アーキテクチャの中心的サービスであるSNS、SQS、EventBridgeについて詳しく解説しました。これらを組み合わせることで、従来のモノリシックな設計では実現できなかった、柔軟でスケーラブルな分散システムの構築が可能になります。
- SNS:通知やブロードキャスト用途に最適
- SQS:ジョブの分散処理・再試行制御に適したメッセージキュー
- EventBridge:イベントベースでシステム全体を構成・統合