費用のモニタリングと管理

Last reviewed 2023-09-08 UTC

Google Cloud アーキテクチャ フレームワークのこのドキュメントでは、Google Cloud のリソースの費用を追跡、管理するためのベスト プラクティス、ツール、手法について説明します。

このセクションのガイダンスは、クラウドにあるリソースをプロビジョニングまたは管理するユーザーを対象としています。

費用管理の重点分野

Google Cloud のリソースにかかる費用は、使用するリソースの量と、それらのリソースに対して課金されるレートによって決まります。

クラウド リソースの費用を管理するには、次の領域に注目することをおすすめします。

  • 費用の可視性
  • リソースの最適化
  • レートの最適化

費用の可視性

費用がビジネス成果に及ぼす影響を分析できるようにするため、実際にかかった費用と、リソースやサービスの料金がどのように発生しているかを追跡します。FinOps 運用モデルの使用をおすすめします。このモデルでは、組織全体で費用情報を可視化するために、次のアクションを提案しています。

  • 割り当て: すべての費用項目にオーナーを割り当てます。
  • レポート: 費用データを利用可能にし、利用可能かつ実用的なものにします。
  • 予測: 今後の費用の見積もりと追跡を行います。

リソースの最適化

クラウド リソースの数とサイズをワークロードの要件に合わせて調整します。可能であれば、マネージド サービスの使用や、アプリケーションの再設計を検討します。一般に、個々のエンジニアリング チームには、リソースのデプロイを最適化する機会と手法に関して、中央の FinOps(財務運用)チームよりも多くの背景があります。FinOps チームが個々のエンジニアリング チームと連携して、組織全体に適用できるリソース最適化の機会を特定することをおすすめします。

レートの最適化

FinOps チームは多くの場合、レートの最適化の決定を一元的に行います。個々のエンジニアリング チームは、中央の FinOps チームと連携して、予約による大幅割引、確約利用割引、Spot VM、定額料金、使用量と契約による割引を受けることをおすすめします。

設計に関する推奨事項

このセクションでは、費用のモニタリングと管理を行うために使用できるアプローチについて説明します。

請求とリソース管理を統合する

Google Cloud で請求とリソースを効率的に管理するには、組織で単一の請求先アカウントを使用し、内部チャージバックの仕組みを使用して費用を割り当てることをおすすめします。互いに影響を及ぼさないエンティティによって緩く結びついている企業グループや組織では、複数の請求先アカウントを使用します。たとえば、販売代理店は顧客ごとに個別のアカウントが必要になることがあります。別々の請求先アカウントを使用すると、国の税制を遵守することもできます。

もう一つのおすすめの方法は、管理するプロジェクトをすべて組織に移行することです。Resource Manager を使用して、次の目標の達成に役立つリソース階層を構築することをおすすめします。

  • 各リソースとその直接の親の関係に基づいて、リソース所有権の階層を確立します。
  • アクセス ポリシーと費用割り当てタグまたはラベルを、組織のリソースにアタッチし、継承する方法を制御します。

また、使用量に応じて、共有サービスの費用を比例配分することをおすすめします。ビジネス目標や優先事項の変更に基づいて、定期的に費用割り当てパラメータを確認し、調整します。

タグまたはラベルを使用して費用の追跡と割り当てを行う

タグとラベルは、Google Cloud リソースにアノテーションを付ける場合に使用できる 2 つの異なる方法です。タグにはラベルよりも多くの機能があります。たとえば、サポートされているリソースにタグが付いているかどうかを条件とする Identity and Access Management(IAM)ポリシーを作成することで、リソースに対するきめ細かい制御を実装できます。また、リソースに関連付けられたタグは、階層内のすべての子リソースに継承されます。タグとラベルの違いについては、タグの概要をご覧ください。

費用の割り当てと追跡に関する新しいフレームワークを構築する場合は、タグを使用することをおすすめします。

必要な粒度で費用データを分類するには、組織のチャージバック メカニズムに適したタグ付けスキーマまたはラベル付けスキーマを確立します。これにより、費用を適切に割り当てることができます。タグは、組織レベルまたはプロジェクト レベルで定義できます。プロジェクト レベルでラベルを割り当て、デフォルトですべてのプロジェクトに適用できる一連のラベルを定義することができます。

タグ付けとラベル付けの異常とラベルのないプロジェクトを検出して修正するプロセスを定義します。たとえば、Cloud Asset Inventory から、プロジェクト内のすべてのリソースのインベントリ(.csv ファイル)をダウンロードし、インベントリを分析して、タグやラベルが割り当てられていないリソースを特定できます。

