「AWSの四半期決算に貢献してはじめて、真のエンジニアと言えるでしょう。」

これはもちろん冗談ですが、多くの人に心当たりがあるため、業界全体でよく耳にします。クラウドはより安価でスケーラブルなインフラストラクチャを提供しましたが、実際には多くの組織に深刻な衝撃を与えています。クラウドプラットフォームはリソースを簡単に増やすことができますが、それを抑制するための制御機能はほとんど提供されていません。チームは、コストの支出先を追跡せずにワークロードを拡張し、コスト異常アラートがトリガーされる頃には、エンジニアはどのアプリケーションが急増を引き起こしたかを手動で特定しようと奔走します。こうした事後対応には時間がかかり、ストレスがたまり、平均解決時間(MTTR)が大幅に増加します。根本原因が見つかる頃には、問題はすでに「不明な支出」へと変化しており、予測と実際の偏差が膨らみ、コストが予算を上回ることになります。

New Relicでは、New Relic自体がクラウドに移行するにあたり、コストの管理方法を見直しました。ワークロードが拡大し、プラットフォームが拡張されるにつれて、クラウドコストが増加し始めました。責任を持って規模を拡大するには、リソースの管理をより賢明に行わなければいけません。そのために、パフォーマンスや信頼性を犠牲にすることなく、支出の原因を可視化し、リアルタイムでコストを確認する能力が必要でした。そこで、当社が最も得意とするオブザーバビリティに目を向けました。独自のプラットフォーム機能を活用し、サービス全体のコストパターンや非効率性を把握することで、クラウド運用の管理方法を根本から見直すFinOpsの仕組みとプロセスを構築しました。コストをパフォーマンスや信頼性と同様に観測可能なメトリクスとして扱うことで、1GBあたりのクラウド本番環境コストを60%削減し、この削減効果を数四半期にわたって維持しています。

本ブログでは、クラウドコストの削減をどのように実現したか、その過程で何を学んだか、そして同じ原則とツールを活用して、自社のクラウド支出をより効率的かつ予測可能にできるのかをご紹介します。

クラウドコストの削減は可視性から

クラウド支出を抑制するための最初の基本的なステップは、コストに関する洞察を得て、コスト管理を確立することです。測定できないものは管理できません。しかし、最新のクラウド課金モデルは本質的に事後対応型です。財務データは事後、つまりリソースが消費されてから数週間後に届くことが多いため、チームは予算超過を避けるために、迅速かつ短期的な解決策を見つけようとしますが、実際にコストを消費したソースコードやインフラストラクチャまで遡って追跡できない、という根本的な課題があります。クラウドの利用状況と実際のクラウド単価を直接把握できなければ、コストを予測することも、効果的に管理することもできずに「不明な支出」のままになってしまいます。。

New Relicでは、オブザーバビリティプラットフォームが導入済みのinfrastructureエージェントから計算、ストレージ、ネットワークリソース全体の詳細なテレメトリーを収集しているものの、このデータは課金データから分断されていることに気づきました。これはコンテキストにおける重大なギャップを表しています。つまり、エンジニアはシステムのパフォーマンスを把握できても、各リソースに結び付けられた重要なコストを把握できていなかったのです。その時点で、当社は、あらゆるメトリクスをその単位コストと自動的に相関させることができる、基本的な接続レイヤー、つまり「データブリッジ」を構築する必要があると確信しました。この相関関係により、当社のプラットフォームを強力な財務的な視点に簡単に変換し、サービス支出の要因、無駄な利用状況、コスト見積りをリアルタイムで表示できるようになります。そこで、CPU時間、メモリ使用量、I/Oレート、ネットワーク出力などのリソースメトリクスと、クラウドプロバイダーからの対応するコスト単位との相関関係を調べ始めました。そのとき、真の可視性が実現したのです。ダッシュボードには、レイテンシ、スループット、エラー率だけでなく、各サービスのコストフットプリントもそれらのメトリクスと併せて表示されるようになりました。以下はダッシュボードの例です。

このきめ細かな可視性により、すぐに企業全体で共通言語が確立されました。エンジニアは財務フットプリントによって自身の作業を評価でき、財務チームは予算の差異を技術的なイベントやリソースに即座に結び付けて把握できるようになりました。リアルタイム監視は大きな成果でしたが、真の効果はコスト意識を上流工程へ移行できたことにあります。

最適化に向けたコストのシフトレフト

