会員登録すると
学習することができます。
会員登録する(無料)
登録済みの方はこちら
ログイン

メッセージングで疎結合にする ― SQS・SNS・EventBridgeを、条件から選び分ける

目安学習時間 25分

課題

全問正解でレクチャー完了です。

【問題1】

Lambda 関数のタイムアウトが45秒で、SQS のキューをイベントソースにします。可視性タイムアウトの設定として、勧められている考え方に合うものはどれですか。

[選択肢]

【問題2】

同じ口座への入金と出金の指示を、送った順番どおりに一度だけ処理したいとき、選ぶものはどれですか。

[選択肢]
会員登録すると
学習することができます。
会員登録する(無料)

学ぶ目的

密結合と疎結合

注文を受けた処理が、在庫・メール・請求の処理を順に直接呼ぶと、どれか1つが遅れたり止まったりしただけで全体が止まります。これが密結合です。間にキューやトピックを置き、受け取ったことだけ返して後で処理すると、各部分が独立して動けます。これが疎結合です。

SQS の標準キューと FIFO キュー

  • 標準キュー … ほぼ上限なく速い。順番は大まかで、同じメッセージが2回以上届くことがある
  • FIFO キュー … メッセージグループ ID ごとに順番を守り、重複を除く。速さに上限がある

可視性タイムアウトとデッドレターキュー

受け取られたメッセージは、可視性タイムアウト(既定30秒、最大12時間)の間、ほかの受信者から見えなくなります。処理し終えたら削除します。削除しないまま時間が過ぎると、また見えるようになり、別の受信者が受け取ります。何度受け取っても処理できないメッセージは、受信回数の上限(maxReceiveCount)を超えたらデッドレターキューへ移します。Lambda で SQS を読むときは、可視性タイムアウトを関数のタイムアウトの6倍以上にすることが勧められています。

SNS と EventBridge

  • SNS … 1つのメッセージを、複数の SQS キューや Lambda などに一斉に配る(ファンアウト)。購読ごとにフィルタできる
  • EventBridge … イベントの中身のパターンでルールを書き、合うものを送り先に届ける。AWS のサービスや外部の SaaS のイベントも扱え、決まった時刻に動かすスケジュールもある

「1件を複数に配る」なら SNS、「ためておいて順に処理する」なら SQS、「中身で振り分ける」なら EventBridge が目安です。

このレクチャーで学ぶこと

  • 密結合と疎結合の違い、非同期にする利点
  • SQS の標準キューと FIFO キューの違い
  • 可視性タイムアウトとデッドレターキュー
  • SNS のファンアウトと EventBridge のルール

質問

まだ質問は投稿されていません。

質問投稿

ログイン後に質問の投稿ができます。