AWS

FOCUSダッシュボードとQuickSightで実現するマルチクラウドコスト可視化

tecchan

はじめに

近年、クラウドへの移行が進む中、多くの企業ではクラウド利用料の高止まりが課題となっています。こうした課題を解決する手法として注目されているのが FinOps(Financial Operations) です。そこで前回のブログ記事では、AWSのCUDOSダッシュボードを用いた、AWSの利用料の可視化方法を紹介しました。

一方で、複数のクラウドプロバイダーを利用するマルチクラウド戦略を採用する企業も増加しています。これにより各クラウドプロバイダーの請求データ形式の違いや、コスト分析の複雑化、リソース最適化の困難さなど、多くの課題が発生しています。特に、データの形式が異なることによる分析の非効率性は、ビジネスの意思決定にも影響を与える重要な課題となっています。

そこで今回は、オープンソースの仕様であるFOCUS(FinOps Open Cost and Usage Specification)を使用して、マルチクラウドのコストをAWS上で可視化する方法を解説します。これにより異なるクラウドプロバイダーのデータを統一形式に変換し、一貫性のあるコスト分析を実現することができます。

なお、本記事は、FOCUSを使用したマルチクラウドコスト可視化の全体像を把握するための概要を提供するものです。特にGoogle Cloud側での料金データの取得について検証中の部分がありますので、全体像とAWS側での実装という観点でご覧いただけますと幸いです。

FOCUSとは

FOCUSの概要と目的

FOCUS(FinOps Open Cost and Usage Specification)は、FinOps Foundationが定めているマルチクラウドのコストデータを統合するための標準仕様です。

FOCUS™ - FinOps Open Cost & Usage Specification では、以下のように記載されています。

Without FOCUS, cloud providers and software vendors each generate a unique billing data file to send to their customers, and each file has its own terminology.

FOCUS provides common definitions for everyone to use, so FinOps practitioners don’t have to spend time figuring out, for example, what “Billed Cost” means on each invoice.

This means practitioners can spend less time on data normalization, and more time finding valuable business insights.

つまり、データの正規化に費やす時間を削減し、より多くの時間を貴重なビジネス洞察の発見に費やすことができるようになります。

その他、Adopting FOCUS™, the FinOps Open Cost and Usage Specificationのページでも以下のようなFOCUSの利点が記されています。詳細はリンク先をご参照ください。

  • Multi-cloud data-driven decision making
  • Reduced complexity of billing files
  • Improved reporting consistency and accuracy
  • Easier integration of new vendors
  • Increased innovation
  • Cheaper to process data
  • Transferable knowledge & skills
  • Beyond Cloud
  • Common language with external peers

主要なカラムとその意味

FOCUSのカラムは以下のリポジトリで定義されています。
https://github.com/FinOps-Open-Cost-and-Usage-Spec/FOCUS_Spec/tree/working_draft/specification/columns

一例として、以下のようなものがあります:

  • Provider
  • BillingAccountId
  • BillingAccountName
  • ServiceName
  • BilledCost
  • Tags
  • ChargePeriodStart
  • ChargePeriodEnd

単一のクラウドプロバイダーでは見かけない「Provider」という列があるのもFOCUSの大きな特徴かと思います。

AWSが提供しているFOCUSダッシュボード

FOCUSダッシュボードはCloud Intelligence Dashboards Frameworkのワークショップを行うことでデプロイが可能です。

アーキテクチャ図は以下のとおりです。
file
(出所):Cloud Intelligence Dashboards Framework

  • ソースアカウントの請求データはデータ収集アカウントのS3へレプリケーションされる
  • Glue CrawlerはそのS3をカタログ化する
  • Amazon Athenaはそれをクエリし、ダッシュボードのインプットとなるViewを作成する
  • Amazon QuickSightで、これをFOCUSダッシュボードとして可視化する

アーキテクチャ図ではAthenaを見る形になっていますが、手順を進めるとこのAthenaのデータを元に、QuickSightのダッシュボードで可視化できるようになります。

QuickSightのFOCUSダッシュボードのデモ画面はこちらでご覧いただけます。

マルチクラウドのコストのデータ統合

上記のワークショップの中では、AzureのコストデータをFOCUSダッシュボードに統合する手順が提供されています。これにより、AWSとAzureのデータを統合して、Amazon QuickSightで可視化することが可能となります。

しかし、Google CloudのコストデータをAmazon QuickSightのFOCUSダッシュボードに統合する手順は提供されていません。そこで、ここからはGoogle CloudのデータをFOCUSに統合する手順を解説します。

全体の流れ

Google CloudのコストデータをFOCUSダッシュボードに統合する手順は提供されていませんが、Google CloudのデータをQuickSightで可視化するワークショップは
AWS Cloud Intelligence Dashboards for GCPとして提供されています。

そのため、まずはこのワークショップを実行し、データパイプライン(データの収集、変換、保存を行う一連の処理)を構築します。これが完了すると以下のようなリソースが構築されます。
file
(出所)AWS Cloud Intelligence Dashboards for GCP

ここから、これをカスタマイズして先ほどデプロイしたFOCUS形式のダッシュボードにGoogle Cloudのコストデータを統合していきます。そのためにカスタマイズをする箇所は主に3箇所です。

  1. Google CloudのBigQueryでFOCUSのビューを作成する
  2. Glue Connector for Google BigQueryでFOCUSのビューをAmazon S3に格納する
  3. 取得したデータを、Amazon AthenaでAWSのFOCUS形式のデータと結合する

これらをアーキテクチャ図にマッピングすると、以下の黄色の部分になります。
file
(出所)AWS Cloud Intelligence Dashboards for GCP

