おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

SAA学習-サーバレス-SQSの概要

今回のテーマ:SQSの概要

AWSが提供するMessage Queueサービスが今回の内容です。

主要サービスの公式資料:

SQS: docs.aws.amazon.com

AWS Black Belt Online Seminar: www.youtube.com

Amazon Sinple Queue Service(SQS)

AWSが提供するプロセス間通信などのスレッド間通信に使われるコンポーネントで、制御やデータを伝達するポーリング型キューサービスとなります。

ポーリングとは

複数のプログラム間通信に対し、一定のタイミングの問い合わせがあった場合、送受信処理を行う通信方式となります。
概略図は以下のようになります。

f:id:In-houseSE:20210901080937p:plain

直接通信の場合、受信側がBusyの状態だと処理が滞る可能性があります。

f:id:In-houseSE:20210901081204p:plain

いったん中継所に通信内容を貯めておいて、受信側のタイミングが良いときに受信の通信を行います。

f:id:In-houseSE:20210901081413p:plain

SQS

SQSはキューをため込んでポーリング処理を実施するサービスとなります。
メッセージデータを受信側が受け取るまでの概略図は以下のようになります。

f:id:In-houseSE:20210901082056p:plain

また、SQSの内訳はRequestキューとResponseキューとなり、送受信をキューイングすることができます。
概略図は以下のようになります。

f:id:In-houseSE:20210901082604p:plain

SQSの特徴

フルマネージド型で提供された高可用性/高スケーラビリティ/高スループット/低コストを実現します。
項目としては以下のようなものがあります。

  • 複数のサーバー/データセンターにメッセージを保持する高可用性構成
  • 多数の送信者と受信者に対応可能なスケーラビリティの確保
  • メッセージが増加しても高いスループットを維持
  • 無料枠と従量課金による低コスト
  • 冗長化などの可用性はAWS側のサービスで構成

また、送受信するデータは256KBまでのデータしか利用できず、60秒から14日間メッセージを保持することができます。
項目は以下のようなものがあります。

項目 概要
メッセージサイズ メッセージの最大サイズは256KB
Extended Client Libraryを利用すると2GBまでのメッセージ送受信が可能
メッセージ保持期限 削除されないメッセージはデフォルトで4日間保持
保存期間は60秒から14日間の間で変更可
In Flightメッセージ 1つのキューごとに最大120,000In Flight(受信されたメッセージ&Visibility Timeout内)メッセージ

キューのタイプ

SQSのキューメッセージの処理順序は、以下の2つの方式から選択します。

  • 標準キュー(デフォルト)
  • FIFO(First in First out)キュー

標準キュー(デフォルト)

標準キューは「順番通りに処理」と「1回だけのメッセージング」をなるべく早く実施する処理となります。

FIFO(First in First out)キュー

最初に入ったキューを最初に処理する順番を守るキューイングを実施する処理となります。

SQSの機能

追加機能を利用することでキューイング処理に工夫することが可能となります。
以下は追加機能の概要となります。

機能名 概要
Short Poling キューが空の場合、即時リターンを実行
Long Poling キューが空の場合、タイムアウトまで待ちを継続
デッドレターキュー ずっと残ったメッセージを別キューに移動し、正常に処理できなかったメッセージを隔離
Visibility timeout 新しいメッセージを指定時間見えなくする

Visibility timeout

Visibility timeoutを設定することで、優先的に処理してほしい受信インスタンスを指定することが可能となります。
概略図は以下のようになります。

f:id:In-houseSE:20210901085240p:plain

今回のテーマは以上です。