AWS Well-Architected Cost Optimization Workshop で AWS コスト最適化のハウツーを学ぼう!

2024.06.07

AWS におけるワークロードの設計や保守に関するベストプラクティス集である AWS Well-Architected Framework の中にコスト最適化の柱があります。


引用:AWS Well-Architected Framework 2023年10月 アップデート情報 / AWS Well-Architected Framework Oct. 2023 update

コスト最適化の柱は、5つの重点分野と49(24/6/6 時点)のベストプラクティスで構成されています。

  • クラウド財務管理を実践する
  • 経費支出と使用量の認識
  • コスト効率を考慮しながらリソースを利用する
  • 需要を管理しリソースを供給する
  • 継続的最適化(時間をかけて最適化する)

AWS Well-Architected Framework を利用したレビューでは AWS Well-Architected Tool 等を利用して、対象ワークロードでのレビューを行い、現状把握やベストプラクティスとのギャップを確認し、関係者でネクストアクションを決定していきます。またレビューまでは実施しないでも、より良い設計や保守に関するヒントを得るためにホワイトペーパーを参照する機会があります。

最近、コスト最適化の重要性が注目を集めている中で AWS Well-Architected Framework コスト最適化の柱を参照されている方もいらっしゃるのではないかと思います。

そういった際に、レビューなどで明らかになった点を実際にワークロードへ実装する方法やベストプラクティスの具体的な内容を理解することが難しいことはありませんか?(私は時々あります)そんな方にお勧めしたいのが、今回取り上げる AWS Well-Architected Cost Optimization Workshop になります。

AWS Well-Architected Cost Optimization Workshop とは?

AWS Well-Architected Framework ではハンズオンラボ( AWS Well-Architected Framework Labs )が提供されていて、現在は6つの柱ごとにワークショップやコンテンツが提供されており、AWS Well-Architected Cost Optimization Workshop はコスト最適化の柱のワークショップにあたります。

このワークショップには、AWS Well-Architected フレームワークのコスト最適化の柱からのベストプラクティスを使用してコストを最適化し、アーキテクチャを学習、測定、改善するのに役立つハンズオンラボが含まれています。 コスト最適化の柱 は 5 つのベスト プラクティス領域に分かれており、このワークショップでは同じ構造に従って、ベスト プラクティスを説明する実践的なガイダンスを提供します。

引用:AWS Well-Architected Cost Optimization Workshop

ワークショップ内では AWS サービスを利用しますが、既に他の SaaS サービスなどを利用している場合は、そこは置き換えて考えれば良いかなと思います。

ワークショップの章立ては?

※ ワークショップは英語のみで提供されているため、英語に不慣れな方はブラウザで翻訳等をしながら進めます。本記事でも機械翻訳した日本語で表記します。

章立てとしては、まずはワークショップ用の環境準備にあたる 「AWS アカウントの設定」 を行い、続いて冒頭で紹介したコスト最適化の柱の重点分野ごとに分かれています。

  • AWS アカウントの設定
  • クラウド財務管理を実践する
  • 支出と使用状況の認識
  • コスト効率の高いリソース
  • リソースの需要と供給を管理する
  • 時間をかけて最適化する

ワークショップの中身を見ていこう

AWS アカウントの設定

実施内容は下記となります。何も無い状態から AWS Organizations で構成された環境を想定して準備する内容が列挙されているため、既にお持ちの環境で実施する場合は、設定済みものや今回はそこまでは不要と判断出来るもの(例えば IAM Identity Center)もあります。

  • IAMアクセスを構成する
  • アカウント構造を作成する
  • コストと使用状況レポートを構成する
  • IAM Identity Center(AW​​S Single Sign-Onの後継)を構成する
  • アカウント設定を構成する
  • Amazon QuickSightのセットアップ
  • AWS コストエクスプローラーを有効にする
  • AWS 生成のコスト配分タグを有効にする
  • 月次レポートの設定(オプション)
  • 掃除

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

