
【第1回】個人向け!貧乏エンジニアのAWS節約術 ─ CFMフレームワーク編
クラウドが普及した昨今、勉強のため、スキルアップのため、クラウドを実際に触って色々と検証をしているITエンジニアの方も多いのではないでしょうか。
すぐに始めることができ、様々なサービスを試すことができるのはクラウドの利点です。しかし、複雑な料金体系や使ったリソースを放置して想定外の利用料を請求されたという方もいらっしゃると思います。
この記事は、個人のITエンジニアの方を対象に、クラウド利用量の節約術について、何回か回数を分けて紹介していきます。
今回はその第1回ということで、コスト削減、コスト最適化の導入編です。お金は無いけど出来る範囲でクラウドを扱いたい方、AWSのコスト改善について検討中の方、ぜひ参考にしてください!
関連記事
- 【第2回】個人向け!貧乏エンジニアのAWS節約術 ─ AWS Cost Explorer編
- 【第3回】個人向け!貧乏エンジニアのAWS節約術 ─ EBSボリューム編
- 【第4回】個人向け!貧乏エンジニアのAWS節約術 ─ EC2インスタンス編
節約をする上で押さえてほしい前提
このシリーズでは、クラウド利用量を節約する術を紹介していく予定ですが、利用料金をいかに抑えるかについて難しい言い方をすると、「コスト削減」や「コスト最適化」と言われたりします。この2つの言葉、よく似たような意味として混同されて用いられるのですが、厳密には意味が異なります。
「コスト削減」と「コスト最適化」の違い
まず「コスト削減」からですが、これは文字通りコストを削減することに焦点を当てています。何よりもコストを減らすことを優先しています。一方、「コスト最適化」は、ビジネスの価値を最大化することに重きを置いています。コストを削減することで浮いた資金を投資に回すところまで考えています。
コスト削減の場合、削減した直後は効果があるように見えますが、単にコストを減らすだけでは利益に繋がらず、削減コスト分のパフォーマンスやユーザエクスペリエンスが犠牲になるという負の面もあります。
したがって、クラウドの利用料金は、コスト最適化の考え方を以て見直しを図ることが推奨されているのです。
どちらかが良いというわけではない
それでは、コスト最適化の方が良いのかというと、それは目的や状況によります。業務では、自社やお客様の今後のビジネス成長を考慮すると、コスト最適化の考えを持つ場合がほとんどではないかと思います。
しかし、個人での利用しか想定していないケースでは、コストを削れるだけ削れればそれで良いという場合もありそうです。
この記事は、お金が無いけどクラウドを扱いたいITエンジニアを対象に執筆しているため、後者の状況に一致する方が多いかもしれません。
ここで言いたいのは、この記事で取り上げるクラウド節約術について、コスト削減を目的とする場合とコスト最適化を目的とする場合、それぞれのユースケースを考えながら記事の内容を読んでいただきたいということです。
個人による検証で節約術の良さを感じたたからといって、その節約術を業務上でも活用するかについては慎重な判断が求められるということです。「ここまで実施したらパフォーマンスが下がるリスクがある」というように、削減と最適化の境界がどこにあるのか、またはそれぞれの節約術のメリット・デメリットを感じながら、この先の内容を参考にしていただきたいと思います。
CFMフレームワークとは?
AWSクラウドには、CFM(Cloud Financial Management)というコスト最適化のフレームワークがあります。これは、クラウド利用料金の抑制を考える際に非常に参考となるので、CFMをベースにクラウド節約術を取り上げていきたいと考えています。
第1回記事のメインテーマであり、今後の節約術を参考にするうえでも頭の片隅に置いていただきたい考え方なので、是非お読みください。
CFMでは、クラウドコストを「可視化」、「最適化」、「計画・予測」し、持続的なコスト最適化の活動「FinOpsの実践」により、効果的なコスト最適化を実現します。

