「サーバーに異常が発生したら、即座に管理者のメールとスマホに通知したい」
「1つのイベントをきっかけに、複数の異なる処理(LamdaやSQSなど)を同時に走らせたい」
そんな、情報の「プッシュ型配信」を一手に引き受けてくれるのがAmazon SNS(Simple Notification Service)です。
私は模擬試験で「注文確定時に、メール送信と在庫更新、更に分析用データの保存を同時に行いたい」という問題に出会い、どうやってそれらをバラバラのサービスに伝えるか悩みました。正解は、SNSを使ってメッセージを複数の宛先に「ファンアウト(扇状に広げる)」することだったんです。
Amazon SNSの基本:トピックとサブスクリプション
SNSの仕組みは、非常にシンプルです。
- トピック
メッセージの通り道(チャンネル)のようなものです。 - パブリッシャー
メッセージをトピックに送る側(EC2、CloudWatchアラームなど)。 - サブスクライバー
トピックからメッセージを受け取る側(メール、SMS、Lamda、SQS、HTTPエンドポイントなど)。
一度トピックにメッセージを投げれば、そこに登録(サブスクライブ)している全ての宛先に、一瞬でコピーが届けられます。
試験の重要テクニック「ファンアウト(Fan-out)」
SAA試験で最も頻出するのが、この「ファンアウト」構成です。
SNSの後ろに複数のAmazon SQSキューをぶら下げることで、1つのイベントから「配送処理用キュー」と「ポイント計算用キュー」に同じデータを流し、それぞれを独立して並列処理させることができます。
これにより、前回のSQSの記事で紹介した「疎結合」な設計が、更に強力なものになります。
【比較表】SNS vs SQS(どっちがどっち?)
似ているようで役割が違う、この2つの使い分けを整理しましょう。
| 特徴 | Amazon SNS | Amazon SQS |
| 通信方式 | プッシュ型(送る) | プル型(受取側が取りに行く) |
| 宛先 | 複数の宛先に同時送信 | 1つのメッセージを1つのワーカーが処理 |
| 永続性 | 宛先が不在だと消える(リトライはある) | メッセージをキューに貯めておける |
| 役割 | 「通知・配信」のハブ | 「バッファ・疎結合」の行列 |
試験で役立つ!キーワード判別法
メッセージングの問題で、以下の言葉があればAmazon SNSが正解の最有力候補です。
- 「一斉通知(Fan-out」
- 「プッシュ通知、SMS、Eメールの配信」
- 「複数の異なるサービス(SQS、Lamdaなど)へ同時にメッセージを送信」
- 「トピックベースのメッセージング」
今回の学び:攻略の格言
「一対多で配るならSNS。プッシュで一気にファンアウトして、後続のSQSやLamdaへバトンを繋げ!」
あとがき:一歩ずつ、合格へ
最後まで読んでいただき、ありがとうございました!
SNSを使うと、システムがまるで生き物のように、あちこちでリアウタイムに連動し始めるのが面白いですよね。単に「メールを送る道具」としてだけでなく、「サービス同士のコミュニケーションを円滑にするハブ」として捉えると、設計の幅がグンと広がります。
それでは、次回の記事でお会いしましょう!