2024/06/06 時点では準備中とのことです。(残念...今後に期待

工事中
ワークショップのこのセクションは現在構築中です。このセクションのベスト プラクティスをサポートするラボの開発に全力で取り組んでいます。

詳細については、Well-Architected Cost Optimization ホワイトペーパーの Practice Cloud Financial Management セクションをご覧ください。

この章では、クラウド財務管理(CFM)に関する内容となっているため、個人的には今回のワークショップと重複する部分もありますが、近いものとして下記が参考になりそうかなと思います。

支出と使用状況の認識

コストの可視化と分析のための準備と実施し、ワークロードの支出と使用状況を把握することが、コスト最適化のスタート部分となります。

組織のコストと推進要因を理解することは、コストと使用状況を効果的に管理し、コスト削減の機会を特定するために重要です。
使用状況と支出を把握するために、多面的なアプローチを検討してください。チームはデータを収集し、分析し、レポートする必要があります。考慮すべき主な要素は次のとおりです。

ラボとしては、下記が提供されています。(もりもりですね)

  • タグポリシー
  • コストと使用状況のガバナンス
  • コストと使用状況の分析
  • コストの可視化(コストエクスプローラー)
  • コストと使用状況のガバナンス - コントロール
  • 自動 CUR 更新と取り込み
  • コストと使用状況の分析 - SQL
  • コストの可視化 - QuickSight
  • ワークロードの効率性
  • 自動化された Athena CUR クエリと電子メール配信
  • コストカテゴリ
  • コスト見積
  • コストジャーニー
  • 目標とターゲット
  • ライセンスコストの分析
  • CUR の分割とアクセスの共有

試しに一つ、ラボの詳細を確認してみましょう。

タグポリシー

各ラボでは、導入(ラボ概要と実装することでの効果)や目標(ラボで達成できること)、AWS Well-Architected Framework の該当するベストプラクティス等が記載されています。

コスト効率の高いリソース

可視化された使用状況やコストからどのように最適化のアプローチを進めていくかの部分になります。

ワークロードに適切なサービス、リソース、構成を使用することが、コスト削減の鍵となります。 コスト効率の高いリソースを作成するときは、次の点を考慮してください。

トピック
・ サービスを選択する際にコストを評価する
・ 正しいリソースの種類、サイズ、数を選択してください
・ 最適な価格モデルを選択する
・ データ転送の計画

クイックウィン最適化(購入オプション選定やインスタンス・ストレージ選定)にあたる部分がラボとして、提供されています。

  • 価格設定モデル - パート 1
  • 価格モデル分析
  • 価格設定モデル - パート 2
  • 適正規模の推奨事項
  • Compute Optimizer による適正化
  • コスト異常検出
  • Amazon S3 インテリジェント階層化

RI や SP の購入時のリスクや効果の計算シートや可視化ツール、AWS Budgets と AWS Cost Anomaly Detection の違いなども知ることが出来ます。

リソースの需要と供給を管理する

クラウドのメリットであるリソースの柔軟性を活かしたコスト最適化の方法に関する部分になります。

クラウドに移行すると、必要なものに対してのみ料金を支払います。必要なときにワークロードの需要に合わせてリソースを供給できるため、コストがかかり無駄なオーバープロビジョニングが不要になります。また、スロットル、バッファ、キューを使用して需要を変更し、需要を平滑化して、より少ないリソースで対応することもできます。

ジャストインタイム供給の経済的メリットは、リソース障害、高可用性、プロビジョニング時間を考慮してプロビジョニングする必要性と比較する必要があります。需要が固定か変動かに応じて、スケールアップしても環境の管理が最小限になるように、メトリックと自動化を作成するように計画してください。需要を変更するときは、ワークロードが許容できる許容可能な遅延と最大遅延を知っておく必要があります。

AWS では、需要の管理とリソースの供給にさまざまなアプローチを使用できます。

ラボとしては、下記が提供されています。

  • 大規模な EC2 スケジューリング

時間をかけて最適化する

こちらも 2024/06/06 時点では準備中とのことです。

工事中
ワークショップのこのセクションは現在構築中です。このセクションのベスト プラクティスをサポートするラボの開発に全力で取り組んでいます。

詳細については、Well-Architected Cost Optimization ホワイトペーパーの 時間の経過に伴う最適化 セクションをご覧ください。 。

この部分に該当する AWS Well-Architected のベストプラクティスは下記となります。

  • レビュープロセスを定義し、定期的に作業負荷を分析する
    • COST10-BP01 作業負荷レビュープロセスの開発
    • COST10-BP02 この作業負荷を定期的に確認し分析する
  • 運用の自動化
    • COST11-BP01 運用の自動化を実行する

さいごに

本記事を書きながら、最後にお勧めラボをご紹介しようと各ラボを読み込んでいたのですが、どうも似たような内容を以前にも見た気がしていましたので、自分の過去記事を確認したところ、数年前に AWS Well-Architected Cost Optimization Workshop の前身である AWS Well-Architected Labs Cost Optimization をやってみた記事を書いていました、、

当時の良いコンテンツを残しつつも AWS Well-Architected Framework のベストプラクティスとの関連性や AWS でのコスト最適化の実現方法がより充実されている印象を受けました。
AWS Well-Architected Framework Review を実施したりホワイトペーパーを読んでみたけれど、この後どのように実装するのが良いのか悩ましい。また AWS コスト最適化を実践したいけれど、どのように始めるのが良いかを検討されている際は、本ワークショップを実施するか、内容を確認するだけでもより具体的なイメージやヒントを得ることが出来るのではないかと思います。

ご参考までに、お勧めしたいなと思ったラボは下記の4つです!

コストと使用状況の分析 - SQL

AWS において CUR は最も詳細なコストと使用状況が提供されるデータです。CUR を利用することで Cost Explorer 等では難しい情報も取得することが出来ます。

お客様の AWS の利用状況とご利用料金情報を提供する最も細かく最も包括的なレポートです
引用:AWS Black Belt Online Seminar - AWS Cost and Usage Reports

一方で CUR に不慣れな場合には、情報量も多く、どのように利用すれば良いか悩みます。。(私も悩んでいます)そんな方にお薦めしたいのが本ラボです。Athena を利用した分析環境の構築と SQL ライブラリが紹介されています。CUR1.0(レガシーCUR)をベースにした環境構築は CloudFormation が用意されているので簡単に構築できます。(CUR2.0 には対応していないので要注意です)

17のクエリが紹介されています。例えば、下記があります。

  • EC2 オンデマンドのコストトップ
SELECT "line_item_product_code", "line_item_line_item_description", round(sum("line_item_unblended_cost"),2) as cost from ${table_name}
WHERE "line_item_product_code" like '%AmazonEC2%' and "line_item_usage_type" like '%BoxUsage%'
GROUP BY "line_item_product_code", "line_item_line_item_description"
ORDER BY cost desc
LIMIT 10;
  • 未使用の貯蓄プラン(貯蓄プランごとに、毎月の合計コミットメントと合計使用量を確認します)
SELECT "bill_payer_account_id", "bill_billing_period_start_date", "line_item_usage_account_id", "savings_plan_savings_plan_a_r_n", sum(savings_plan_savings_plan_effective_cost) as SavingsPlanUsage, sum("savings_plan_recurring_commitment_for_billing_period") as SavingsPlanCommit from ${table_name}
WHERE  length("savings_plan_savings_plan_a_r_n") > 0
GROUP BY "bill_payer_account_id", "bill_billing_period_start_date", "line_item_usage_account_id", "savings_plan_savings_plan_a_r_n"
order by bill_billing_period_start_date desc, SavingsPlanCommit desc, SavingsPlanUsage
LIMIT 10

また本ラボ以外にも、下記のワークショップでも豊富な CUR クエリライブラリがあるため、こちらもチェックをお薦めします。自分たちが欲しい情報にピッタリのクエリが既にあるかもしれません!

ワークロードの効率性

不要なリソースを削除したり、適切なサイズやストレージを選定する等を行った後に、よりアーキテクチャに踏み込んだ最適化を行います。その際、どの部分(何)に対して最適化するか、変更後の(どう)評価基準を検討する必要があります。方法の一つに、ワークロードの効率性(コスト最適化の柱にも記載がある通り「最小限のリソースで最大限の成果が出ていることが望ましい」ため)があります。ワークロードのパフォーマンスや状態を示すメトリクスやログ(※1)とコストデータを紐付けることで、ワークロードのコスト効率を可視化することで、より詳細な情報を得ることが出来ます。と、書くのは簡単ですが、実行するのは難しく、本ラボではまずはシンプルなサンプルワークロードのデータを利用して進めていきます。

コストとリクエスト(転送量)の推移を重ねることで、「リクエストが横ばいで、コストが増加」「リクエストが減少で、コストが横ばい」といった望ましくは傾向や「リクエスト数が増加で、コストが横ばい」「リクエスト数が横ばいで、コストが減少」といった通常とは異なる変化にも気付くことが出来ます。

より軸を加えながら、効率性が高い部分や低い部分の特定と要因を分析していき、ネクストアクションを検討していきます。といった流れを体験することが出来ます。

もしかしたら、対応するベストプラクティスが「COST03-BP05 請求およびコスト管理ツールを構成する」と記載されていますが「COST03-BP06 ワークロードメトリクスに基づいてコストを配分する」の方が近い内容が記載されているので、誤記かもしれません。

※1 AWS Well-Architected Framework - 運用上の優秀性の柱 - ワークロードのオブザーバビリティの活用

目標とターゲット

このラボでは、コスト最適化を進めるあたり、各取り組みの主な目標(評価指標)のサンプルが紹介されています。中長期的にコスト最適化の取り組み計画を立てる際には、「何に対して」「どういう状態」を目指すのかといった具体的な目標が必要かと思いますし、実施状況の把握(進捗)や成果評価を行う際にも重要な観点になります。短期的なコスト削減は完了していて、よりコスト最適化を進めたい方や組織としてコスト管理を実践されたい方にはお薦めなラボです。

  • クラウド財務管理 (CFM)
  • 使用状況を管理する
  • コストと使用状況を監視する
  • 廃止リソース
  • サービスの選択
  • リソースの種類、サイズ、数
  • 価格モデル
  • データ転送
  • 需要と供給のリソースを管理する
  • 新しいサービスを評価する

例1:クラウド財務管理 (CFM) - コストを考慮したプロセス - クラウド財務管理レポート

例2: コストと使用状況を監視する - 費用

例3:価格モデル - 貯蓄プラン(Savings Plans) - 貯蓄プランの購入

価格モデル分析

このラボは ”前回も” お薦めのラボにしていました。(まだまだ悩んでいるという証拠かもしれません)

利用状況とコストのデータと料金(オンデマンド、SP)データを利用して、購入戦略のための情報を可視化していきます。

合わせて、こちらのラボも 価格設定モデル - パート 2 お薦めしていました!