2
1

More than 3 years have passed since last update.

AWS SQS(Simple Queue Service) について

Last updated at Posted at 2020-03-09

SQS(Simple Queue Service)

SQSとは
フルマネージド型メッセージキュー型サービス。
プロセス間通信などのスレッド間通信に使われるコンポーネントで制御やデータを伝達するポーリング型キューサービス

*基本的には256KBまでの軽いデータしか利用できず、60秒から14日間メッセージを保持する

メッセージキュー(MQ)の基本

アプリケーションは、開発、デプロイ、管理がより簡単に行える、独立した小さな構成要素に分解されています。メッセージキューは、この分散アプリケーションに対して通信や調整を行います。メッセージキューは、分解したアプリケーションのコーディングを大幅に簡素化すると同時に、パフォーマンスや信頼性、拡張性を高めることができる。
スクリーンショット 2020-03-09 13.43.57.png

メッセージキューは、1 つのシステムのさまざまな部分で、通信やオペレーション処理を非同期で実行できるようにします。メッセージキューは、一時的にメッセージを格納する軽量バッファと、ソフトウェアコンポーネントがキューに接続するエンドポイントを提供して、メッセージを送受信できるようにします。メッセージは、通常は小規模で、リクエスト、返信、エラーメッセージ、または単純な情報などの場合があります。メッセージを送信するには、プロデューサーというコンポーネントがキューにメッセージを追加します。コンシューマーという別のコンポーネントがメッセージを受信して処理するまで、メッセージはキューに保存されます。

ポーリングとは

  • 複数のプログラム間通信に対し、一定のタイミングの問い合わせがあった場合に送受信処理を行う通信方式
  • 一旦中継所に通信内容を貯めておいて、受信側のタイミングが良いときに通信を行う ##コンポーネントの疎結合 コンポーネント間の相互依存を減らした構成とすることで、1つのコンポーネント変更や障害の影響を削減する

密結合の問題

密結合したアーキテクチャは障害や修正に弱く、不具合が発生しやすい
スクリーンショット 2020-03-09 13.31.40.png

【密結合はデメリットが多い】

 1インスタンスの障害の影響が全体に及びやすい
 1つの修正対応で他インスタンスへの影響を多く考慮しなければならない
 負荷対応やスケーリングなども容易にできない
 システム構成の追加・変更が難し

【解決策】

キューなどのコネクターを利用した疎結合な呼び出し方法の採用

疎結合化

スクリーンショット 2020-03-09 13.31.50.png

キューの種類

標準(スタンダード)キュー

標準キューは「順番通りに処理」と「1回だけのメッセージング」を“なるべく”実施する処理
メッセージ配信順序を保証せず、同一のメッセージが2回配信される可能性がある

FIFOキュー

その名の通り最初に入ったキューを最初に処理する順番を守るキューイングを実施
秒あたりの処理件数は標準(スタンダード)キューに劣る

SQSの機能

機能 特徴
Short Poling キューが空の場合でも即時にリターンする
Long Poling キューが空の場合はタイムアウトまで待つ
デッドレターキュー  ずっと残ったメッセージを別キューに移動し、正常に処理できなかったメッセージを隔離できる   
Visibility timeout(可視性タイムアウト) 新しいメッセージを指定時間見えなくする
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1