#SQS(Simple Queue Service)
SQSとは
フルマネージド型メッセージキュー型サービス。
プロセス間通信などのスレッド間通信に使われるコンポーネントで制御やデータを伝達するポーリング型キューサービス
*基本的には256KBまでの軽いデータしか利用できず、60秒から14日間メッセージを保持する
##メッセージキュー(MQ)の基本
アプリケーションは、開発、デプロイ、管理がより簡単に行える、独立した小さな構成要素に分解されています。メッセージキューは、この分散アプリケーションに対して通信や調整を行います。メッセージキューは、分解したアプリケーションのコーディングを大幅に簡素化すると同時に、パフォーマンスや信頼性、拡張性を高めることができる。
メッセージキューは、1 つのシステムのさまざまな部分で、通信やオペレーション処理を非同期で実行できるようにします。メッセージキューは、一時的にメッセージを格納する軽量バッファと、ソフトウェアコンポーネントがキューに接続するエンドポイントを提供して、メッセージを送受信できるようにします。メッセージは、通常は小規模で、リクエスト、返信、エラーメッセージ、または単純な情報などの場合があります。メッセージを送信するには、プロデューサーというコンポーネントがキューにメッセージを追加します。コンシューマーという別のコンポーネントがメッセージを受信して処理するまで、メッセージはキューに保存されます。
##ポーリングとは
- 複数のプログラム間通信に対し、一定のタイミングの問い合わせがあった場合に送受信処理を行う通信方式
- 一旦中継所に通信内容を貯めておいて、受信側のタイミングが良いときに通信を行う
##コンポーネントの疎結合
コンポーネント間の相互依存を減らした構成とすることで、1つのコンポーネント変更や障害の影響を削減する
##密結合の問題
密結合したアーキテクチャは障害や修正に弱く、不具合が発生しやすい
【密結合はデメリットが多い】
1インスタンスの障害の影響が全体に及びやすい
1つの修正対応で他インスタンスへの影響を多く考慮しなければならない
負荷対応やスケーリングなども容易にできない
システム構成の追加・変更が難し
【解決策】
キューなどのコネクターを利用した疎結合な呼び出し方法の採用
#キューの種類
###標準(スタンダード)キュー
標準キューは「順番通りに処理」と「1回だけのメッセージング」を“なるべく”実施する処理
メッセージ配信順序を保証せず、同一のメッセージが2回配信される可能性がある
###FIFOキュー
その名の通り最初に入ったキューを最初に処理する順番を守るキューイングを実施
秒あたりの処理件数は標準(スタンダード)キューに劣る
#SQSの機能
機能 | 特徴 |
---|---|
Short Poling | キューが空の場合でも即時にリターンする |
Long Poling | キューが空の場合はタイムアウトまで待つ |
デッドレターキュー | ずっと残ったメッセージを別キューに移動し、正常に処理できなかったメッセージを隔離できる |
Visibility timeout(可視性タイムアウト) | 新しいメッセージを指定時間見えなくする |