はじめに

Well-Architectedフレームワーク(以下、WA)のレビューをする際、大変な作業としてAWSやWA独特の言葉を読み解き、具体的にどういった状態であれば実務に当てはまるか考えていく作業があがると思います。今回は項目の概要をまとめて、具体的にどのようにレビューをすればよいのか腹落ちできるようにしたいと思います。
今回は6つの柱 (優れた運用効率、セキュリティ、信頼性、パフォーマンス効率、コストの最適化、持続可能性) の中で、今回は筆者がプリセールスとしてコストの分野が一番なじみ深いであろうと思ったため、コストの最適化のCOST 1.に焦点を当てたいと思います。
※WAレビューは人により様々な解釈ができるものと思いますが、今回はあくまで筆者の個人的な見解となるため、その点ご了承ください。

コスト最適化

COST 1.の項目として下記があります。
※2025/1/31時点でのコンソール上のCOST 1.の項目となります。

COST 1. 使用状況をどのように管理しますか?

  • 組織の要件に基づいてポリシーを策定する
  • アカウント構造を実装する
  • グループとロールを実装する
  • コストコントロールを実装する
  • プロジェクトのライフサイクルを追跡する

これらの項目についてどういう観点でレビューすべきか、具体的にどういう状態がWell-Architectedフレームワークに沿っていると考えられるか簡単にまとめていきたいと思います。

組織の要件に基づいてポリシーを策定する

コスト最適化に焦点を当てた独自のクラウドガバナンスポリシーを策定し、定期的にレビューします。
下記1~4のステップを定期的に手に回すことで、リソースを効率的に使用し、無駄を削減できるのに効果的なアプローチになるのではないでしょうか。

  1. コスト/使用量や収益性を可視化し、どの程度なのか把握。
  2. 1.を理解したうえで、組織の要件を整理。
  3. 2.の要件を踏まえたうえで、クラウドをどのように使用するかや、リソースをどのように管理するかを具体的に定義し実装。
  4. 定期的にポリシーを検査し、更新。

改善例

コスト最適化に向けて、例えば下記の様なポリシーの策定が考えられます。

 

アカウント構造を実装する

アカウントの構造を実装し、組織全体でのコストの割り当てと管理を可能にします。ドキュメントの実装ガイダンスではAWS Organizationsによる環境の一元管理が紹介されています。またControl Towerを使用することで、複数の AWS アカウントのセットアップと構成を迅速に組織のコンプライアンスポリシーに準拠した状態で作成することが可能です。

改善例

AWS Organizations内では、一括請求により、1 つ以上のメンバーアカウントと管理アカウントとの間に構造が作成されます。
一括請求機能により、複数のメンバーAWSアカウントの支払いを単一の管理アカウントにまとめつつ、リンクされた各アカウントのアクティビティを可視化することができます。コストと使用量が管理アカウントに集計されると、サービスの従量制割引とコミットメント割引 (Savings Plansとリザーブドインスタンス) を最大限に活用し、割引額を最大化できます。

詳細:What is AWS Organizations?(英語)
活用事例:AWS Organizations の概要や強み、活用事例を紹介!〜アイレット× AWS 共催ウェビナーレポート〜

グループとロールを実装する

ポリシーに沿ったグループおよびロールを実装し、各グループのインスタンスおよびリソースを作成、変更、廃止できるユーザーを管理します。例えば、開発、テスト、本番グループを実装します。上記実装をすることで、以下のメリットを享受することができます。

  1. 機密情報への不正アクセスの防止
  2. 不要なアクセス権は与えない様にし、誤用に伴うリスクを低減

改善例

個々のユーザー単位ではなく、グループやロール単位でアクセス許可を管理します。
このような管理をすることで、例えばユーザーのロールが変更された場合、管理者は個々のユーザーアカウントを設定し直さなくても、ロールまたはグループのレベルでアクセス権を調整できます。

コストコントロールを実装する

組織のポリシーと定義済みのグループおよびロールを作成することで、コストの管理/把握がしやすくなります。

改善例