CFMをうまく活用することで、組織のビジネス価値を最大化し、クラウドの利点を最大限に活用することができるようになります。
今後紹介するクラウド利用料金の節約術は、CFMのサイクルにならう形で紹介していきます。上の図で見て、「①可視化」、「②最適化」、「③計画・予測」の順序で節約術を解説していく予定です。
1. 可視化
CFMサイクルの1つ目は「可視化」です。クラウド利用費用のデータを取得し、どのAWSリソースに帰属するコストなのかを明確にするステップです。ただ、単純にデータを見えるようにするというわけではありません。可視化の目的は、得られた情報を基に起こすアクションを明確に定めることです。
可視化における代表的なツールとして、次のサービスがあります。
AWS Cost Explorer
クラウド利用費と利用量を経時的に可視化、把握、管理することができるサービスです。期間、フィルタ、グループ化といった条件を付けて、各サービス利用料や使用量のデータをグラフや表で表示することが可能です。また、サイズの適正化に関する推奨やSavings Plans、リザーブドインスタンスの推奨を表示する機能を保有します。利用料の将来の予測機能もあり、期間を設定することで現在の利用費用から今後12ヶ月の予測利用料を表示する機能も有しています。
AWS Cost and Usage Report(AWS CUR)
Cost Explorerだけでは対応できない複雑なユースケースの場合に、より詳細な分析を行うことができるサービスです。AWSの利用状況と利用料金情報を詳細かつ包括的に提供し、1時間単位、リソースID単位などで情報を細かく分析できます。Amazon Athena やAmazon QuickSightなど他のAWSサービスやサードパーティSaaS製品と統合した可視化および分析も可能です。
AWS Cost Categories
クラウド利用費用を様々なルールでグルーピング、マッピングおよび分類することで可視化を行うサービスです。
AWS Cost Anomaly Detection
異常と思われる想定外の利用費用が発生した場合にアラートを送信します。また、機械学習で週次や月次などの定期的な変動を学習することで異常の誤検出を最小限に抑えます。アラートにはEメールの他、Amazon SNSも利用できるため、Slackやチャネルへアラート投稿するなど、管理者がよりタイムリーに調査・問題解決にあたることをサポートします。
AWS Billing Conductor
マルチアカウント環境において、請求をまとめたいアカウントごとにグルーピングすることで、組織のコスト管理を容易にするサービスです。一括請求を管理している部門では、独自のコストレートを適用したうえで、各部門に請求を行うケースがあります。AWS Billing Conductorを使えば、請求者は簡単に独自のコストレートを定義することができます。そして、定義に基づいてグループごとのAWS利用料の請求書を発行できます。
AWS Config
AWSリソースの構成情報をや設定を継続的にモニタリング・記録するサービスです。リソースに対して「誰がいつ何をしたか」を自動的に記録することで、トレース可能な状態にします。Config Rules 機能を使うと、構成評価を行うことも可能です。
AWS Organizations
クラウド環境を一元的に管理および統制するためのサービスです。組織内のメンバーアカウントの請求をまとめる一括請求機能や、AWSアカウントの作成や管理を行うための機能があります。
また、サービスコントロールポリシーをユーザ、アカウントまたはOUに対して、組織内のAWSリソース、サービス、リージョンへのアクセスを制御することもできます。
AWS Resource Groups
多数のリソースを一度に管理および自動化するサービスです。AWS Resource Groups のタグエディタ機能を利用して、タグをサポートしている複数のリソースに一度に追加、削除、置換することができます。また、AWS Resource Groups タグポリシー画面から、タグポリシーの適用状況を確認することができます。
AWS Service Catalog
サービス提供者が登録した製品を利用者がセルフサービスで展開できる仕組みを構築できるサービスです。製品とは、AWSでのデプロイに利用できるようにするITサービスのことです。製品は、Amazon EC2 インスタンス、ストレージボリューム、データベース、モニタリング設定、ネットワークコンポーネント、パッケージ化されたAWS Marcketplace製品など、1つ異常のAWSリソースで構成されます。
2. 最適化
2つ目は、クラウドコストの最適化です。「クイックウィン最適化」と「アーキテクチャ最適化」の2種類があります。
クイックウィン最適化は、構成変更を行わずにクイックに実施可能で、且つ効果もクイックに享受できるコスト最適化です。そのため、月次、週次などの短いサイクルで実施されることが理想とされています。
クイックウィン最適化の代表的なアプローチとして、次のような策が挙げられます。
- インスタンス選定
- 不要リソース停止
- スケジュール調整
- ストレージ選定
- ライセンス最適化
- 購入オプション選定
一方、アーキテクチャ最適化は、中長期的な観点でクラウドネットワークやクラウドネイティブの構成を検討することです。
クラウドネットワークでは、データ転送費用、IPアドレスやゲートウェイサービスの費用などが検討対象とされ、クラウドネイティブではクラウドの特性を活かしてシステムの構築や運用に掛かるコストの抑制策が検討されます。
アーキテクチャ最適化では、例えば次のようなアプローチが考えられます。
- コンテナの利用
- マネージド型サービス
- サーバレスサービスの利用
最適化における代表的なツールとして、次のサービスがあります。
AWS Well-Architected Tool
AWS Well-Architected Frameworkをベースとし、クラウドアーキテクトがアプリケーション向けに実装可能な、安全で高いパフォーマンスと障害耐性を備えた、効率的なインフラストラクチャの構築をサポートする目的で開発されたツールです。ワークロードを定義し、ベストプラクティスを使用してクラウド向けに構築するためのアクションプランを提供します。
AWS Trusted Advisor
AWSの提唱するWell-Architectedのうち、「運用上の優秀性」、「セキュリティ」、「信頼性」、「パフォーマンス効率」、「コストの最適化」の5つの柱について、ベストプラクティスに沿っているかどうかを評価し、改善の可能性があるものをレコメンデーションとして提供します。「コストの最適化」については、リザーブドインスタンスやSavings Plansの推奨や不要リソースの検出などの機能を提供しています。
AWS Compute Optimizer
過去の使用率メトリクスを機械学習を使って分析することで、クラウド利用費用の削減・パフォーマンスを向上させるAWSリソースを推奨します。クラウド利用費用とパフォーマンスはトレードオフの関係です。過剰なプロビジョニングは無駄な利用費用につながり、過剰な利用費用の削減はSLAの低下、機会損失、顧客体験の悪化につながります。AWS Compute OptimizerはAmazonEC2、Amazon EBS、AWS Lambda関数の3つのサービスを対象として、クラウド利用費用とパフォーマンスの最適な設定を選択するのに有益な情報を提供します。
Amazon S3 Storage Lens
オブジェクトストレージの使用状況とアクティビティの傾向を可視化します。アカウント、バケット、さらにはプレフィックスレベルでアクセス頻度などの使用状況を分析し、Amazon S3の持つ様々なストレージクラスを活用して、より利用料を最適化するための推奨を提供します。
3. 予測・計画
予測・計画の目的は、将来のクラウド支出の計画と管理を改善することです。最適化における代表的なツールとして、次のサービスがあります。
AWS Budgets
クラウド利用費用を監視し、月ごとの予算の設定と予算を超過する前にアラート通知やインスタンスに対するオペレーションを自動的に行うことができます。また、AWS利用費用の予算だけではなく、使用タイプや使用タイプグループの使用量、Savings Plans、リザーブドインスタンスの利用率やカバー率に対してユーザが定義したしきい値に基づき、アラートの通知を設定できます。
Amazon Forecast
機械学習を使った時系列データを用いて予測を立てます。過去の時系列データを分析することで、クラウド利用費用が需要に応じて変動が大きかったり、季節変動性がある場合でも、より精微な予測を行うことができます。
FinOpsの実践
サイクルの4つ目は、FinOps(Financial Operation)の実践です。これまでに説明してきた「可視化」、「最適化」、「予測・計画」のコスト最適化サイクルを継続して実施していくための取り組みです。
今後紹介予定の節約術リスト
CFMの考え方を踏まえた上で、この記事シリーズでは次のAWS節約術をご紹介する予定です。
- AWS Cost Explorerによるコストの可視化
- EBSストレージボリュームの見直し
- S3ストレージクラスの見直し
- バックアップの見直し
- ログ管理の見直し
- インスタンスサイズの見直し
- 購入オプションの検討
さいごに
さて、「貧乏エンジニアの徹底節約術!」と題し、その導入としてコスト削減と最適化の概要を説明させていただきました。次回以降より、具体的な節約術を紹介していく予定です。
次の更新までお待ちください。
関連記事