はじめに
本記事は any Advent Calendar #2 「マルチテナントSaaSにおけるエンジニアリング大全」 Day9 の記事です。弊社anyのアドベントカレンダーをひとつ丸ごと占有して、ひとりアドベントカレンダーとして、筆者の「マルチテナントSaaSのエンジニアリング」への経験をすべてアウトプットしていくカレンダーです。
今日はマルチテナントにおける代表的な問題のひとつである、ノイジーネイバー問題について紹介します!🏄♂️
ノイジーネイバー問題ってなに?
ノイジーネイバー問題とは、マルチテナント環境において、あるテナント(隣人 = ネイバー)のリソース使用が他のテナントのパフォーマンスに悪影響を与える現象です。SaaS環境では複数の顧客が同一のインフラストラクチャを共有しているため、特定の顧客が過度にリソースを消費すると、他の全顧客のサービス品質が低下してしまいます。
https://learn.microsoft.com/ja-jp/azure/architecture/antipatterns/noisy-neighbor/noisy-neighbor
月初や月末に処理が集中するなど一般的なユーザ行動による傾向に加えて、マルチテナント環境でのワークロード(顧客の行動)はテナントごとに異なるため、リソース予測の難易度が高くなります。
例えば、
- あるテナントが大量のデータベースクエリを実行し、CPU使用率が急上昇
- 特定顧客の処理が大量のネットワークトラフィックを生成
- 特定のバグで無限ループやメモリリークが他テナントのメモリを圧迫する
のような状況が発生します。
下記の図で言えば、テナントAの処理が逼迫した結果、リソースを過剰に消費し、テナントBの処理が失敗してしまうような事象が、リソースを共有することで発生します。
https://neon.com/blog/noisy-neighbor-multitenant
ノイジーネイバーの検出は難しい
まずはノイジーネイバーを早期に検出することが問題の最小化に重要になります。そのためには、テナントごとのリソース使用状況を継続的に監視できるような整備をする必要があります。
ノイジーネイバー問題において、確認するべきは「どのテナントがリソースを圧迫しているか」です。これは一般的なメトリクスからは判断できないことがあります。例えば、特定のサーバのCPU利用率が高まっている場合、どのテナントによって、その事象が引き起こされているかを調査することは難しいです。
各社個別に工夫をこらす必要がありますが、弊社の例を紹介しましょう。Qastでは監視基盤においてDatadogを活用し、APMやログに「テナント名」を含めることで、トレースとしてメトリクスと同時に閲覧できるようにしています。
ノイジーネイバー問題の対策
対策1: 処理するインフラ環境自体を分離する
ノイジーネイバー問題に対する最も根本的な対策は、テナントごとにインフラ環境を分離することです。可能であれば、サイロモデルによる完全分離する方法があります。 この方式では、あるテナントがどれだけリソースを消費しても、他のテナントには一切影響しません。
しかしながら、マルチテナントSaaSという文脈においては、すべてのテナントをサイロモデルで運用するのは、コストと運用負荷の観点から難しい点も多く、アプリケーションレイヤでの対策が必須になるでしょう。
対策2: レートリミットとスロットリング
その次の対策としては、レートリミットやスロットリングといったガードレールを設定することが重要です。これらはリソース消費の上限を設定することで、特定のテナントがシステム全体を圧迫することを防ぐことができます。
例えば、テナントごとにAPIのRate Limitを設定する、処理のスパイクに耐えうるようにキャッシュ層を設けるなど、アプリケーション層で「処理を間引く」ことによって実現できます。
直近ではクラウドプロバイダー側がマルチテナントを前提とした機能を提供している場合も増えてきました。 2025年7月に発表されたAmazon SQSの公平キューは、マルチテナント環境におけるノイジーネイバー対策として活用できる機能です。メッセージグループIDをテナントIDに対応させることで、特定のテナントが大量のメッセージを送信している場合でも、他のテナントのメッセージが処理されるようになります。
さらに、ApproximateNumberOfNoisyGroupsというメトリクスが提供されており、メッセージグループが不均衡にリソースを消費している状況を検出できるようになりました。このように、ノイジーネイバー検出のためのマネージドな仕組みも徐々に充実してきています。
各リソースの性質に応じて、それぞれ対策を講じていく必要があるでしょう。
まとめ
ノイジーネイバー問題は、マルチテナントSaaSの運用において避けて通れない課題です。プールモデルでリソースを効率的に共有する限り、この問題と向き合い続ける必要があります。
クラウドプロバイダー側もマルチテナント環境を意識したサービスを提供し始めています。こうした新しい機能を積極的に活用することで、自前での実装負荷を減らしながら効果的な対策を講じていきましょう💪