AWS Budgets

AWS BudgetsでAWS コスト、使用量、コミットメント割引 (Savings Plans とリザーブドインスタンス) の通知を設定、予算を定義し、予算を超えた場合アラートを発報することができる。
(予算は集計コストのレベル (例えば、全コスト)、またはリンクアカウント、サービス、タグ、アベイラビリティーゾーンなどの特定のディメンションのみを含む詳細レベルで作成可能。)
詳細:AWS Budgets を用いてコストを管理する

AWS Cost Anomaly Detection

AWS Cost Anomaly Detectionを使用することで、予期しないコストが発生する回数を減らすことが可能です。AWS Cost Anomaly Detection は、機械学習を使用してコストと使用状況を継続的にモニタリングし、異常な支出と根本原因を特定することが可能です。仕組みは以下の通りです。

  1. AWS Cost Anomaly Detectionでコストモニタを作成し、ドルのしきい値 (影響が 1,000 USD を超える異常に対してアラートを出すなど) を設定し、アラートの設定を選択。
  2. 異常な支出が生じた場合、アラートの受信。
  3. 異常の背後にある根本原因とコストへの影響を分析。
    詳細:AWS コスト異常検出
AWS Cost Explorer

AWS Cost Explorerでは独自の異常解析を監視および実行することもできます。
実装例:Cost Explorer によるコスト配分タグ未設定リソースの確認

AWS IAMとAWS Organizations SCP

IAMを使用すると、AWSのリソースを作成または管理できるユーザー、作成できるリソースのタイプ、リソースを作成できる場所を制御できます。これにより、定義されたポリシーの範囲を超えてリソースが作成される可能性が最小限に抑えられます。以前に作成したロールとグループを使用し、IAMポリシーを割り当てて正しい使用法を適用します。
SCPは、組織内のすべてのアカウントで利用可能な最大権限を一元管理し、アカウントをアクセス制御ガイドラインの範囲内に維持することができます。SCPはすべての機能が有効になっている組織でのみ使用可能で、デフォルトでSCPによるメンバーアカウントのアクションの可否を設定できます。
詳細:AWS のアクセス虎の巻 IAM / SCPs / RCPs / 宣言型ポリシー

AWS Service Quotas

Service Quotasを最小限のオーバーヘッドで設定し、維持することで、組織の要件以外のリソースの作成を最小限に抑えることができます。クォータが足りなくなった場合も、Service Quotasからクォータを増加させることができます。
詳細:Service Quotas とは何ですか。

プロジェクトのライフサイクルを追跡する

プロジェクト、チーム、環境のライフサイクルを追跡、計測、監査することで、不要なリソースの使用や不要なリソースの使用に伴う支払いを回避できます。

タグ

リソースに期間やリマインダーのタグを付けて、ワークロードがレビューされた時点をマークしておくことがで、例えば、タグから期間をチェックしてある一定期間を経過していた場合、再度レビューを行って、新しいサービスを導入できるか、環境が使用中かを調査する適切なタイミングを確認することができます。

myApplications

アプリケーションをAWSのmyApplicationsグループ化してタグ付けし、重要度、環境、最終レビュー、コストセンターなどのメタデータを管理および追跡できます。ワークロードのライフサイクルを追跡すると共に、アプリケーションのコスト、状態、セキュリティ体制、パフォーマンスをモニタリングおよび管理できます。
詳細:AWS Console Home の myApplications とは

AWS Config / AWS Systems Manager

AWS Config / AWS Systems Managerを使用することで、ライフサイクル追跡や管理が容易になります。一例として、EC2インスタンスを終了した際に残るEBSに関して、未使用のEBSを削除するようにAWS Config / AWS Systems Managerを使った構築方法が考えられます。Config AWS ルールでEBSを評価し、Systems Managerが未使用のEBSのスナップショットを作成してから削除するといった管理をすることで、不要なコストを削減できます。
詳細:Config と AWS Systems Manager を使用して未使用の Amazon Elastic Block Store (Amazon EBS) AWS ボリュームを削除する