OWN NEWS GATHER
← 戻る
AWS ML Blog

BMWグループ、1万4000超のクラウドアカウントを対象にしたコスト異常検知システムをAWS上に構築

要点

  • BMWグループは、社内で運用する14,000以上のクラウドアカウントを対象としたコスト異常検知システムの仕組みを公開した。

  • 月間約30億行に達する請求データを「アカウント・サービス・日」単位に集約し、Metaの時系列予測ライブラリ「Prophet」で支出のベースラインを算出している。

  • AWS Step Functionsと最大500並列のAWS Lambdaを活用した分散処理により、全アカウントの分析を約20分で完了させる。

  • サーバーレスアーキテクチャの採用により、全アカウントの日次分析にかかる計算コストを月額約50ドルに抑えている。

  • BMWグループは、同社の大規模なクラウド環境におけるコスト異常を自動検知する内製FinOpsシステム「CLEA(Cloud Efficiency Analytics)」の運用アーキテクチャをAWS公式ブログで明らかにした。同システムはパートナー企業のData Reply社と共同で開発されたもので、14,000を超えるクラウドアカウントの支出を日次で監視している。従来のダッシュボードによる事後確認から、機械学習による日次の能動的な異常検知とメール通知への刷新が図られた。

ダッシュボードから能動的な異常検知への転換

CLEAは当初、BI(ビジネスインテリジェンス)ツールのAmazon QuickSightを用いたダッシュボード群として構築され、従業員にクラウド支出の可視性を提供していた。しかし、ダッシュボードは過去に発生した事実を表示するものにとどまり、ユーザーが自発的に画面を開いたときにしか状況を把握できないという課題を抱えていた。

この課題を解消するため、CLEAは毎日自動で異常検知を実行し、支出が予測されたパターンから逸脱した際にアカウントの所有者へメールで直接アラートを送信する仕組みへと発展した。

月間30億行の請求データを日次粒度へ集約

監視対象となるデータは、AWSの請求詳細レポートである「AWS Cost and Usage Reports(CUR)」を主な情報源とし、BMWグループ内で利用されている他クラウド事業者の請求エクスポートデータも取り込んでいる。取り込まれる未加工の生データは、月間で約30億行、500列という膨大な規模にのぼる。

CLEAはこの生データを、「アカウントごと」「クラウドサービスごと」「1日単位」という統一された粒度へ集約する。請求データは1日のタイムラグ(T-1)を伴って到着するため、前日の支出実績が翌日に分析され、異常があれば即座に通知される。また、中途半端なデータによる誤検知を防ぐため、AWS CURの配信完了が確認された後にパイプラインが起動するようスケジュールされている。

1つのAWSアカウント内でAmazon EC2、Amazon S3、AWS Lambda、Amazon RDSの4サービスを利用していれば、日次で4本の時系列データが生成される。14,000アカウント全体では、監視対象となる「アカウント×サービス」の組み合わせは数十万通りに達する。

システム内では、365日分の履歴をもとに予測された1日あたりのコストを「期待支出(Expected spend)」、請求データに記録された実際のコストを「実際支出(Actual spend)」、そして実際支出から期待支出を差し引いた差分を「インパクト(Impact)」と定義し、インパクトがプラスになった場合に予算超過とみなして評価を行う。

Prophetとサーバーレス並列処理による高速分析

支出の基準値(ベースライン)の算出には、Meta社が開発したオープンソースの時系列予測ライブラリ「Prophet」が採用された。選定の理由として、設定の扱いやすさとコスト時系列データに対する安定した予測性能が挙げられている。モデルは、アカウントとサービスの組み合わせごとに過去365日分の日次コスト履歴を読み込み、加法的な季節性モデルを適用して学習を行う。

日次の処理全体の制御には「AWS Step Functions」が用いられている。処理の流れは以下の通りである。

  1. 準備用のAWS Lambda関数がアクティブなアカウントを検出し、その一覧をJSON形式でAmazon S3に出力する。
  2. Step Functionsの「Distributed Map(分散マップ)」機能を利用し、最大500個のAWS Lambda関数へ処理を並列に分散(ファンアウト)させる。
  3. 各Lambda関数が1つのアカウントに紐づく全サービス分の予測を実行する。

この並列分散アーキテクチャにより、14,000アカウント全体の日次予測処理は約20分で完了する。生成された予測結果は、12カ月間のローリング予測として利用されるほか、日ごとの異常検知の判定基準値として活用される。

月額50ドルの計算コストとモジュール設計

CLEAでは予測エンジンが疎結合なプラグイン構造として設計されている。入力形式(アカウント・サービスごとの日次コスト)と出力形式(信頼区間を含む日ごとの予測値)がインターフェースとして明確に定義されており、将来的に予測エンジン自体を別の仕組みへ差し替えることも可能となっている。

また、全面的にサーバーレス構成を採用したことで、14,000アカウントにおよぶ大規模な日次計算処理を行いながらも、コンピュートにかかるインフラ費用を月額約50ドル程度という極めて低い水準に抑えていると説明されている。

元URL