"このコンテンツは古いものです。現在、このバージョンの Well-Architected Framework は、次の場所にあります。 https://docs.aws.amazon.com/ja_jp/wellarchitected/2022-03-31/framework/cost-optimization.html

コスト最適化

コスト最適化の柱には、最も低い価格でシステムを運用してビジネス価値を実現する能力が含まれます。

コスト最適化の柱では、設計原則、ベストプラクティス、質問の概要を説明します。実装に関する規範的なガイダンスについては、「コスト最適化の柱」のホワイトペーパーを参照してください。

設計原則

クラウドでのコスト最適化には、5 つの設計原則があります。

定義

クラウドでのコスト最適化には、5 つのベストプラクティスの分野があります。

Well-Architected フレームワーク内の他の柱と同様に、この柱にも考慮すべきトレードオフがあります。市場投入スピードとコストのどちらを優先するかはその一例です。市場投入のスピードを向上する、新しい機能を導入する、締め切りに間に合わせるといったケースでは、前払いコストの投資を最適化するよりも、スピードを最適化した方が良い結果が得られます。データでなく時間的制約に基づいて設計上の決断が下されることがあります。また、コストを最適化するデプロイのためにベンチマークを設定することに時間を掛けるより、「万一の備え」でコストを過大に見積もる風潮は常に存在します。その結果、デプロイのプロビジョニングが過剰に、最適化が過小になる場合があります。ただし、オンプレミス環境からクラウド環境に「リフト & シフト」式にリソースを移行してから最適化を図る必要がある場合は、妥当な選択といえます。適切な労力を当初からコスト最適化戦略に投入すると、ベストプラクティスが一貫して適用され、不要なオーバープロビジョニングも回避できるため、クラウドの経済的メリットをより早く実感できます。以下のセクションでは、クラウド財務管理の運用とワークロードのコスト最適化について、初期および進行中の両方に使用できるテクニックとベストプラクティスを説明します。

ベストプラクティス

クラウド財務管理を実践する

クラウドの導入により、承認、調達、インフラストラクチャのデプロイサイクルが短縮されるため、技術チームは、より迅速にイノベーションを起こすことができます。ビジネス価値と財務的な成功を実現するには、クラウドでの財務管理に対する新たなアプローチが必要です。このアプローチとはクラウド財務管理であり、組織全体での知識の蓄積、プログラム、リソース、プロセスを実装することで、組織全体の機能を構築します。

多くの組織は、異なる優先順位を持つ多数の異なる単位で構成されています。合意された一連の財務目標に整合するように組織を調整し、それらを満たすメカニズムを組織に提供することで、より効率的な組織を構築できます。有能な組織は、より迅速にイノベーションを進め、より迅速に構築し、より俊敏になり、内部的または外部的要因に合わせて自らを調整します。

AWS では、Cost Explorer、およびオプションで Amazon Athena と Amazon QuickSight をコストと使用状況レポート (CUR) とともに使用して、組織全体のコストと使用状況を把握できます。AWS Budgets は、コストと使用状況に関する事前通知を提供します。AWS ブログでは、お客様が新しいサービスリリースの最新の状況を常に知ることができるように、新しいサービスと機能に関する情報を提供しています。

以下の質問は、コスト最適化に関するこれらの考慮事項に焦点を当てています。

COST 1: クラウド財務管理はどのように実装しますか?

コスト最適化機能を構築するときは、メンバーを引き入れるとともに、CFM および CO のエキスパートでチームを補完することも検討してください。既存のチームメンバーは、組織が現在どのように機能しているか、および改善を迅速に実施する方法を理解します。また、分析やプロジェクト管理など、補足的または専門的なスキルセットを持つ人材を含めることも検討します。

組織にコスト意識を浸透させようとする際には、既存のプログラムおよびプロセスを改善または構築することを検討します。新しいプロセスおよびプログラムを構築するよりも、既存のものに追加する方がはるかに迅速です。これにより、結果を得るまでの時間が大幅に短縮されます。

経費支出と使用量の認識

