コスト配賦によって、クラウドコストを発生元のグループに紐付け、計上漏れやガバナンス外の支出を洗い出せます。本記事では、環境別にクラウドコストを配賦する方法を解説します。

コスト配賦とは
データセンターからクラウドへの移行によって、IT支出は資本的支出から運用的支出へとシフトし、クラウドコストガバナンスに新たな課題が生まれました。サーバーや機器を購入するために予算を申請するという従来のプロセスを経ずに、開発者(あるいは自動化された仕組み)が手軽にインスタンスを立ち上げられるようになり、その結果として支出の膨張や帰属不明のコストが発生しがちです。
クラウド支出のガバナンスを強化する第一歩は、組織内で定義したカテゴリ(事業部門など)に沿ってコストを整理・グルーピングすることです。Cost Allocation(コスト配賦)と呼ばれるこの取り組みによって、複数のグループで共有されているコストが見え、適切に按分できるようになります。さらに、計上漏れのコストやガバナンス外の支出を発見することにもつながります。コスト配賦は組織として時間をかけて磨いていくスキルですので、最初から完璧を目指す必要はありません。
コストを配賦できれば、レポート作成も容易になり、より精度の高い予算策定や予測が可能になります。とはいえ、コスト・使用量データの配賦方法に決まった正解はなく、それを支援するツールも数多く存在します。
ここからは、Google Cloud、AWS、そしてDoiT独自のクラウド分析テクノロジーを使って、環境別にクラウドコストを配賦する方法を見ていきましょう。
環境別にコストを配賦する意義
環境別のコストが見えると、「顧客提供にかかるコストと、開発・テスト・実験にかかるコストはそれぞれどれくらいか?」といった問いに答えられるようになります。国によっては、研究開発費を資産計上して減価償却することで、キャッシュを有効活用できる税制上のインセンティブが用意されています。さらに、エンジニアが将来のコスト削減につながるアクションを取るきっかけとなる、社内の建設的な議論も生まれやすくなります。
たとえば本番環境のコストに注目するのは、支出規模が大きいというだけでなく、その分析から顧客あたりのマージンを把握できるためでもあります。これは、商談で値引き余地を判断する際にも有効です。また、業界特有の周期的な利用変動がある場合は、季節性をより正確に把握する手がかりにもなります。
開発環境の支出傾向に目を配れば、安定性やスケーリングの問題を早期に察知でき、機能リリース時のトラブルを最小限に抑えられます。
そして、環境ごとのコストとその推移を深く理解することで、エンジニアと協働して精度の高い予測と予算を組み立てられます。これは「どこまでなら使ってよいのか?」という問いに対する答えそのものです。
環境別にコストを配賦する方法
環境別のコスト追跡をどう始めるかは、「環境」をどう定義するかによって変わります。一般的には、ユーザー定義のタグまたはラベルを用い、「environment」キーの値としてprod、dev、stagingなどを設定する方法が取られます。
このように環境を定義しておくと、本番コストをアカウント別やプロジェクト別に計測するなど、より細かい粒度で分析できるようになります。
このほか、Projects(Google Cloud)やAccounts(AWS)、さらにはGoogle CloudのIAMフォルダで環境を定義しているお客様もいらっしゃいます。
Google Cloudで環境別コストを算出する
下図は、Google Cloudの請求レポートで環境ごとのコストを可視化した例です。ここでは、それぞれ異なる環境を表す3つのプロジェクトでフィルタリングしています。

AWSで環境別コストを算出する
下図は、AWS Cost Explorerで環境ごとのコストを可視化した例です。「Environment」タグの特定の値でフィルタリングし、同じ「Environment」タグでグルーピングすることで、環境別にコストを分解しています。
このタグとタグ値を用意するには、まずUser-Defined Cost Allocation Tagsを作成する必要があります。AWS Tag Editorの利用がおすすめです。作成後は、Cost Explorerで使えるようにするためにタグを有効化するだけです。なお、タグを作成してからCost Explorerに反映されるまでに24~48時間かかる場合があります。タグはリソースに遡って適用できず、タグを付けた日以降のデータしか分析に表示されないため、できるだけ早めに設定しておくのが得策です。

