モチベーション
- AWS SAAの勉強中、SQSとSNSを使ったファンアウト構成が出てきた
ファンアウト構成とは
- 「ファンアウト(Fan-out)」は、コンピューティングの分野で一般的に使用される用語
- 具体例
- メッセージングシステム:
- メッセージを1つの送信元から複数の宛先に配信する構成
- プロセスの分岐:
- 1つのタスクを複数の小タスクに分割して実行する
- 例: マルチスレッドや分散処理
- 回路設計:
- 信号が1つの出力から複数の入力に分岐する
- 例: デジタル回路でのファンアウト
- メッセージングシステム:
SQSとSNSを使ったファンアウト構成
構成
- SNSトピックを作成
- SNSは1つのトピックを介して複数のサブスクライバーに通知を配信する
- 複数のSQSキューをSNSトピックにサブスクライブさせる
- SNSはトピックに送信されたメッセージを、サブスクライブされた各SQSキューにコピーして送信する
- 受信側(消費者)はSQSからメッセージを取得
- 各SQSキューに格納されたメッセージを、それぞれのシステムやサービスが独立して処理できる
ユースケース
- 分散システムでの通知配信:
- SNSを使って、複数のアプリケーション(ログ処理、分析システムなど)に同時にメッセージを送る
- マイクロサービス間の通信:
- SNSでイベントを発行し、各マイクロサービスが自分専用のSQSキューから必要なメッセージを受け取る
- リアルタイムアラートとバッチ処理の同時実行:
- SNSでアラートを配信し、リアルタイムアラートはLambda関数が処理、バッチ処理はSQSで溜めて後で処理
イメージ
[ Producer ]
|
v
[ SNS Topic ]
| | |
v v v
[ SQS Queue1 ] [ SQS Queue2 ] [ SQS Queue3 ]
| | |
v v v
[ Consumer1 ] [ Consumer2 ] [ Consumer3 ]
参考
- chatgptの回答を元に作成