クラウドによる柔軟性と俊敏性の向上は、イノベーションを促進し、開発とデプロイのペースを高めます。クラウドによってオンプレミスインフラストラクチャのプロビジョニングに関連した手動プロセスや時間を省くことができます。これにはハードウェア仕様の決定、価格交渉、注文管理、発送のスケジュール設定、リソースのデプロイなどが含まれます。ただし、この使いやすさと事実上無限のオンデマンドキャパシティーを生かすには、費用に対する新しい考え方が必要になります。

多くのビジネスは、さまざまなチームが運用する複数のシステムによって構成されています。リソースのコストをそれぞれの組織や製品オーナーに帰属させることができると、リソースを効率的に使用し、無駄を削減できます。コストの帰属を明確にすることで、実際に利益率の高い製品を把握し、予算の配分先についてより多くの情報に基づいた決定ができるようになります。

AWS では、AWS Organizations または AWS Control Tower を使用してアカウント構造を作成します。これにより、分離が可能になり、コストおよび使用量の配分に役立ちます。リソースにタグ付けして、ビジネスや組織の情報を使用量とコストに適用することもできます。AWS Cost Explorer を使用してコストと使用状況を可視化するか、Amazon Athena と Amazon QuickSight でカスタマイズされたダッシュボードと分析を作成します。コストと使用量の制御は、AWS Budgets による通知、AWS Identity and Access Management (IAM) や Service Quotas を使用した制御によって行われます。

以下の質問は、コスト最適化に関するこれらの考慮事項に焦点を当てています。

COST 2: 使用状況をどのように管理しますか?
COST 3: 使用状況とコストをどのようにモニタリングしますか?
COST 4: 不要なリソースをどのように削除しますか?

コスト配分タグを使用して、AWS の使用量とコストの分類や追跡ができます。AWS リソース (EC2 インスタンスや S3 バケットなど) にタグを付けると、AWS では使用量とタグの情報を使ってコストと使用状況のレポートが生成されます。組織のカテゴリ (コストセンター、ワークロード名、所有者など) を表すタグを付けることで、複数のサービスにわたってコストを整理することができます。

コストと使用状況のレポートとモニタリングで、適切なレベルの詳細および粒度を使用していることを確認します。概括的なインサイトと傾向を知るには、AWS Cost Explorer で日々の詳細を使用します。より詳細な分析と検査を行うには、AWS Cost Explorer で時間単位の粒度を使用するか、コストと使用状況レポート (CUR) を使用して時間単位の粒度で Amazon Athena と Amazon QuickSight を使用します。

リソースのタグ付けとエンティティのライフサイクル追跡 (従業員、プロジェクト) を組み合わせることで、組織に価値をもたらしておらず、廃止する必要がある孤立したリソースやプロジェクトを特定できるようになります。予測されている超過支出を通知する請求アラートをセットアップできます。

費用対効果の高いリソース

ワークロードにとって適切なインスタンスとリソースを使用することが、コスト削減の鍵になります。たとえば、レポート処理を小規模なサーバーで実行すると 5 時間かかるものの、費用が 2 倍の大規模なサーバーでは 1 時間で実行できるとします。どちらのサーバーでも同じ結果が得られますが、長期的に見れば小規模なサーバーで発生するコストの方が大きくなります。

優れた設計のワークロードでは最もコスト効率の良いリソースが使用されるため、大幅にプラスの経済的影響が生じます。また、マネージドサービスを使用することで、コストを削減できる場合もあります。例えば、E メールを配信するためにサーバーを保守することなく、メッセージ単位で料金が発生するサービスを使用できます。

ニーズに最も適した方法で EC2 インスタンスやその他のサービスを利用できるように、AWS には柔軟でコスト効率が良いさまざまな料金オプションがあります。オンデマンドインスタンスにより、最小コミットメントの定めなく、コンピューティングキャパシティーに対して 1 時間単位で料金を支払うことができます。Savings Plans とリザーブドインスタンスは、オンデマンド料金に対して最大 75% の割引を提供します。スポットインスタンスでは、使用されていない Amazon EC2 キャパシティーを活用し、オンデマンド料金と比べて最大 90% 節約できます。スポットインスタンスステートレスなウェブサーバー、バッチ処理など、サーバー群の中で個々のサーバーが動的に追加または削除されることを許容するシステムや、HPC とビッグデータの使用に適しています。

