![見出し画像](https://assets.st-note.com/production/uploads/images/98080485/rectangle_large_type_2_151d6ca51d083f331d4202326c65a9fd.jpeg?width=1200)
Amazon SQSの特徴と注意点について
はじめに
インフラエンジニアの北野です。
今回は、AWSのAmazon SQSについて記事にさせて頂きます。
SQSには2種類のキューがあり、使用するときはキューの特徴を把握したうえで、どちらを採用するかを検討し設計する必要があります。
今回はキューの特徴や使い方の注意点を調査したので、紹介いたします。
Amazon SQSとは
そもそもAmazon SQSとはどんなサービスかを簡単に説明すると、 コンポーネント間のメッセージの送受信を疎結合化してくれるサービスです。
イメージに近いのは、自宅の宅配ボックスですね。
宅配ボックスがあるおかげで、配達先の住人が不在でも、家に帰ってきたときに受け取れます。
SQSのおかげで送信側は、受信する側のコンポーネントの事は考えずに、
安心してメッセージの送信ができます。
キューの種類について
キューには、スタンダードとFIFOの2種類があります。
それぞれの特徴は以下の通りです。
スタンダード
スタンダートキューの特徴は以下となります。
ほぼ無制限のAPIコールをサポート
メッセージの送信は受信した順序が守られない
複数回送信される可能性がある
この特徴から、配信される側のアプリケーションは、 配信の順序が変わったり、二度受け取っても誤作動しないような作りにする必要があります。
イメージ図
![](https://assets.st-note.com/img/1676273532290-7AbzVa3zLZ.png?width=1200)
FIFO
FIFOキューの特徴は以下となります。
毎秒300件のAPIコールで制限されている
同一のメッセージグループ内で、受信順序通りにメッセージを送信する
メッセージ重複排除IDを指定することで、メッセージの配信は一度となる
FIFOを選択したとき、メッセージグループIDと、メッセージ重複排除IDという値を設定する必要があります。
この値によって、順序の順守と複数回送信しないようSQS側で制御してくれます。
メッセージグループIDは、処理の順序を守りたい一連のリクエスト毎に同じ値にし メッセージ重複排除IDはユニークなものとするようにしましょう。
メッセージの配信順序が重要となるシステムの場合は、FIFOを選択することになりますが 毎秒300件の制約があります。
イメージ図
![](https://assets.st-note.com/img/1676273555986-ifIFTD1srC.png?width=1200)
FIFO高スループットモード
FIFOの毎秒300件の制約では性能要件を満たせない場合、FIFO高スループットモードを有効にしましょう。
高スループットモードの特徴は以下となります。
毎秒3000件のAPIコールで制限されている
メッセージグループによって、異なるパーティションで処理される
パーティションごとに毎秒300件のAPIコールで制限されている
同一のパーティション内で、メッセージが送信または受信される順序は厳密に保持される
メッセージ重複排除IDを指定することで、メッセージの配信は一度となる
AWSのSQSのFIFO高スループットモードは、パーティションという箱のようなものをスケーリングして、 通常のFIFO(毎秒300件の処理が可能)に比べて10倍(毎秒3000件の処理が可能)の性能を出してくれるオプション機能となります。
このような特徴を持つため、高スループットモードの恩恵を受けるには、 FIFOの順序処理を守る必要が無い処理ごとにメッセージグループIDを違う値に設定しましょう。
ただし、パーティションはメッセージグループIDを基に決定され、
パーティション内のでFIFOの順序処理は守られますが、パーティション間での順序は守られません。
また、各パーティションは毎秒300件の処理が制限となります。
イメージ図
![](https://assets.st-note.com/img/1676273583348-PfiG4XYUhe.png?width=1200)
まとめ
今回は、SQSのキューに関して特徴を整理しました。
スタンダードの場合は、順不同、複数回配信の可能性がありますが、スループットは無制限。
FIFOは、順序が保証されますが、スループットは300/secとなります。
FIFO高スループットモードの制限は、3000/secとなりますが、順序が保証されるのは同一のメッセージグループIDが指定された場合のみ。
そして、同一のメッセージグループ内では、スループットは300/secとなります。
キューの種類ごとにややこしく一長一短あるので、システム要件に合わせて、うまく使分けていきましょう。
以上となります。最後まで読んでいただきありがとうございました。
《あわせて読みたい関連記事》
執筆者プロフィール:北野 啓史
ITベンダーで13年間インフラエンジニアとして金融、人材などのお客様のITシステムの開発に携わってきた。
SHIFTには2021年に入社し、現在はコンテナ基盤のインフラ設計・構築を担当している。
お問合せはお気軽に
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