2022年1月14日
FinOps
クラウドのコストには、かなり多くの人とチームが関係します。開発者、予算担当者、財務担当者など、全員が無駄な部分を見落とさないようにする必要があります。コストの分析と最適化は、成功のための最重要課題です。Harness CCMでそれを実現する方法を見てみましょう。
基本的に、クラウドのコスト管理は、シンプルな3ステップのプロセスです。コストの分析、最適化、そして管理です。クラウドによって、チームは迅速に行動し、最新のテクノロジーとサービスを活用して、これまでにないスピードでイノベーションを起こすことができるようになりました。開発者は最適化を好みます。コスト中心の考え方を身につけ、コストを単なる境界条件として最適化することで、財務チームとエンジニアリングチームが効率的に運用できるようになります。最適化するためには、開発者、財務チーム、クラウドの予算担当者、および利害関係者が、さまざまなパブリッククラウドから得られるコストを可視化する必要があります。
開発者は、自分が担当するマイクロサービス群のコストを正確に把握したいのです。さらに、潜在的な無駄がある正確な場所と、信頼できるお勧めの対策を見たいと考えています。そして、クラウドの予算担当者は、自分が担当するリソースのコストと、ガバナンスの守る範囲を確認したいのです。一方、財務担当者は、全体的なデータを細かく分類して、予約に関する情報に基づいた意思決定を行い、将来のコストを正確に計画し、モデル化したいと考えています。しかし、どうすればよいのでしょうか?
Harness CCM Perspectivesは、ビジネスニーズにとってより意味のある方法でリソースを分類できます。マルチクラウドのコストデータをまとめて表示し、ガバナンスを柔軟に管理して、コンテキストに基づく最適化の機会を提供します。
Harness Custom Cloud Cost Perspectivesは、ルールを追加するだけで、ユーザーが所有または管理するデータを表示できるようにします。上の例では、特定のユーザーが複数のクラウドにまたがるリソースを所有しているマルチクラウドシナリオを想定しています。パースペクティブビルダーに3つの簡単なルールを追加することで、クラウド上の製品別に分類されたコストのクイックプレビューを表示させることができます。また、デフォルトの日付範囲、グループ化、視覚化オプションを変更することもできます。
Perspectivesは、データを最適化し、管理し、文脈に応じて可視化するのに役立ちます。ルールを使ってパースペクティブを定義すると、スケジュールに従って配信される電子メールを受け取るようにレポートを設定することができます。また、パースペクティブのスコープ内にバジェットを設定することも可能です。これにより、特定のコストがしきい値に達したときに、対象となるユーザーグループにきめ細かいアラートを設定し、通知することができます。さらに、コストを削減し、ガバナンスを満たすための実用的なお勧めの対策を提供することで、パースペクティブはこれにとどまりません。
またパースペクティブは、リクエストと実際の利用率に基づいて無駄に費やされた費用の指標であるIdle cost (アイドルコスト)や、ノードを稼働させているがリクエストされていないために支払われている費用の指標であるUnallocated cost(未割り当てコスト)などの指標によって、Kubernetesのコスト支出に対する深い洞察を提供します。コスト上昇の根本原因を見つけるには、ネームスペース、ワークロード、ノードごとにコストを分解し、Kubernetes の深い可視性が、つまり特定のワークロードにドリルダウンして利用率の傾向を把握できる柔軟性を備えた可視性が非常に重要です。パースペクティブは、コスト削減のための推奨事項と組み合わせることで、コストの根本的な原因を突き止めることを容易にします。CCMは4つの視点を提供しますが、ユーザーのニーズに応じてカスタム視点を作成する柔軟性も備えています。
ビジネスインテリジェンス(BI)によるCustom Dashboardsは、Harnessモジュール全体のデータを取り込むだけでなく、高度な可視化、レポート、アラートといった使用目的に対応できます。ユーザーは、デプロイメントのタイムラインと、急増の原因となった正確なビルドの根本原因との関連でコストを確認したり、特定のFeature Flagsを有効にした場合のコスト上昇を予測したりすることができます。そのため、複数のHarnessモジュールを使用しているお客様は、Harness内で相関性のあるデータを迅速に確認できる柔軟性を享受できます。
カスタムダッシュボードの主要な機能の一つは、カ スタムフィールドを柔軟に作成できることです。カスタムフィールドは基本的に、サポートされる関数とファーストクラスのフィールドを組み合わせた定義によって管理される計算フィールドです。それでは、いくつかの使用例とカスタムフィールドの例を、対応するビジュアライゼーションと共に見ていきましょう。しかし、例に入る前に、例で使われているフィールドと関数について簡単に説明します。
${unified_table.aws_gcp_azure_account_project_subscription} -> は、ダッシュボードで消費するために公開されるファーストクラスフィールドです。CCMはビジュアライゼーションを構築するために50以上のファーストクラスフィールドを公開しています。
case, when, matches_filter -> は、Harness BI Dashboardsがカスタムフィールドを作成するためにサポートする関数の小さなサブセットです。現在、カスタムフィールドを作成するためにサポートされている関数は20近くあります。
case(
when(matches_filter(${unified_table.aws_gcp_azure_account_project_subscription}, `%ce%`),
${unified_table.aws_gcp_azure_account_project_subscription}),
"Others"
)
このカスタムフィールドは、基本的にceというサブストリングを持つあらゆるアカウントを正規表現で検索します。この命名規則がないアカウント、プロジェクト、サブスクリプションは、その他にバケット化されます。特定の命名規則を持つファーストクラスフィールドとこれらのカスタムフィールドを組み合わせることで、ダッシュボード作成を簡素化し、さらによく可視化できます。
case(
when(
${unified_table.aws_gcp_azure_account_project_subscription} = "ccm-aws" OR
${unified_table.aws_gcp_azure_account_project_subscription} = "ccm-gcp" "CCM"),
when(
${unified_table.aws_gcp_azure_account_project_subscription} = "ff-aws" OR
${unified_table.aws_gcp_azure_account_project_subscription} = "ff-azure" OR
${unified_table.aws_gcp_azure_account_project_subscription} = "ff-gcp", "FF"),
"CI/CD"
)
カスタムフィールドは、さまざまなアカウントからのコストをコストバケットに帰属させます。コストバケットを定義するために使われるフィールドは、GCP製品、AWS使用タイプ、Azureサブスクリプション、ラベル、タグ、名前空間、ワークロード名、クラスタ名などのKubernetes構成など、クラウドにまたがる可能性があります。したがって、コストバケットを定義する際に、カスタムフィールドは非常に柔軟です。バケットは、製品別、顧客別、コストセンター別、エンジニアリングチーム別などのコストだけでなく、ビジネスコンテキストを表示させる画面を作るのに非常に便利です。以下は、バケットカスタムフィールドを使って、エンドユーザーがスケジュールしたレポートやダッシュボード上で使用状況を表示させる方法の例です。
カスタムダッシュボードは、使用率の低いAWS Elastic Computing (EC2) インスタンス、孤立EBSボリュームやスナップショットなど、クラウドのインベントリーを詳細に可視化することもできます。カスタムダッシュボードは、カスタムフィールドなどの柔軟な機能とともに、あらゆるレポートとカスタム可視化のニーズに対応する1枚のガラスです。
CCMは、パースペクティブやカスタムダッシュボードとは別に、コストをバケット化し、コストバケット間で共通のインフラコストを共有できるようにするビジネスマッピング機能を近日リリースする予定です。今後のアップデートにご期待ください。
とりあえず、CCMに関する学習を続けてみてはいかがでしょうか?以下はその一例です。
BigQuery Costs Shocking $15k In Wasted Cloud Spend と Cloud Cost Workload Recommendations.
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。