財務的な視点を持つようになると、過去の支出分析から将来の無駄防止へと焦点が自然に移りました。FinOpsの全体的な取り組みはコストをシフトレフト化すること、つまり、コスト効率を開発ライフサイクルそのものに組み込むということです。当社のエンジニアは、優れた製品は同時に最もコスト効率の高い製品でなければならないことを本質的に理解していたため、この転換は容易に受け入れられました。当社の最適化では主に次の2つの実践に重点を置いています。

  1. コスト影響予測

    当社では、主要な導入の前に、各変更や新機能、製品リリースによる財務上の波及効果を把握して、コスト影響の予測を行っています。これは現在、すべての主要な機能開発における標準的な手順となっています。チームは相関コストテレメトリーを活用して、変更が実際にどれだけのリソースとコストを消費するのかを把握します。この可視性により、迅速なフィードバックループが作成され、チームはパフォーマンス要件を満たしつつ、最もコスト効率の高い設定を見つけられるようになります。財務チームは、新製品のリリース時に粗利益分析を実行することもできます。

  2. 効率化のための継続的な改善

    DevOpsチームはさまざまな実装を試して、最小コストで最大のパフォーマンスを実現できる手法を特定します。こうしたシンプルな最適化をすべてのプロジェクトに体系的に適用すると、大幅なコスト削減につながります。しかし、これは単なる適正化ではなく、反復的な分析です。トレースを使用することで、レイテンシの高いデータベースクエリや過剰なログ記録など、コストを押し上げる要因を特定します。チームは、さまざまなインスタンスタイプ、サービス、ストレージ層のコスト対パフォーマンス比をすばやく比較して、ワークロードに最適なリソースを選択します。

こうしたシンプルな最適化をすべてのプロジェクトに体系的に適用すると、大幅なコスト削減につながります。

コストをリアルタイムのKPIとして活用

FinOpsの取り組みの最終段階では、継続的な実行、つまり設計・開発作業による効率性の向上が本番環境の負荷下でも確実に維持されることが重視されました。そのため、コストをレイテンシやエラー率と同様に、ライブ運用メトリクスとして扱う必要がありました。このフェーズでは、いくつかの基本原則に基づいて取り組みを進めました。

  • まず、財務責任に結びついた明確な利用目標を設定しました。たとえば、当社のエンジニアリングチームでは、利用率KPIがプロジェクト、チーム、予算の所有者によって直接設定され、実行中のすべてのワークロードに対する財務責任が即座に確立されました。
  • 高い基準を維持するために、当社のチームは毎週レビューを実施し、特に利用率の低いプロジェクトを対象に、適正規模化、統合、廃止を行っています。この規律ある定期的な取り組みが、クラウド全体の利用率を向上させ、長期的なコスト効率を維持する原動力となりました。
  • こうして苦労して得た成果を守るために、予期せぬコスト急増に対する自律的なセーフティーネットが必要でした。そこでチームは、異常検知サービスを、構築した相関コストテレメトリーに直接統合しました。具体的には、制御不能な自動スケーリングイベントや突発的な設定ミスなど、潜在的なコスト異常が発生した場合、システムが事前にフラグ付けしサービス所有者にアラートを発するようになりました。この機能により、当社のチームは数日ではなく数分でコストの急上昇とその技術的な根本原因を結び付け、即座に介入して支出を抑えることが可能になりました。

結果が証明しています。この体系的なプロセスに従うことで、1GBあたりのクラウド本番環境コストを60%削減し、この削減効果を数四半期にわたって維持しています。

社内での成功からCloud Cost Intelligence(CCI)へ

取り組み方を改良し、持続的な成果が見られるようになると、当社は重要なことに気づきました。オブザーバビリティデータとコスト情報を結び付けるために社内で行っていた手作業こそが、まさに他の組織が必要としていたものだったのです。当社がヒアリングしたすべての企業に共通する盲点がありました。包括的なパフォーマンステレメトリーと詳細な請求レポートはあるものの、その両者をつなぐ手段がありませんでした。

そこで当社は、これらの機能をCloud Cost Intelligence(CCI)としてプラットフォームに組み込みました。CCIは、これまで手作業で行っていた作業を自動化します。クラウドプロバイダーからコストデータを取得し、それをアプリケーション、インフラストラクチャ、Kubernetesクラスタからのテレメトリーと相関させることができます。

また、社内で作成したものと同じ可視性をチームに提供します。毎月の請求書を待つ代わりに、実際のコストと過去48時間の推定コスト(テレメトリーの使用量に基づいて推定)の両方を含めた推移を示す、1時間ごとのコスト更新情報を入手できます。アプリケーション、サービス、地域、チーム別に支出を内訳することで、リソースが消費されている場所を正確に把握できます。導入を計画しているチームにとっては、履歴データと現在の使用パターンに基づいたコスト予測が可能になり、変更をリリースする前に財務上の影響を見積もることができます。また、CCIの異常アラート機能により、サービス内のコストの急上昇をエンジニアリングチームに通知します。エンジニアリングチームは、これらのアラートに迅速に対応してコストの急上昇を特定し、サービスの拡張方法を最適化できるようになりました。

以下のスクリーンショットは、CCIの概要ダッシュボードを示しています。ここでは、クラウド支出総額、コストの推移、地域別の内訳が、時間単位の見積もりと主なコスト変動とともに表示されています。

ここで、コストは単なる観測可能なシグナルの1つになります。他のパフォーマンスメトリクスと同様に、クエリ、可視化、そしてそれに基づいたアクションを実行できるシグナルです。