Amazon SQSの特徴と注意点について
はじめに
インフラエンジニアの北野です。
今回は、AWSのAmazon SQSについて記事にさせて頂きます。
SQSには2種類のキューがあり、使用するときはキューの特徴を把握したうえで、どちらを採用するかを検討し設計する必要があります。
今回はキューの特徴や使い方の注意点を調査したので、紹介いたします。
Amazon SQSとは
そもそもAmazon SQSとはどんなサービスかを簡単に説明すると、 コンポーネント間のメッセージの送受信を疎結合化してくれるサービスです。
イメージに近いのは、自宅の宅配ボックスですね。
宅配ボックスがあるおかげで、配達先の住人が不在でも、家に帰ってきたときに受け取れます。
SQSのおかげで送信側は、受信する側のコンポーネントの事は考えずに、
安心してメッセージの送信ができます。
キューの種類について
キューには、スタンダードとFIFOの2種類があります。
それぞれの特徴は以下の通りです。
スタンダード
スタンダートキューの特徴は以下となります。
ほぼ無制限のAPIコールをサポート
メッセージの送信は受信した順序が守られない
複数回送信される可能性がある
この特徴から、配信される側のアプリケーションは、 配信の順序が変わったり、二度受け取っても誤作動しないような作りにする必要があります。
イメージ図
FIFO
FIFOキューの特徴は以下となります。
毎秒300件のAPIコールで制限されている
同一のメッセージグループ内で、受信順序通りにメッセージを送信する
メッセージ重複排除IDを指定することで、メッセージの配信は一度となる
FIFOを選択したとき、メッセージグループIDと、メッセージ重複排除IDという値を設定する必要があります。
この値によって、順序の順守と複数回送信しないようSQS側で制御してくれます。
メッセージグループIDは、処理の順序を守りたい一連のリクエスト毎に同じ値にし メッセージ重複排除IDはユニークなものとするようにしましょう。
メッセージの配信順序が重要となるシステムの場合は、FIFOを選択することになりますが 毎秒300件の制約があります。
イメージ図
FIFO高スループットモード
FIFOの毎秒300件の制約では性能要件を満たせない場合、FIFO高スループットモードを有効にしましょう。
高スループットモードの特徴は以下となります。
毎秒3000件のAPIコールで制限されている
メッセージグループによって、異なるパーティションで処理される
パーティションごとに毎秒300件のAPIコールで制限されている
同一のパーティション内で、メッセージが送信または受信される順序は厳密に保持される
メッセージ重複排除IDを指定することで、メッセージの配信は一度となる
AWSのSQSのFIFO高スループットモードは、パーティションという箱のようなものをスケーリングして、 通常のFIFO(毎秒300件の処理が可能)に比べて10倍(毎秒3000件の処理が可能)の性能を出してくれるオプション機能となります。
このような特徴を持つため、高スループットモードの恩恵を受けるには、 FIFOの順序処理を守る必要が無い処理ごとにメッセージグループIDを違う値に設定しましょう。
ただし、パーティションはメッセージグループIDを基に決定され、
パーティション内のでFIFOの順序処理は守られますが、パーティション間での順序は守られません。
また、各パーティションは毎秒300件の処理が制限となります。
イメージ図
まとめ
今回は、SQSのキューに関して特徴を整理しました。
スタンダードの場合は、順不同、複数回配信の可能性がありますが、スループットは無制限。
FIFOは、順序が保証されますが、スループットは300/secとなります。
FIFO高スループットモードの制限は、3000/secとなりますが、順序が保証されるのは同一のメッセージグループIDが指定された場合のみ。
そして、同一のメッセージグループ内では、スループットは300/secとなります。
キューの種類ごとにややこしく一長一短あるので、システム要件に合わせて、うまく使分けていきましょう。
以上となります。最後まで読んでいただきありがとうございました。
《あわせて読みたい関連記事》
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/
PHOTO:UnsplashのK.T. Francis