共有リソースとサービス(一般的なデータストア、マルチテナント クラスタ、サポート サブスクリプションなど)の費用を追跡するには、特別なタグやラベルを使用して共有リソースを含むプロジェクトを特定することを検討してください。

請求のアクセス制御を構成する

Cloud Billing へのアクセスを制御するには、請求先アカウント管理者のロールを、請求連絡先情報を管理するユーザーのみに割り当てることをおすすめします。たとえば、財務、会計、運用部門の従業員はこのロールを必要とする可能性があります。

課金サポートの単一障害点を回避するため、請求先アカウント管理者ロールを複数のユーザーまたはグループに割り当てます。サポートには、請求先アカウント管理者ロールを持つユーザーのみ問い合わせることができます。詳細なガイダンスについては、Cloud Billing のアクセス制御の例重要なロールをご覧ください。

課金へのアクセスを管理するには、次の構成を行います。

  • 請求先アカウントをプロジェクトに関連付けるには、メンバーに、請求先アカウントに対する請求先アカウント ユーザーのロールとプロジェクトに対するプロジェクト支払い管理者のロールが必要です。
  • チームが請求先アカウントを手動でプロジェクトに関連付けるには、組織レベルで、プロジェクト支払い管理者のロールと請求先アカウント ユーザーのロールを請求先アカウントに割り当てます。プロジェクト作成中に請求先アカウントの関連付けを自動化するには、プロジェクト支払い管理者のロールと請求先アカウント ユーザーのロールをサービス アカウントに割り当てます。請求先アカウント作成者のロールを制限するか、このロールのすべての割り当てを削除することをおすすめします。
  • プロジェクトの課金ステータスの意図しない変更による停止を防ぐために、プロジェクトと請求先アカウント間のリンクはロックできます。詳細については、プロジェクトと請求先アカウント間のリンクを保護するをご覧ください。

請求レポートを構成する

追跡する必要がある主要な指標のデータが得られるように請求レポートを設定します。次の指標を追跡することをおすすめします。

  • 費用の傾向
  • 最大の課金者(プロジェクト別およびプロダクト別)
  • 費用が異常な領域
  • 次のような組織全体にわたる主要な分析情報:
    • 異常検出
    • 傾向(時系列)
    • 設定されたパターンで発生する傾向(たとえば、月次)
    • 内部ワークロードと外部ワークロードの間の費用比較とベンチマーク分析
    • ビジネスケースの追跡と価値実現(例: クラウド費用とオンプレミス リソースの費用の比較)
    • Google Cloud の請求が想定どおり正確であることの検証

BigQuery Billing Export を使用して費用レポートのカスタマイズと分析を行い、Looker Studio を使用して費用データを可視化します。予測ツールを使用して、実際の費用の傾向と支出の予測額を評価します。

リソースの使用量と費用を最適化する

このセクションでは、Google Cloud サービス全体のリソースの使用と費用を最適化するためのベスト プラクティスについて説明します。

過剰な支出を防ぐため、すべてのプロジェクトでデフォルトの予算とアラートに上限のしきい値を構成することを検討してください。予算内を守るため、次の操作を行うことをおすすめします。

  • 無条件に使用量の上限を設定する必要があるプロジェクト(トレーニング プロジェクトやサンドボックス プロジェクトなど)の場合、予算とアラートを構成します。

  • 予算は、追跡する必要がある財務予算に基づいて定義します。たとえば、部門にクラウドの予算全体がある場合、Google Cloud 予算のスコープには、追跡する必要のある特定のプロジェクトが含まれるように設定します。

  • 予算を確実に管理するため、ワークロードを所有するチームに予算とアラートの構成を委任します。

費用を最適化するためには、次のこともおすすめします。

  • ビジネスへの影響が最小限またはまったくない場合の API の使用の上限を設定します。上限の設定は、サンドボックス プロジェクトやトレーニング プロジェクト、予算が固定されているプロジェクト(BigQuery でのアドホック分析など)で役立ちます。上限の設定によって、関連するプロジェクトからすべてのリソースとデータが削除されるわけではありません。
  • 割り当てを使用して、リソースのデプロイを抑制するハードリミットを設定します。割り当てにより、コストを管理し、リソースの悪意のある使用や不正使用が防止されます。割り当ては、リソースタイプとロケーションごとにプロジェクト レベルで適用します。
  • おすすめハブで費用最適化の最適化案を確認して実装します。
  • 確約利用割引(CUD)を購入することで、必要なリソース量を予測可能なワークロードの費用を削減できます。

