Loose Coupling
疎結合の意味。密結合の反対。
システム上で、各要素が独立し、互いの関連性が弱い。
疎結合の設計によって、一部のシステム要素は故障が起きても、影響が他の要素に及びにくいというメリットがある。また、一つの要素を修正しても、他の要素への影響を考えなくても良いメリットもある。
SQSとは
SQS(Simple Queue Service)
二つのプログラムが通信する際にポーリング処理を実施するサービス。
本来ならば、直接通信だと、受信側の処理がいっぱい溜まってて、送信側のキューがうまく届かないかもしれない。
SQSは中継所みたいな役割を果たして、送信側が送ってきたキューを溜め込んで、受信側が通信内容を問合せして、SQSの中にキューがあれば送信。
・SQSの中身は Request QueueとResponse Queueがある。
特徴
・フルマネージド型
・高可用性:複数のサーバー/データセンターにメッセージを保持する。
・高スケーラビリティ:多数の送信者と受信者に対応可能。
・高スループット:メッセージが増加しても高スループットを維持できる。
・低コスト:無料枠あり、従量課金。
◯メッセージサイズ:最大256KB
※Extended Client Libraryを利用すると、2GBまでのメッセージの送受信が可能。
◯保持期限:
デフォルト:4日間保持
※60秒から14日の間で変更可能。
※30日以上、キューに以下のリクエストがない場合、SQSはそのキューを削除する可能性がある。
SendMessage、ReceiveMessage、DeleteMessage、GetQueueAttributes、SetQueueAttributes。
処理形式
二つの処理形式がある。
◯標準キュー
◯FIFO(First in First out)
標準キュー
なるべく順番通りに処理するが、順番が前後する場合もある。
少なくとも 1 回のメッセージ配信をサポートする。
FIFO
順番通りに処理。最初に入ったキューを優先的に処理。
SQSの追加機能
Short Poling
キューが空の場合でも即時にリターンする。
Long Poling
キューが空の場合はタイムアウトまで待つ。
※Long polingとShort PolingはReceive Message Wait Timeで設定する。
0=Short Poling。最大は20まで。
Visibility Timeout
コンシューマーがキューからメッセージを受信して処理しても、そのメッセージはキューに残ったままです。
Amazon SQS では、メッセージが自動的に削除されません。
Amazon SQS は分散システムであり、接続の問題やコンシューマーアプリケーションの問題などが原因で、
コンシューマーが実際にメッセージを受信するという保証がないためです。
そのため、コンシューマーはメッセージを受信して処理した後、キューからメッセージを削除する必要があります。
メッセージが受信された直後は、メッセージはキューに残ったままです。
他のコンシューマーが同じメッセージを再処理しないように、Amazon SQS は可視性タイムアウトを設定しています。
Amazon SQS では、この時間内に他のコンシューマーが同じメッセージを受信したり処理したりすることはできません。
メッセージのデフォルトの可視性タイムアウトは 30 秒です。
最小値は 0 秒、最大スケールは 12 時間です。