AWSのデータと統合するデータフロー図を表すと以下のようになります。
file

①Google CloudのBigQueryでFOCUSのビューを作成する。

Google CloudのコストデータをFOCUS形式に変換する手法は、Google Cloudから提供されています。

New BigQuery cloud billing view based on FOCUS | Google Cloud 公式ブログでは、FOCUS形式のビューが作成できるようになったことをアナウンスしています。実際には、「Google Cloud FOCUS v1.0 | Google Cloud」のページから名前やメールアドレスを入力することで、SQL構文を含む手順書がダウンロードできる仕組みになっております。

ただし、手元の環境で実行したところ、重複して計上されているコストデータが存在していました。この原因について現在調査中です。本記事ではデータパイプラインの全体像を解説しており、この課題はGoogle Cloud内のものなので、今回は詳細は割愛いたします。

②Glue Connector for Google BigQueryでFOCUSのビューをAmazon S3に格納する。

AWS Cloud Intelligence Dashboards for GCPのワークショップを実行すると、以下のGlue Connectionができているはずです。
そのためこれを活用し、新たにCreate jobをクリックし、Jobを作成します。

file

そうすると、以下の画面に遷移します。
file

ここで、Scriptタブでは、先程のワークショップ内でAWSから提供されたfocus_glue_script.pyのスクリプトを利用します。スクリプトはこちらからも参照する事が可能です。

このスクリプトの主な処理の流れは以下の通りです。

  1. 初期設定と引数の取得

    • ジョブパラメータの設定
    • DynamoDBクライアントの初期化
  2. DynamoDBでのブックマーク管理

    • 前回の実行位置の取得
    • 新しい実行位置の保存
  3. BigQueryからのデータ抽出

    • クエリの実行
    • データの存在確認
  4. データ型の変換処理

    • タイムスタンプ形式の統一
    • パーティション情報の追加
  5. S3への書き込み

    • パーティショニング設定
    • カタログ情報の更新
  6. ブックマークの更新

    • 最新の実行位置の保存
    • ジョブの完了

また、Job detailsのタブで各項目を入力することも必要です。一例として、job parameterではそれぞれ以下の内容を入力します。

--dynamodb_admin_job_table_name: ジョブの実行状態を管理するためのDynamoDBテーブル名
--gcp_connection_name: BigQueryに接続するためのAWS Glue接続名
--gcp_full_table_name: BigQueryから取得するデータの完全なテーブル名(プロジェクトID.データセット名.テーブル名)
--gcp_job_bookmark_keys: 増分データ取得のためのブックマークキー
--gcp_materialization_dataset: BigQueryのデータセット名
--gcp_parent_project: BigQueryのプロジェクトID
--target_catalog_database_name: AWS Glueカタログのデータベース名
--target_catalog_table_name: AWS Glueカタログのテーブル名
--target_s3_path: 変換後のデータを保存するS3バケットのパス

これにより、BigQuery側で作成したビューを、S3に格納することができます。

③Consolidate viewでの統合

続いて、Athenaのクエリを用いて、AWSのコストデータとGoogle Cloudのコストデータを統合します。
Cloud Intelligence Dashboards FrameworkのワークショップでデプロイされたAWSのコードを参照する他、AzureについてはAWSがコードを提供しているので、それを参照することも可能です。

AWS
https://github.com/aws-samples/aws-cudos-framework-deployment/blob/main/dashboards/focus/focus.yaml#L4834

Azure
https://catalog.workshops.aws/cidforazure/en-US/03-setup/04-dashboard-deployment/02-focus-export-dashboard#instructions

なお、私が実行したところ、

  • billingaccountname
  • chargefrequency
  • commitmentdiscounttype
  • commitmentdiscountstatus
  • invoiceissuername
  • subaccountname

の項目がGoogle Cloud側のFOCUS形式のデータでは出力されていませんでした。
本来であればBigQueryのクエリをカスタマイズして修正するべきだと思いますが、今回は全体像を把握することを優先するため、
 '' as billingaccountname,
とすることで、このエラーを回避しました。

Google Cloudについては別途検証し結果をまとめますので、お待ちいただければと思います。

これらの①〜③のカスタマイズを加えることで、Google CloudのデータをAmazon QuickSightのFOCUSダッシュボードで一元化することができました。

まとめ

FOCUSの活用によって、マルチクラウド環境におけるコスト管理の一元化を技術的に実現することができるようになりました。この技術基盤の確立により、ビジネス価値の創出が可能となります。

技術面では、データの標準化の自動化により手作業が削減されたり、増分データの取得も自動化できるので運用コストが最適化されます。ビジネス面では、手作業の工数削減によりビジネス洞察等により多くの時間を活用できるようになったり、クラウドを横断した戦略的なリソース配分も可能となります。

今後の展望といたしまして、データソースの追加(他クラウドプロバイダー、オンプレミス)、タグ付け等の品質の向上。また、今回は可視化までですので、その後の分析の強化、FinOps活動とのシームレスな連携の実現にも繋げていきたいと思います。

今後も技術的な改善を継続し、より実用的なソリューションの提供を目指していきます。本記事がマルチクラウド環境における意思決定の一助となりましたら幸いです。

AUTHOR
tecchan
tecchan
プロジェクトリード / スクラムマスター / エンジニア
金融業界のSIerにて5年間勤務。大小様々な規模の案件にてプロジェクトマネジメントを経験後2022年5月にDWSへ入社。最先端の技術を用いる開発業務を担当。最近では先端技術への理解とマネジメントの経験を活かし、スクラムマスターとして案件を推進。2023, 2024 Japan AWS All Certifications Engineer。認定スクラムマスターPSMⅡ取得。
記事URLをコピーしました