ツールと手法

クラウドのオンデマンド プロビジョニングと従量課金制の特性は、IT 費用の最適化に役立ちます。このセクションでは、Google Cloud が提供するツールと、クラウド内のリソースの費用を追跡および管理するために使用できる手法について説明します。これらのツールと手法を使用する前に、Cloud Billing の基本コンセプトを確認してください。

請求レポート

Google Cloud では、Google Cloud コンソール内に請求レポートが用意されており、現在の費用と予測費用を確認できます。請求レポートを使用すると、費用データを 1 ページに表示し、傾向を見つけて分析できます。また、期間終了の費用を予測し、必要に応じて是正措置を取ることができます。

請求レポートには次のデータが含まれます。

  • 特定の期間の費用と費用の傾向。次のように整理されています。
    • 請求先アカウント別
    • プロジェクト別
    • プロダクト別(Compute Engine など)
    • SKU 別(静的 IP アドレスなど)
  • 割引クレジットまたはプロモーション クレジットを除外した場合の潜在的費用
  • 予測される費用

BigQuery へのデータのエクスポート

請求レポートを BigQuery にエクスポートし、データ(ラベルまたはタグで分類されたデータなど)の詳細なビューや履歴的なビューを使用して費用を分析できます。BigQuery ML を使用すると、より高度な分析を行うことができます。Cloud 請求先アカウントを作成するとき、BigQuery へ請求レポートをエクスポートできるようにすることをおすすめします。BigQuery データセットには、Cloud Billing エクスポートの設定日からの課金データが含まれます。エクスポートを有効にする前の期間のデータは、データセットに含まれません。

費用データを可視化するには、BigQuery と統合するカスタム ダッシュボードを作成します(テンプレートの例: LookerLooker Studio)。

タグとラベルは、エクスポートされた課金データをフィルタリングするための条件として使用できます。課金データのエクスポートに含まれるラベルの数には上限があります。1 時間で最大 1,000 個のラベルマップが保持されます。請求書の PDF や CSV にラベルは表示されません。ビジネス ユニット、内部チャージバック ユニット、他の関連するメタデータを示すタグまたはラベルを使用して、リソースにアノテーションを付けることを検討してください。

課金のアクセス制御

特定のリソースに Identity and Access Management(IAM)ポリシーを定義することで、それらのリソースの Cloud Billing へのアクセスを制御できます。Cloud Billing へのアクセスを許可または制限するには、IAM ポリシーを組織レベル、請求先アカウント レベル、またはプロジェクト レベルで設定します。

請求とリソース管理のアクセス制御は、職務分散の原則に従います。各ユーザーは、自分のビジネスロールに必要な権限のみを持ちます。組織管理者ロールと請求先管理者ロールでは権限が異なります。

請求関連の権限を請求先アカウント レベルと組織レベルで設定できます。よく使用されるロールは、請求先アカウント管理者、請求先アカウント ユーザー、請求先アカウント閲覧者です。

請求書発行を使用するか、予備のお支払い方法を構成することをおすすめします。請求とお支払いに関する連絡先と通知の設定を維持します。

予算、アラート、割り当て

予算は、予定支出額に対する実際の Google Cloud の費用を追跡するのに役立ちます。予算を作成する際に、実際の支出額または予測される支出額が定義されたしきい値を超えたときにメール通知をトリガーするようにアラートルールを構成できます。また、予算を使用して費用管理レスポンスを自動化することもできます。

予算によってアラートがトリガーされ、リソースの使用量と費用の傾向が通知されます。また、費用を最適化するためのアクションを行うように促すこともできます。ただし、実際の費用が予算またはしきい値に達した場合でも、予算によってサービスの使用や課金が妨げられることはありません。費用を自動的に制御するには、予算通知を使用して、プロジェクトの Cloud Billing をプログラム的に無効にします。API の使用量を制限して、定義した使用量のしきい値に達すると、それ以上費用が発生しないようにすることもできます。

請求先アカウントとプロジェクトのアラートを構成できます。アカウントには少なくとも 1 つの予算を構成します。

事前に定義されたレベルを超えるリソースのプロビジョニングを防ぐため、または特定のオペレーションの量を制限するために、リソースや API レベルで割り当てを設定できます。割り当ての使用例を次に示します。

  • 1 秒あたりの API 呼び出し数を制御する。
  • 作成する VM の数を制限する。
  • BigQuery で 1 日にクエリされるデータ量を制限する。

