アプリケーション統合(SQS / SNS / EventBridge)

SQS・SNS・EventBridgeはAWSのアプリケーション統合サービスです。サービス間を「疎結合」に接続することで、システムの可用性・スケーラビリティ・保守性を高めます。SQSとSNSの違いがCP試験で頻出です。

概要

現代のクラウドアーキテクチャでは、複数のサービスやコンポーネントを連携させてシステムを構築します。この連携の方法として疎結合(loose coupling)が重要な設計原則です。

疎結合とは、システムの各コンポーネントが互いに直接依存せず、メッセージやイベントを介して通信する設計のことです。これにより、一部のコンポーネントが停止してもシステム全体には影響しにくくなります。

CP試験で押さえるポイント

疎結合アーキテクチャとは

システムのコンポーネントが直接通信する密結合では、一方のサービスが遅くなると相手も待たされ、障害が連鎖しやすくなります。

一方、SQSのようなキューを挟んだ疎結合では:

このような設計により、システム全体の可用性・スケーラビリティ・回復力が向上します。

Amazon SQS(Simple Queue Service)

SQSはフルマネージド型のメッセージキューサービスです。送信側(プロデューサー)が送ったメッセージをキューに保存し、受信側(コンシューマー)がポーリング(定期的に問い合わせ)して取り出すプル型(ポーリング型)の通信です。

Amazon SNS(Simple Notification Service)

SNSはPub/Sub(発行/購読)モデルのメッセージ通知サービスです。発行者がトピックにメッセージを送ると、そのトピックを購読しているすべての購読者にプッシュ型で同時に配信されます(これをファンアウトと呼びます)。

SQS と SNS の違い(CP試験頻出)

比較項目 SQS SNS
モデル キュー(メッセージキュー) Pub/Sub(発行/購読)
通信方式 プル型(ポーリング):受信側が取りに行く プッシュ型:発行すると全購読者に配信
宛先 基本的に1対1 1対多(ファンアウト)
メッセージの保持 コンシューマーが取り出すまで保持(最大14日) 配信後は保持しない
主な用途 処理のバッファリング・非同期処理 通知配信・複数サービスへの同時配信
用途例 注文処理キュー・画像処理キュー 障害通知メール・SNSファンアウトパターン

Amazon EventBridge(イベントルーティング)

EventBridgeはAWSサービス・SaaSアプリケーション・カスタムアプリケーションからのイベントをルールに基づいてターゲット(Lambda・SQS・SNSなど)にルーティングするサービスです。

たとえば「EC2インスタンスが停止したら自動的にLambda関数を実行して通知を送る」「毎日決まった時間にバッチ処理を実行する」などのイベント駆動アーキテクチャを構築できます。

AWS Step Functions(一言レベル)

Step Functionsは複数のAWSサービス(Lambda・SQS・SNSなど)をワークフローとして定義し、ステップごとに順番に実行したり、条件分岐・エラー処理を組み込んだりできるサービスです。複雑な処理の流れをビジュアルで管理できます。

関連サービスとの違い・使い分け

シナリオ 適切なサービス 理由
注文が来たら非同期で処理し、処理できるまでメッセージを保持したい SQS キューがバッファとなり、処理側のダウン中もメッセージを保持
障害発生時に複数の担当者へEメールとSMSで同時通知したい SNS ファンアウトで複数の宛先(Eメール・SMS)に同時配信可能
EC2インスタンスが停止したら自動的に別の処理を実行したい EventBridge AWSサービスのイベントを検知してルールに基づき処理をトリガー
1件の注文を複数のサービス(在庫・配送・メール)で並列処理したい SNS + SQS SNSファンアウトで各サービスのSQSキューにメッセージを配信

確認問題

付録:公式ドキュメント・Black Belt 動画

さらに深く学びたい方は、AWS公式の以下のリソースを参照してください(いずれも外部サイトが開きます)。

公式ドキュメント

AWS Black Belt Online Seminar(動画・解説資料)