Instiq
第2章 · アプリケーション統合とイベント駆動·v2.1.0·更新 2026/6/14·読了目安 約9分

変更要約: in-scopeサービス網羅(軸B): s2(EventBridge)にKinesis Data Streamsのストリーミング定義・役割・SQS/SNS/Firehoseとの選択基準を追記。

2.1SQS と SNS による疎結合

この節の要点

メッセージキューの SQS(1対1・プル)とパブ/サブの SNS(1対多・プッシュ)の違い、可視性タイムアウト、デッドレターキュー、ファンアウトといった疎結合設計の基礎を理解します。

コンポーネントを直接つながず、間にメッセージを挟むと片方の障害が波及しにくくなります。AWS では SQS(キュー)と SNS(パブ/サブ)が代表的です。

2.1.1SQS と SNS

SQS(キュー:プロデューサーがメッセージを送り、コンシューマーがプルして処理。1メッセージ→1コンシューマー)と、SNS(パブ/サブ:トピックへ発行し、複数のサブスクライバーへプッシュ。1メッセージ→多数)の違いを対比した図。
SQS(1対1)と SNS(1対多)
  • SQSキュー。コンシューマーがプルして1メッセージを1度処理する。ピーク吸収や非同期処理に。
  • SNSパブ/サブ。トピックへ発行すると複数の購読先へプッシュ配信(ファンアウト)。
  • 可視性タイムアウト:処理中のメッセージを他のコンシューマーから一時的に隠す時間。短すぎると二重処理、長すぎると再処理が遅れる。
  • デッドレターキュー(DLQ):規定回数失敗したメッセージを退避し、原因調査・再処理する。
  • 標準キュー/FIFO キュー:標準=高スループット・順不同・少なくとも1回。FIFO=厳密な順序・重複排除(1回限り)。

コンポーネントを直接呼び合うと、片方の障害や過負荷が波及します。間にメッセージングを挟む疎結合が、回復性とスケールの鍵です。SQS(キュー)は「ためて1回ずつ確実に処理」——コンシューマーがプルし、処理が終わるまで可視性タイムアウトで他から隠し、失敗が続けばDLQへ退避します。SNS(パブ/サブ)は「1つの発行を多数へプッシュ」。両者を組み合わせたファンアウト(SNS トピック→複数 SQS キュー)は、同じ通知を複数の処理系へ配り、各々が独立にバッファ・再試行できる定番パターンです。順序や重複排除が要るなら FIFO キューを選びます。

観点SQSSNS
モデルキュー(1対1)パブ/サブ(1対多)
配信プルプッシュ
主な用途バッファ・非同期処理通知・ファンアウト
特徴機能可視性TO・DLQ・FIFOトピック・サブスクリプション

シナリオ:注文の非同期処理。 受注ピークを吸収するため注文を SQS に入れ、ワーカー(Lambda/Auto Scaling)が自分のペースで処理。処理失敗が続くメッセージは DLQ に退避して調査。注文確定の通知は SNS トピックへ発行し、「在庫」「請求」「メール」の各 SQS キューへファンアウトして並行処理。順序が重要な決済は FIFO キューを使用。

注意

混同に注意:
SQS=プル・1対1/SNS=プッシュ・1対多
可視性タイムアウトは「短すぎ=二重処理/長すぎ=再処理遅延」——処理時間に合わせる。
DLQ は失敗メッセージの退避(消すのではない)。
標準(順不同・少なくとも1回)と FIFO(厳密順序・重複排除)を取り違えない。

補足

Q. SQS と SNS はどちらを使う? ためて1回ずつ処理=SQS、1つの発行を多数へ=SNS。両立はファンアウト(SNS→複数 SQS)。Q. 可視性タイムアウトとは? 処理中メッセージを一時的に隠す時間。処理時間より長めに設定。Q. 標準と FIFO の違いは? 標準は高スループットだが順不同・少なくとも1回、FIFO は厳密な順序と重複排除(1回限り処理)。

試験ポイント

「1度だけ処理・プル=SQS」「1対多にプッシュ=SNS」「複数先へ同時配信=SNS ファンアウト(SNS→複数 SQS)」「失敗メッセージの退避=DLQ」「順序/重複排除=FIFO キュー」「処理中に隠す=可視性タイムアウト」 は DVA で頻出です。

2.1.2この節のまとめ

  • SQS=キュー(プル・1対1・バッファ)/SNS=パブサブ(プッシュ・1対多・ファンアウト)
  • 可視性タイムアウトDLQ標準/FIFO(順序・重複排除)を押さえる

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. 1つのメッセージを1つのコンシューマーが取り出して処理する、プル型のキューはどれですか?

Q2. 1つのメッセージを複数の購読先へ同時にプッシュ配信したい。何を使いますか?

Q3. SQS で処理に繰り返し失敗するメッセージを退避し、後で調査できるようにする仕組みはどれですか?

理解度を確認第2章「アプリケーション統合とイベント駆動」の問題を解く