AmazonのSimple Queue Service (SQS)では、FIFO(先入れ先出し)キューが最近追加され、「メッセージが確実に1回だけ処理され、送信された順番に処理され、重複処理されないこと」が保証される。AWSはこの新しいキュータイプをUS East (Ohio) リージョンおよびUS West (Oregon) リージョンで展開しており、「2017年の早い時期に他の多くの地域で利用可能にする予定」である。
Amazon SQSについては「高速で、信頼性の高い、スケーラブルで、完全なマネージドメッセージキューサービスであり、クラウドアプリケーションのコンポーネントと分離するよう設計されており、どんな大容量のデータも送信でき、その際、メッセージを失うことなく、また他のサービスが常に利用できることが要求されることもない」と説明されている。
したがって、サービスの注目すべき特徴は、ユーザが無制限のキューを作成する限り、「標準」キューのスケーリングについて制限が事実上存在しないことであり、各キューはデフォルトで「ほぼ無制限のスループット」を提供する。ただし、この簡単なスケーリングモードでは、メッセージ処理アーキテクチャは、順序についてはベストエフォートであることと、少なくとも1回は配信されるが2回以上配信されることもあることを許容しなければならない。
これらの標準的なSQSキューは現在、新しいFIFOキュータイプによって補完される。これは、無制限のスケーリングと引き換えに、より強力なメッセージ順序付けと処理保証を提供するものである。これは「FIFOアプリケーションは1秒間に10メッセージ以下であり、それほどスループットが高くない」という顧客に声に基づいている。
- 先入れ先出し配信:メッセージが送信され、受信される順序を厳密に保存される。
- 正確に1回の処理:メッセージは1回配信され、コンシューマが処理するか削除するまでは利用可能なままである。5分間の重複排除期間中に、キュー内に重複が発生することはない。
- 限られたスループット:毎秒300トランザクション(TPS)。
根本的なアーキテクチャ上のトレードオフと、その結果としての制約は、技術ブログの記事で詳細に説明されており、どのようにしてAmazon SQS FIFO APIが動作するかについて説明されている。著者は、「多くのアプリは、SQSの従来からあるスーパースケーラブルな1回以上のメッセージ処理でうまくいく」一方で、「刻々と変化する価格」や「対話型シェルセッションでのコマンド」など順序や、正確に1回の処理が必要となるユースケースもあると強調している。
FIFOキューのデフォルト設定は、「ネットワーク接続が一度に数分間繋がらなくなることがなく、メッセージに一意の識別子がある」ユースケースのほとんどで、厳密な順序付けと正確に1回の処理を行うのに適しているはずである。より詳細な要件によって、メッセージグループ(同じグループに属する各メッセージは順番に処理される)や、専用の重複排除ID(そうでなければ、デフォルトはメッセージ内容のSHA256ハッシュ)を容易に実現できる。
マイクロソフトAzureのService BusもFIFOのメッセージ順序と、正確に1回の配信をオプションで保証する。対照的に、Google Cloud PlatformのCloud Pub/Subサービスは、FIFOメッセージ順序と正確に1回の配信のどちらもサポートしておらず、Googleは「実際に厳密な順序付けを必要とするユースケースはほとんどない」と主張している。
Amazon SQSのドキュメントでは、FIFOキューについての専用セクションを含む開発者ガイドを特集しており、標準キューからの移行時のチェックリストやAPIリファレンスが提供されている。別にFAQもある。SQSはAPIリクエストごとの課金であり(メッセージ毎ではない:1回のリクエストには、最大10メッセージを含めることができる)、新しいFIFOキューは、以前の標準キューの価格と同じような価格である。ちなみに、標準キューは以前よりも20%安い価格となっている。サポートはAmazon SQSを通して提供される。
Rate this Article
- Editor Review
- Chief Editor Action