見出し画像

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となります。

キューの種類ごとにややこしく一長一短あるので、システム要件に合わせて、うまく使分けていきましょう。

以上となります。最後まで読んでいただきありがとうございました。


《あわせて読みたい関連記事》


執筆者プロフィール:北野 啓史
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:UnsplashK.T. Francis