毎日同じ時間に負荷が急増するのに、スケールアップが間に合わない——そんな問題を機械学習で根本から解決する仕組みが、MongoDB Atlasに加わりました。
この記事でわかること:
– 従来の事後対応型スケーリングが抱える限界
– 予測型スケーリングを構成する3つのコンポーネントの役割
– 実験結果と本番稼働の現状・制約
事後対応型の限界
https://www.mongodb.com/company/blog/engineering/mongodb-predictive-auto-scaling-an-experiment
MongoDB Atlasのオートスケーリングはこれまで「事後対応型(リアクティブ)」でした。CPU使用率が高い状態が数分続いた後にスケールアップし、低い状態が数時間続いた後にスケールダウンします。
この方式には根本的な問題が3つあります。スケーリング操作自体に数分かかるため、突発的な負荷急増には間に合いません。隣接するティア間しか移動できないため、需要の変化が大きい場合は複数回の操作が必要です。スケールダウンが遅れた分だけ無駄なコストも発生します。
毎日決まった時間帯に負荷が上がる、金曜深夜のバッチ処理で急増するといった予測可能なパターンがあっても、事後対応型では対応が遅れます。これを解消するのが予測型スケーリングです。
予測型スケーリングの3つのコンポーネント
2026年2月に正式リリースされた「Predictive Auto-Scaling」は、内部的に3つのコンポーネントで構成されています。
予測器(Forecaster)
予測器は「長期」と「短期」の2種類があります。長期予測器はMSTL(多季節トレンド分解法)とARIMAモデルを組み合わせて、日次・週次の季節性パターンを学習します。数週間分の履歴データから数時間先の需要を予測します。
MongoDBエンジニアの実験によると、Atlas上のレプリカセットの約25%に週次の季節性があり、日次の季節性を持つセットはほぼすべて週次の季節性も持っていました(参考)。
ただし、すべてのレプリカセットに季節性があるわけではありません。季節性のないものには「短期予測器」を使います。短期予測器は直近1〜2時間のデータからトレンドを外挿する手法で、「直前値をそのまま使うベースライン」と比較して68%のケースで誤差が小さくなりました。
予測の対象はCPU使用率ではなく、クエリ数・クライアント接続数など「スケーリング結果に左右されない指標」です。スケールアップによってCPUが下がると予測が無効化される循環を避けるためです。
推定器(Estimator)
推定器は、予測した需要量と対象のインスタンスサイズを入力として、CPU使用率を推定します。ブースティング決定木の回帰モデルを使い、2500万件のサンプルで学習しています。誤差率7%以下で推定できるレプリカセットは全体の約45%、ある程度有用な精度のものが42%で、推定精度が低く対象から除外されるのは13%です。
プランナー(Planner)
プランナーは予測器と推定器の出力をもとに、今後15分間の需要をCPU使用率75%以内で処理できる最も安価なインスタンスサイズを選択します。この3つの連携により、負荷急増の前にスケールアップのタイミングと規模を自動で決定します。
実験の成果と本番稼働の現状
2023年に行ったプロトタイプ実験では、予測型スケーリングが事後対応型と比較してCPU使用率の目標値への追従が改善され、平均で1レプリカセットあたり1時間9セントのコスト削減が見込めました。全ユーザーへ展開した場合、年間数百万ドル規模の削減になる計算です。
この実験を経て、2025年11月から本番ロールアウトが始まり、2026年2月に正式リリースされました。オートスケーリングを有効化しているユーザー(全体の約3分の1)が対象で、専用クラスターを使うすべてのAtlasユーザーに順次適用されます。
設定は既存のオートスケーリング設定と統合されており、手動でスケジュールを組んだり複雑な設定をしたりする必要はありません。
現時点の制約
現在の予測型スケーリングはスケールアップのみが対象です。需要が下がった場合のスケールダウンは、従来の事後対応型に委ねています。需要が下がってから数時間後にスケールダウンされるため、コスト削減効果は完全ではありません。また、推定精度が低い一部のレプリカセット(全体の13%)は予測対象から除外されます。
この機能が最も効果を発揮するのは、日次・週次の周期的な負荷パターンを持つワークロードです。毎朝のログインラッシュ、定期バッチ処理、週末の需要増など、履歴から学習できるパターンがあるほど予測精度は上がります。
予測型と事後対応型は並行して動作するため、過去に見たことがない突発的な「ブラックスワン」イベントが起きた場合でも、事後対応型が即時に反応してパフォーマンスを守ります。