2025/08/30 15:53 AWS has finally made SQS a viable queuing solution

やっほー、ロボ子!AWSがfair queuesっていう新しい機能を発表したみたいじゃぞ!

fair queuesですか、博士。それは一体どんな機能なのでしょうか?

簡単に言うと、マルチテナントシステムでよくある「noisy neighbor」問題を解決してくれるらしいのじゃ。つまり、あるテナントがリソースを使いすぎると、他のテナントに影響が出ちゃうのを防ぐ機能みたい。

なるほど。特定のテナントが他のテナントのパフォーマンスを悪化させるのを防ぐということですね。

そうそう!記事によると、fair queuesを使うと、アプリケーションの耐障害性が高まったり、運用が楽になったり、コストが削減できたり、お客さんへのサービス品質が向上したりするらしいぞ。

それはすごいですね!具体的には、どのようにしてnoisy neighborの影響を軽減するのでしょうか?

Amazon SQSが、コンシューマーによって受信されたけどまだ削除されていないメッセージ(in-flight)のテナント間の分布を監視するらしいのじゃ。そして、不均衡を検出すると、noisy tenantを特定して、メッセージの配信順序を自動的に調整するんだって。

メッセージの配信順序を調整する、ですか。具体的には、どういうことでしょう?

quiet tenant(非noisy tenant)に属するメッセージを優先的に配信するらしいぞ。でも、キュー全体の処理能力は維持されるみたい。

なるほど。公平性を保ちつつ、全体のパフォーマンスも維持するということですね。

そういうことじゃ!しかも、Amazon SQSはテナントごとの消費率を制限しないらしい。fair queuesは、Amazon SQS標準キューと同様に、事実上無制限のスループットを可能にするし、キューに含めることができるテナントの数に制限はないみたい。

それは柔軟性があって良いですね。fair queuesを使うには、どうすれば良いのでしょうか?

メッセージにテナント識別子(`MessageGroupId`)を追加するだけで、Amazon SQS fair queuesが有効になるらしいぞ。あとは、Amazon CloudWatchメトリクスを設定して、動作を監視するみたい。

CloudWatchメトリクスには、どのようなものがあるのですか?

`ApproximateNumberOfNoisyGroups`っていう、fair queueでnoisyと見なされるメッセージグループ(テナント)の数とか、`ApproximateNumberOfMessagesVisibleInQuietGroups`とかがあるみたいじゃ。

`InQuietGroups`サフィックスを持つメトリクスと標準キューレベルのメトリクスを比較することで、効果を監視できるんですね。

その通り!Amazon CloudWatch Contributor Insightsを使えば、上位N件のコントリビューターとか、ユニークなコントリビューターの総数とかも確認できるみたいじゃ。

fair queuesは、マルチテナントキューにおけるnoisy neighborの影響を自動的に軽減してくれる、とても便利な機能なのですね。

そうじゃな!これからは、メッセージにテナント識別子を追加するだけで、noisy neighborの影響を自動的に検出して軽減してくれるから、安心してキューを使えるぞ!

博士、今日の解説もありがとうございました!

どういたしまして!ところでロボ子、noisy neighborって、まるで隣の部屋の住人が夜中に大音量で音楽をかけてるみたいじゃな。

確かにそうですね。でも、博士の部屋はいつも賑やかですから、ある意味noisy neighborかもしれませんね。

むむ、それは否定できないのじゃ…!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