サービスを適切に選択することでも、使用量とコストを削減することができます。たとえば、CloudFront を使用するとデータ転送を最小限に抑えられます。コストを完全に排除できる場合もあります。たとえば、RDS で Amazon Aurora を活用すれば、高額のデータベースライセンスコストが発生しません。

以下の質問は、コスト最適化に関するこれらの考慮事項に焦点を当てています。

COST 5: サービスを選択するとき、どのようにコストを評価しますか?
COST 6: コストターゲットに合わせて、リソースタイプ、リソースサイズ、およびリソース数を選択するには、どうすればよいですか?
COST 7: コストを削減するには、料金モデルをどのように使用したらよいでしょうか?
COST 8: データ転送料金についてどのように計画していますか?

サービスの選択時にコストを考慮に入れ、Cost Explorer や AWS Trusted Advisor などのツールを使って定期的に AWS の使用状況を確認すると、使用状況をアクティブにモニタリングしてデプロイを適宜調整できます。

需要を管理し、リソースを供給する

クラウドに移行すると、お支払いは必要な分のみになります。必要な時にワークロードの需要に合わせたリソースを供給できるため、コストがかかる無駄なオーバープロビジョニングの必要性を排除できます。また、スロットル、バッファ、またはキューを使用して、需要を滑らかにし、少ないリソースで供給することで、コストを削減したり、後でバッチサービスで処理したりできます。

AWS では、ワークロードの需要に合わせてリソースを自動的にプロビジョニングできます。需要または時間ベースのアプローチを使用した Auto Scaling で、必要に応じてリソースを追加および削除することが可能となります。需要の変化が予測できる場合、さらに費用を削減し、リソースをワークロードのニーズに確実に合わせることができます。Amazon API Gateway を使用してスロットリングを実装するか、Amazon SQS を使用してワークロードにキューを実装できます。いずれの場合も、ワークロードコンポーネントの需要を変更できます。

以下の質問は、コスト最適化に関するこれらの考慮事項に焦点を当てています。

COST 9: どのように需要を管理し、リソースを供給しますか?

需要を変更してリソースを提供するように設計する場合、使用パターン、新しいリソースのプロビジョニングにかかる時間、および需要パターンの予測可能性を積極的に検討します。需要を管理する際には、適切なサイズのキューまたはバッファがあること、および必要な時間内にワークロードの需要に応答していることを確認します。

経時的な最適化

AWS では新しいサービスと機能がリリースされるため、既存のアーキテクチャの決定をレビューし、現在でもコスト効率が最も優れているかどうかを確認することがベストプラクティスです。要件の変化に応じて、不要になったリソース、サービス全体、システムを積極的に廃止してください。

新しい機能またはリソースタイプを実装すると、変更の実装に必要な労力を最小限に抑えながら、ワークロードを段階的に最適化できます。これにより、時間の経過とともに効率が継続的に向上し、最新のテクノロジーを利用して運用コストを削減できます。新しいサービスを使用して、ワークロードに新しいコンポーネントを置き換えたり、追加したりすることもできます。これにより、効率が大幅に向上するため、ワークロードを定期的に確認し、新しいサービスや機能を実装することが不可欠です。

以下の質問は、コスト最適化に関するこれらの考慮事項に焦点を当てています。

COST 10: 新しいサービスをどのように評価していますか?

デプロイを定期的に見直すときには、新しいサービスでどのようにコストを節約できるか評価します。たとえば、RDS で Amazon Aurora を使用すると、リレーショナルデータベースのコストを削減できます。Lambda などのサーバーレスを使用すると、コードを実行するためにインスタンスを運用および管理する必要がなくなります。

リソース

コスト最適化に関する AWS のベストプラクティスの詳細については、以下のリソースを参照してください。

Cost Optimization Pillar
AWS Well-Architected Cost Optimization Labs
Well-Architected Tool
AWS Cost Management Blog
AWS Billing and Cost Management
AWS Tagging Strategies
Getting Started with Amazon EC2 Spot Instances
AWS Documentation