DoiT Cloud Analyticsテクノロジーで環境別コストを算出する
DoiTのお客様は、Cloud Analytics ReportsやAttributionsといった独自テクノロジーを通じて、複雑なクラウド請求書を読み解くことができます。
Attributionsでは、クラウドリソース(プロジェクト/アカウント、ラベル/タグなど)をまとめてグルーピングすることで、環境のような自社固有の単位を定義できます。作成したAttributionsをもとにレポートを構築すれば、ビジネスの文脈に沿ってクラウドコストを把握できます。
下記の例では、「staging」という単語を含むGoogle Cloudプロジェクトをまとめた「Staging Environment」というAttributionを作成しました。これは、当社におけるステージング環境の定義に基づいたものです。

あるいは、タグやラベルを使ってさまざまな環境を捕捉する方法もあります。たとえば下のスクリーンショットのように、「Prod」「prod」「Production」「production」など、同じ環境を指すタグ/ラベルが複数併存しているケースは少なくありません。よくある悩みは、こうしたレポート作成をFinOpsチームや中央組織が担う一方で、メタデータの統一を強制することが難しく、結局は分析ツール側で吸収せざるを得ないという点です。Attributionsで複数のタグ/ラベルをまとめれば、この問題を解決できます。

同じ要領で、ProdとDev環境のAttributionsも作成しました。Attributionsを用意すれば、下図のようにCloud Analytics Reportsで複数環境のコストをまとめて可視化できます。

そこから、下のDevの例のように、特定環境のコストをワンクリックで予測することもできます。

さらに踏み込んで分析したい場合は、環境のコストをサービス別に分解できます。下図のように、前月比で支出の伸び率が大きかったサービスを浮き彫りにすることも可能です。

増加幅が最も大きかったサービス(この例ではGoogle Cloud Pub/Sub)を特定したら、さらに一段掘り下げて、料金上昇の原因となったSKUを突き止めることができます。

最後に、Attributionsを使えば環境ごとに予算を設定し、想定外の出費を抑えることもできます。下記は開発環境での例で、しきい値を超えるとメールやSlackでアラートが届くようにし、必要に応じてアクションを取れるようにしています(たとえば、月初の7日間で月次予算の50%を消費した場合など)。現在の支出と予算、予測支出と予算の比較もひと目で確認できます。

このように環境コストを掘り下げて分析できる――あるいは、標準機能だけでは算出が難しい類似のコストカテゴリを分析できる――ことで、これまで起こり得なかったチーム内の対話が生まれます。結果として、組織全体でクラウド支出に対する当事者意識と理解が高まります。想定外の出費が減り、フィードバックループが速くなり、より効率的な行動が定着していきます。配賦された各バケットのオーナーの自律性も高まるでしょう。
tier-1レベルで仕組みが回り始めたら、より下位の階層へと管理を委譲できます(たとえば、エンジニアリングマネージャーならチーム単位、プロダクトマネージャーならプロダクト単位など)。コスト配賦は、継続的に磨き続ける取り組みであることを忘れないでください。
クラウドコストを理解することは、ほんの第一歩
今後の記事では、検討すべきコスト配賦のユースケースをさらに紹介していきますので、どうぞお楽しみに。
DoiT Cloud Analyticsはクラウド請求書の理解を助けますが、これはクラウドマネジメントというパズルの一片に過ぎません。AWSおよびGoogle CloudのPremier Partnerである当社は、数千社のクラウド運用の管理と最適化を支援してきました。
だからこそDoiTのお客様には、常に最適な料金で利用できているかを担保し、時間を奪う管理業務を自動化で削減する独自プロダクトもご利用いただけます。さらに、コンテナアーキテクチャへの移行やデータパイプラインの構築など、人の手でこそ進めるべきタスクについては、世界各地のシニアクラウドアーキテクトに無制限にアクセスできます。「オンデマンドの頭脳」、あるいは自社専属のStackOverflowのような存在とお考えください。
DoiTとの協業についてもっと知りたい方は、今すぐエキスパートにご相談いただくか、最新のeBookThe Cost Conscious Cloudをぜひご覧ください。