🦁

AWSのクラウドコストの歩き方

に公開

はじめに

こんにちは、DELTAの馬場です。
1月から毎月2つの記事投稿を続ける! という目標を立てて半年継続できたので、良い節目ということもあり普段携わっているAWSクラウドコスト削減の肝となる内容についても記事にしていきます。
なんとなーく見ていくことも多い、AWS Billingをどう読み解いていくのか?について普段考えていることなどをまとめてみました!

こんなサービスを提供しています。
https://costcut.cloud/

全体を俯瞰する

サンプルとして自社のとあるAWSアカウントのBillingを用意しました。

このアカウントは主にコスト削減サービスを提供するメンバーが技術検証や手順確認のために使うので、ワークロードを動かしているアカウントとは少し毛色が違うのですが、Billingの特徴として料金のかかっているサービス順で金額が表示されます。
そのため、検証用途で使っているこのアカウントのBillingからRDS・Open Search・EC2 が多く料金がかかっていてVPCやその他のサービス群についてはそこまで料金がかかっていないので、この月はRDS・Open Search・EC2の検証が多かったことが分かります。また、少額ですがワークロードのないアカウントでWAFの料金がかかっていることも気になります。

この記事を見てくださっている方がもしいれば、アーキテクチャ図を横に並べながらBillingを一緒に見ていただくのが良いかもしれません。
そうすることで、ワークロード上のどのサービスでコストがかかってくるのか?とアーキテクチャ図に記載されていないが利用されているサービスは無いかを把握することができます。記載が無かったものについてはアーキテクチャ図の更新を実施したり、意図しない利用でないか?を確認すると良いかもしれません。

1つずつ詳細を確認していく

全体の金額が分かったので、次は各サービスの詳細を確認していきます。
サービス単位だとコストのかかっている順だったのですが、詳細な項目についてはそのルールが適用されないので、各リージョンや、費用項目について1つずつ見ていく必要があります。

例として、一番コストのかかっていたRDSを見ていくとオハイオリージョンのAurora Serverless V2のACU(Aurora Capacity Unit)が一番コストがかかっていることが分かります。次点でRDS Proxyにコストがかかっていました。

サービスの詳細単位での料金を事前に把握することで、次のアクションである、実際にどのリソースでコストが発生しているか?を見ていく際の方針立てをしていきます。

どのリソースで料金が発生しているかを確認

サービスのページ を確認

前のサービスの詳細料金でAurora Serverless v2のACU料金が高かったので、どのDBで料金がかかっていそうかを見ていくことにします。

Aurora Serverless は自動でスケーリングするため、インスタンスを利用するAuroraなどとは違い実際に料金がかかっているかどうかは不明ですが、1つ目のDBクラスターの方がACUのスケーリング幅が広いので、コストがかかっている可能性が高いことが分かります。

Cloud Watch メトリクスを確認

今回の事例では登場しませんでしたが、Cloud Watch logs やLambda などの料金がかかってきやすいサービスで、かつサービスページから確認するだけではどこに料金がかかってくるかわかりずらいサービスについてはCloud Watch のメトリクスを見て料金がどこで発生しているのか?を見ていきます。

詳細を書くと長くなるので割愛して、この記事を参考にログ出力の多いロググループ順に並べます。
https://dev.classmethod.jp/articles/how-to-check-high-data-ingestion-log-groups-in-cloudwatch-logs/
RDSOSMetrics というロググループのログ出力が突出して多いことが分かります。

これ何?ってことでググってみるとこれはRDSの拡張モニタリングを有効にしていることで発生している料金ということが分かりました。

Cost Explorer を確認

コスト配分タグを活用されている場合は、cost explorerを利用してどのコスト配分タグで料金が発生しているかを確認することができます。この検証アカウントでは活用できていなかったのでお見せできないことが悔やまれるのですが、以下の記事で詳細に記載されていました!
https://qiita.com/T-Hashi-moto/items/3c274105f0bb95185cb0

全てのサービスを定期的に確認しておこう

ここまでの内容でコストの目立つサービスについて、どう料金を見ていくのか?については説明できたかなと思っています。
目立つコストのサービスは意識せずに自然と対応していくかと思いますが、そうでないものについてはスルーされがちです。面倒ではありますがそれらについても数ヶ月に1度くらいの頻度でざっと中身を見ておくことで、実は簡単にコストを削減できそうな箇所を見つけられる可能性があります。
また、毎月の料金と各サービスの費用を取っておくことで、支配的なサービスがあってそれ以外が目立たないようなケースでも、ミスなどでコストが通常時と比べて高騰してしまうケースに気付くことができます。

コスト削減を実施する際のマインド

Billingの見方についてここまで記載したので、最後にコスト削減を実施する場合のマインドについても記載していきます。

バイアスなしで「なんで?」「ほんとに?」を料金が多くかかっているモノに対して考えてみるところが重要になってきます。
The elephant in the roomということわざがありますが

リリースから数年経っているサービスでは自分たちの中で当たり前なことができてしまうので、そのバイアスはいったん抜きにして、デカいコスト要因に対してどうにかできないか?と検討してみることで実はクリティカルなコスト削減を実現できるかもしれません。

最後に

AWSで定期的にリリースされる新機能や各社のテックブログでコストに関わる記事が大量に出ているので、コスト削減の方向性が決まったタイミングで、そういったものを検索してみるとほとんどそのまま利用できる機能やコスト削減手法に出会えるかもしれません。
それらを見てみても、工数やスキル的に難しそうな場合はぜひ弊社にお問い合わせください!
https://costcut.cloud/#contact

DELTAテックブログ

Discussion