こんにちは、ささそらとです。
今回は、SQSのサービスについて記載していきます。
SQSを利用することで処理をキューイングすることができます。
私が利用した用途としましては、大量のデータが流れてきた場合に後続処理がスパイクしないように一旦キューに貯めて徐々に処理していくといった方法です。
他にも処理に時間がかかるものを一旦受付だけしてキューに貯めたあと、非同期で処理するといったこともしていました。
各AWSの制限であったり、または要件によって同期処理が難しい場合が多々あります。
そういった場合にSQSサービスを知っておけば、AWS設計の幅が広がるのではないでしょうか。
※以降の制限の記載は2020年1月時点のものになります
SQSについて
SQS(Amazon 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を使用すれば容易に実装が可能です。
一度、試しに利用してみてはいかかでしょうか。
コメント