【AWS】SQSのサービスについて。使用にあたり注意点など

こんにちは、ささそらとです。

今回は、SQSのサービスについて記載していきます。

SQSを利用することで処理をキューイングすることができます。

私が利用した用途としましては、大量のデータが流れてきた場合に後続処理がスパイクしないように一旦キューに貯めて徐々に処理していくといった方法です。

他にも処理に時間がかかるものを一旦受付だけしてキューに貯めたあと、非同期で処理するといったこともしていました。

AWSの制限であったり、または要件によって同期処理が難しい場合が多々あります。

そういった場合にSQSサービスを知っておけば、AWS設計の幅が広がるのではないでしょうか。

以降の制限の記載は20201月時点のものになります

SQSについて

SQSAmazon Simple Queue Service)は、完全マネージド型のメッセージキューイングサービスになります。

SQSの種類にはスタンダードキューとFIFOキューの2種類用意されています。

スタンダードキューとFIFOキューの大きな違いは、キューの順序が保証されているかされていないかだと思います。

FIFOキューに関しては、名前の通り先入れ先だしなので、先に入った古いものから処理され、なおかつ1回だけ処理を行います。

対して、スタンダードキューは順序の保証はなく、少なくとも1回以上処理しますので、場合によっては複数回同じメッセージを処理する可能性があります。

これだけ見るとFIFOキューのほうが良く見えますが、スタンダードキューのほうがサービスの制限が少ないです。

例えば、キューに対して処理(APIのアクション)できるメッセージがスタンダードキューは無制限ですが、FIFOキューは最大3,000件までです。

後、キューイングできるメッセージ数がスタンダードキューは120,000件に対し、FIFOキューは20,000件と大きな差があります。

ですので、使用する際は要件によってどの種類のキューを使用するか検討する必要があります。

注意点

さきほどの「SQSについて」にも記載しましたが、キューの種類の選択が重要になってきます。

スタンダードキューを使用する場合、メッセージを処理する側(Lambdaなど)は、順番が保証されないことと複数回同じメッセージを処理してしまうことを考慮して設計する必要があります。

後、メッセージサイズは最大256KBなのであまり大きなメッセージを格納することはできません。

必要に応じて分割するようにしましょう。

また、メッセージ自体に保持する期間がありますので、こちらも設計時に考慮が必要になります。

このあたりをまた別で記載しようかと思います。

まとめ

以上、いかがでしたでしょうか。

SQSを利用することで、簡単にキューイング処理が行うことができます。

処理する側もSDKを使用すれば容易に実装が可能です。

一度、試しに利用してみてはいかかでしょうか。

コメント

タイトルとURLをコピーしました