はじめに
AWSの利用料、気づくとじわじわ増えませんか?
弊社でも気づけば AWS の利用料がじわじわと増えており、
コスト最適化に取り組むことが求められる状況になっていました。
そこで数カ月間、以下のサイクルを回しながらコスト削減に取り組みました。
- 月額使用料を「使用タイプ」別に可視化する
- 上位の使用タイプを特定する
- 手軽にできる削減策を検討する
- 削減施策を実施する
- 削減効果を毎月測定する
なぜ「使用タイプ」に着目したのか
AWS コスト分析には様々な軸があります。
- サービス別
- タグ別
- リソース別
「使用タイプ」を使った理由は、 課金項目の本質に最も近い粒度で把握できる からです。
これが非常に大きく、使用タイプ を軸にするだけで、結果的に次のようなメリットが自然と生まれます。
- AWSサービスをまたいだ比較がしやすくなる
- コストの「何に対して課金されているか」が見える
- ムダな部分を発見しやすくなる
- 余計な前処理やタグ管理が不要で、とにかく始めやすい
コスト分析の最短ルート として非常に優秀でした。
Step1:使用タイプ別の利用状況を可視化する
Cost Explorer の設定
以下のように設定しました。
AWS はサービス単位で見るだけでは内部の課金要素が分かりづらいため、使用タイプを確認することで どの処理・どのリソースがコストの原因になっているのかを正確に把握できます。
さらに使用タイプを軸にすると、
コストが発生している箇所にピンポイントでアプローチできる のが大きなメリットです。
例えば、Fargateなら「vCPU に対する課金なのか?メモリ使用量なのか?データ転送量なのか?ログ出力量なのか?」
RDS なら「インスタンス稼働なのか?ストレージ容量なのか?IOリクエストなのか?バックアップ保存なのか?Proxy なのか?」 といった形で、
“どこを削れば効果が出るか” が明確になります。
言い換えると、使用タイプ は
“なんとなく高い” を “ここを対処すればいい” に変える最短ルート です。
表:使用タイプ別コストランキングTOP10
※各使用タイプ が具体的にどの処理・リソースに対して課金されているのかを説明に記載しています。
| 使用タイプ | 説明 | 金額割合 |
|---|---|---|
| APN1-Fargate-vCPU-Hours:perCPU | Fargate 起動タイプの ECS (Linux/x86 アーキテクチャ) でのコンテナ化されたアプリケーションに必要な vCPU に基づくコスト | 15.90% |
| No 使用タイプ | 税金(Tax) | 9.09% |
| APN1-InstanceUsage:db.r5.2xl | オンデマンドインスタンス (Standard) の使用時間に基づくコスト=db.r5.2xlarge | 9.13% |
| Dollar | サポート費用 | 7.50% |
| APN1-LoadBalancerUsage | ELB (ALB, NLB, GLB, CLB) の実行時間に基づくコスト | 5.15% |
| APN1-InstanceUsage:db.r5.xl | オンデマンドインスタンス (Standard) の使用時間に基づくコスト=db.r5.xlarge | 4.56% |
| APN1-Fargate-GB-Hours | Fargate 起動タイプの ECS (Linux/x86 アーキテクチャ) に必要なメモリ使用量に基づくコスト | 4.05% |
| APN1-DataProcessing-Bytes | データ処理量に基づくコスト(使用タイプからサービス判別不可) | 5.03% |
| APN1-CW:GMD-Metrics | GetMetricData API リクエスト数に基づくコスト | 3.15% |
| APN1-ProtocolHours | SFTP / FTPS / FTP / AS2-HTTP が有効になっている時間に基づくコスト | 2.94% |
各使用タイプの説明がまとまっている公式ドキュメントはないようなので、不明な場合はAWSサポートに確認するとよいかと思います。
Step2:削減アプローチの分類とスコープ決定
使用タイプごとに削減策を検討する前に、まず施策を 「どれだけ工数がかかるか」「どれだけ影響があるか」で分類してから進めると良いと思います。
分類:手軽(今回のスコープ)
- リスクが小さい
- 即日対応できる
- 効果が出やすい
分類:中
- ある程度の検証が必要
- アプリや構成に影響する可能性がある
分類:大
- アーキテクチャの見直しが必要
- 手戻りが発生する可能性が大きい
今回弊社のケースでは 短期間で確実に効果を出すこと を優先し、
実際に対応する施策はこのうち 「手軽」なものに限定しました。
「中」「大」に分類される施策については候補として整理のみ行い、
将来的な改善フェーズで取り組む前提としています。
Step3:主要な使用タイプごとの削減方向性を把握する
Step2 で削減施策を「手軽/中/大」に分類しましたが、
ここではより具体的に、主要な使用タイプに対してどのような削減アプローチが存在するか を整理します。使用タイプ別の削減施策一覧(概要)は以下の通りです。
表:使用タイプ別の削減施策一覧(概要)
| 使用タイプ | 説明 | 金額割合 | 主な削減アプローチ |
|---|---|---|---|
| APN1-Fargate-vCPU-Hours:perCPU | Fargate 起動タイプの ECS (Linux/x86 アーキテクチャ) でのコンテナ化されたアプリケーションに必要な vCPU に基づくコスト | 15.90% | 不要タスクの削除/vCPU容量の見直し/タスク数の調整/スケーリング最適化/Fargate Spotの利用/動作基盤の変更(Graviton・EC2インスタンス等)/Compute Savings Plansの適用等 |
| No 使用タイプ | 税金(Tax) | 9.09% | 月額利用料削減により比例して削減される。 |
| APN1-InstanceUsage:db.r5.2xl | オンデマンドインスタンス (Standard) の使用時間に基づくコスト=db.r5.2xlarge | 9.13% | インスタンスファミリ・サイズの見直し/スケーリング最適化/時間停止の導入/Reserved Instances・Database Saving Plans の活用等 |
| Dollar | サポート費用 | 7.50% | サポートプランの見直し/月額利用料削減により比例して削減される。 |
| APN1-LoadBalancerUsage | ELB (ALB, NLB, GLB, CLB) の実行時間に基づくコスト | 5.15% | 不要な ELB の削除/複数 ELB の統合等 |
| APN1-InstanceUsage:db.r5.xl | オンデマンドインスタンス (Standard) の使用時間に基づくコスト=db.r5.xlarge | 4.56% | インスタンスファミリ・サイズの見直し/スケーリング最適化/時間停止の導入/Reserved Instances・Database Saving Plans の活用等 |
| APN1-Fargate-GB-Hours | Fargate 起動タイプ(Linux/x86)でのコンテナに必要なメモリリソース量に基づくコスト | 4.05% | 不要タスクの削除/メモリ容量の見直し/タスク数の調整/スケーリング最適化/Fargate Spot の利用/動作基盤の変更(Graviton・EC2インスタンス等)/Compute Savings Plans の適用等 |
| APN1-DataProcessing-Bytes | データ処理量に基づくコスト(サービス特定不可) | 5.03% | アプリ側のデータ転送削減/不要ログ・データ処理の削減 |
| APN1-CW:GMD-Metrics | GetMetricData API リクエスト回数に基づくコスト | 3.15% | 不要メトリクスの削除/API 呼び出し回数の削減/標準メトリクスへの一本化 |
| APN1-ProtocolHours | エンドポイントで SFTP / FTPS / FTP / AS2-HTTP が有効になっている時間に基づくコスト | 2.94% | 不要プロトコルの無効化・削除/利用時間の削減 |
Step4:使用タイプに対する具体的アプローチ(RDSを例に解説)
使用タイプ を使ってコストの高い項目が明確になったら、
次はそれぞれに対して「どんなアプローチで削減できるのか?」を検討します。
本記事では、代表的な使用タイプの中から RDS(db.r5.2xlarge) を例に取り上げ、
具体的な削減方法と削減効果をイメージできるようにまとめます。
他の使用タイプについても同様に、使用タイプごとに取りうるアプローチを組み合わせていくことで、効果的なコスト削減が可能です。
APN1-InstanceUsage:db.r5.2xl
説明
オンデマンドインスタンス (Standard) の使用時間に基づくコスト=db.r5.2xlarge
料金体系
https://aws.amazon.com/jp/rds/pricing/
主な削減アプローチ(前章より)
- インスタンスファミリ・サイズの見直し
- スケーリング最適化
- 時間停止の導入
- Reserved Instances・Database Saving Plans の活用等
削減例
-
インスタンスファミリ・サイズの見直し
db.r5.2xlargeをCPU・メモリ使用率が低いため db.r5.xlargeへダウンサイジングすると50% 削減 → 合計 $504/月 削減- 月額換算:
- db.r5.2xlarge → 約 $1,008/月
- db.r5.xlarge → 約 $504/月
- 月額換算:
-
Reserved Instances(1年・全額前払い)を適用すると 約 44% 削減 → 合計 $220/月 削減
- 月額換算:
- db.r5.xlarge(オンデマンド) → 約 $504/月
- db.r5.xlarge(Reserved Instances) → 約 $284/月
上記1.とセットで実施すると元々の金額から約72%削減できることになります。
- 月額換算:
-
時間停止の導入:平日8:00~22:00のみ稼働し、他の時間は停止させると約 57% 削減 → 合計 $577/月 削減
- 月額換算:
- db.r5.2xlarge(オンデマンド)常時稼働 → 約 $1,008/月
- db.r5.2xlarge(オンデマンド)平日のみ稼働 → 約 $431/月
上記1.とセットで実施すると元々の金額から約78%削減できることになります。
- 月額換算:
使用タイプでコストの内訳を把握すると、それぞれの項目に対して自分たちがアプローチできる削減ポイント が必ず見つかります。
そして重要なのは、 1つの施策だけではなく、複数のアプローチを組み合わせること。
ファミリ・サイズ見直し × 時間停止の導入 や ファミリ・サイズ見直し × 割引プランの活用のように、アプローチを掛け合わせていくことで、少ない工数でも大きな削減効果が生まれます。
今回はその代表例として多くの会社で利用されている RDS を取り上げましたが、
他の使用タイプでも “どこが削れるか” を見つけて組み合わせていくと、同じように高い削減効果が期待できます。
やって分かったこと(まとめ)
✔ 使用タイプ 分析は最も手軽で効果が出やすい
✔ 「手軽」にできるアプローチでもそれなりの削減効果はでる。
✔ 効果測定が継続的削減を生む「削減 → 効果測定 → 次の削減」が重要。
✔ 数ヶ月という期間だけでも大きな改善が可能
✔ AWS コストは見れば下がる、放置すれば上がる。
その他:コスト削減に役立つ関連サービス
今回紹介した使用タイプの分析に加えて、AWS にはコスト最適化を支援するさまざまな周辺サービスが提供されています。
弊社でも一部サービスを触りながら分析に活かそうと試みていましたが、正直まだ十分に使いこなせているとは言えません。それでも、うまく活用できればさらに効率的にコスト最適化を進められると考えています。
ここでは、今後活用していくと良さそうな関連サービスをいくつか紹介します。
AWS Cost Optimization Hub
削減候補を自動分析し、適用すべき最適化アクションをまとめて提示してくれる統合サービス。
https://docs.aws.amazon.com/ja_jp/cost-management/latest/userguide/cost-optimization-hub.html
AWS Cost Explorer
AWS 料金と使用量の可視化・分析ができる標準ツール。
https://aws.amazon.com/jp/aws-cost-management/aws-cost-explorer/
AWS Cost Anomaly Detection
異常なコスト増加を自動検知し、通知してくれるサービス。
https://docs.aws.amazon.com/cost-management/latest/userguide/manage-ad.html
AWS Trusted Advisor
不要リソースや非効率な構成を自動チェックしてくれる最適化ガイド。
https://aws.amazon.com/jp/premiumsupport/technology/trusted-advisor/
AWS Compute Optimizer
EC2 / RDS / Lambda / EBS のリソースサイズを最適化する推奨案を提示。
https://aws.amazon.com/jp/compute-optimizer/
AWS Budgets
予算を設定し、超過時のアラートを通知するコスト管理ツール。
https://aws.amazon.com/jp/aws-cost-management/aws-budgets/
AWS Pricing Calculator
インスタンス変更や Savings Plans 適用時の料金を試算できる計算ツール。
https://calculator.aws/#/
srest(外部サービス)
AWSの利用料をアカウントを横断して一元管理できるツール
https://srest.io/
おわりに
使用タイプを確認して、上位の項目から順にアプローチできる施策を実施するだけでも、AWSコストは驚くほど最適化できます。
大きな設計変更をしなくても、コスト構造を具体的に把握し、具体的に削る だけで 十分な削減効果が得られます。
ぜひあなたの環境でも、まずは使用タイプの可視化から始めてみてください。