プロジェクト オーナーは、Service Usage API を使用して、特定の割り当て上限に対してユーザーによるオーバーライドを適用することで、割り当て上限に対して課金される割り当て量を減らすことができます。詳細については、コンシューマー割り当てオーバーライドの作成をご覧ください。

ワークロードの効率性の向上

Google Cloud のワークロードを費用対効果の高いものにするには、次の方法をおすすめします。

  • プロダクトの効率を向上させることで、リソースの使用を最適化する。
  • リソースの請求レートを減らす。
  • リソースの使用量と費用を管理して制限する。

費用削減の手法と Google Cloud 機能を選択する場合は、次のグラフに示すように、必要な作業と想定される費用を考慮してください。

費用の最適化戦略: 費用削減の図

上のグラフに示されている手法の概要は次のとおりです。

  • 次の手法では、少ない労力で高い節約を実現できます。
    • 確約利用割引
    • 自動スケーリング
    • BigQuery スロット
  • 次の手法では、中程度から高程度の労力で大幅な費用削減を実現できる可能性があります。
    • Spot VM
    • サーバーレス アプリケーションまたはコンテナ化アプリケーションとして再設計
    • マネージド サービスを使用するためにプラットフォームを再構築
  • 次の手法では、適度な労力で中程度の費用削減を実現できる可能性があります。
    • カスタム マシンタイプ
    • Cloud Storage ライフサイクル管理
    • サイズ適正化
    • アイドル状態のリソースの再利用

次のセクションで説明する手法は、ワークロードの効率性の向上に役立ちます。

リファクタリングまたは再設計

Google Cloud プロダクトを使用するようにワークロードをリファクタリングまたは再設計すると、大幅なコスト削減を実現できます。たとえば、ゼロへのスケーリングをサポートするサーバーレス サービス(Cloud Storage、Cloud Run、BigQuery、Cloud Functions など)に移行すると、効率性を高めることができます。これらのプロダクトの費用を評価して比較する場合は、料金計算ツールを使用できます。

サイズ適正化

この手法は、インフラストラクチャの規模が意図した用途と一致するかどうか確認する際に役立ちます。この方法は、主に、基盤となるインフラストラクチャの料金を支払う Infrastructure as a Service(IaaS)ソリューションに適しています。たとえば、50 個の VM をデプロイしたが、VM は完全には使用されておらず、ワークロードは少ない(または小さい)VM で効率的に実行できるとします。この場合、一部の VM を削除またはサイズ変更できます。Google Cloud にはサイズの適正化に関する推奨事項が用意されています。小規模な VM をプロビジョニングすることによって、パフォーマンスに影響を及ぼすことなく、費用削減の機会を見つけ出すことができます。サイズ適正化は、本番環境にリソースをデプロイした後よりも設計フェーズで行うほうが簡単です。

自動スケーリング

使用するプロダクトが動的自動スケーリングをサポートしている場合は、自動スケーリングを利用して費用とパフォーマンスの面でメリットが得られるようにワークロードを設計することを検討してください。たとえば、コンピューティング負荷の高いワークロードの場合、Compute Engine でマネージド インスタンス グループを使用するか、アプリケーションをコンテナ化して、Google Kubernetes Engine クラスタにデプロイできます。

Active Assist の推奨事項

Active Assist は、データ、インテリジェンス、ML を使用してクラウドの複雑さを少なくし、管理上の負担を軽減します。Active Assist を使用すると、クラウド トポロジのセキュリティ、パフォーマンス、費用を簡単に最適化できます。費用と使用量を最適化するためのインテリジェントな推奨事項が提供されます。こうした推奨事項は、すぐに費用を削減して大幅に効率化するために使用できます。

Active Assist によって提供される推奨事項の例を次に示します。

  • Compute Engine リソースの適正化: VM インスタンスのサイズを変更して、使用量に基づいた費用とパフォーマンスに合わせて最適化します。アイドル状態の VM永続ディスクを特定して削除またはバックアップすることで、インフラストラクチャの費用を最適化します。
  • 確約利用割引(CUD): Google Cloud は、過去の使用状況を分析し、ワークロードに最適なコミットメント量を見つけて、費用削減のためのわかりやすく実行可能な推奨事項を提案します。詳細については、確約利用割引 Recommender をご覧ください。
  • 放置されたプロジェクト: 組織内で放置されたプロジェクトを見つけて、削除または回収します。詳細については、放置されたプロジェクト Recommender をご覧ください。

完全なリストについては、Recommender をご覧ください。

次のステップ