支出ガードレールの設定に関する推奨事項

この Azure Well-Architected フレームワークのコストの最適化チェックリストの推奨事項に適用されます。

CO:04 支出ガードレールを設定します。 ガードレールには、リリース ゲート、ガバナンス ポリシー、リソース制限、アクセス制御を含める必要があります。 プラットフォームの自動化に、手動プロセスよりも高い優先順位を付けます。

このガイドでは、支出ガードレールを設定するための推奨事項について説明します。 支出ガードレールは、指定された予算内のコストを制御および管理するための指標です。 これは、予定にない支出や過剰な支出を防ぎ、リソースのコスト効率の高い利用を促進するのに役立ちます。 支出ガードレールを使わないと、ワークロードのコストが予算を超える可能性があるため、計画外の費用が発生し、財務リソースが逼迫する可能性があります。

定義

相談 定義
ガバナンス ポリシー コンプライアンスを適用し、ワークロード リソースの監査を有効にする一連の規則。
ガバナンス ワークロードが効果的かつ安全に管理され、組織および規制の要件に準拠していることを保証するのに役立つ一連のポリシー、プロセス、規制。
Infrastructure as Code (IaC) ネットワーク、仮想マシン、ロード バランサー、接続トポロジなどのインフラストラクチャを定義およびデプロイするための記述的モデル。
リリース ゲート デプロイを続行するには、その前に満たす必要があるリリース パイプライン内の条件またはチェックポイント。 リリース ゲートは、ソフトウェアがリリースされる前に特定の条件が満たされていることを保証するのに役立ちます。

主要な設計戦略

支出ガードレールを設定するには、指定された予算内でコストを制御および管理するための指標を実装します。 これらの指標には、ガバナンス ポリシー、アクセス制御、リリース ゲート、予算のしきい値、アラートが含まれます。 自動化により、人為的ミスのリスクが軽減され、効率が向上し、支出ガードレールの一貫した適用が促進されます。 プラットフォームの自動化に、手動プロセスよりも高い優先順位を付けます。 プラットフォームが提供する自動化ツールとサービスにより、リソースのプロビジョニング、構成、管理を効率化できます。

ガバナンス ポリシーの使用

ガバナンス ポリシーは、リソースの種類、構成、タグ、場所、データ管理など、リソースのさまざまな側面に対する支出ガードレールとして機能させることができます。 多くのクラウド プラットフォームに、ガバナンス ポリシーの適用を自動化するサービスがあります。 自動化されたポリシーを使用して、リソースの使用状況を制御し、アカウンタビリティを適用し、制限されたリソースの種類に対する支出が発生しないようにします。 適用を検討する必要があるポリシーの一部を次に示します。

  • 制限付きリソースの種類: ポリシーに、組織内で許可または禁止されるリソースの種類を指定できます。 たとえば、コストを制御するために、コストの高い特定のリソースの種類の使用を制限するポリシーを組織に設けられます。

  • リソースの制限: リソースの制限を設定してコストを制御し、オーバープロビジョニングを防ぎます。 プロビジョニングできるリソースの数、リソースのサイズ、リソース使用量の期間に関する制限をポリシーに含めます。 これらの制限は、過剰な支出を防ぎ、リソース使用量を最適化するのに役立ちます。 たとえば、リソースを制限することで、暗号資産マイニングに関連する権限のないアカウント侵害の影響を最小限に抑えられます。

  • 定義されたリソース構成: ポリシーに、リソースの特定の構成を定義できます。 自動スケーリングやデータ アーカイブなど、コストの最適化を促進するリソースに設定を適用できます

  • 制限された場所: ポリシーを使用して、リソースのデプロイを特定のリージョンまたは場所に制限できます。 場所を制限することで、コストのかかるデータ転送料金の発生を回避し、データ主権規制への準拠を維持できるようにするのを検討してください。

  • マネージド データ: ポリシーを使用して、コストの最適化に役立つデータ管理プラクティスを適用します。 たとえば、アクセス頻度の低いデータに低コストのストレージ層の使用を課すポリシーや、データ保持の有効期限ルールを定義するポリシーを実装できます。

  • 適用されたメタデータ: 追跡とコストの割り当てを改善するために、特定のメタデータの使用を義務付けるポリシーを確立します。 また、自動または手動のレビューで、メタデータを使用することもできます。 たとえば、メタデータを使用して、バックアップ タグを使用してリソースのバックアップを自動化します。 メタデータ ポリシーに一貫性を持たせることで、コストを支出ガードレールに適合させやすくなります。

  • 制限付きアイドル リソース: ポリシーを使用してアイドル状態のリソースを特定することで、それらを削除または再利用できるようにします。 使用されていない時間帯にインスタンスを自動的にシャットダウンするポリシーを設定することを検討してください。

リスク アイコンリスク: 自動スケーリングを実装する場合は、テストに基づいて最大スケーリングしきい値を設定します。 最大しきい値を設定することで、コスト超過の原因となる大幅なスケーリングの急増を回避できますが、しきい値が低すぎると、パフォーマンスに悪影響を及ぼす可能性があります。 詳細については、スケーリング コストを最適化するための推奨事項に関するページを参照してください。

アクセス制御の構成

アクセス制御を構成して、過剰な保留を防ぐ制限を設定し、承認された個人のみがリソースを使用できるようにします。 アクセス制御は、コストの最適化に悪影響を与える偶発的または不要な変更が起きるリスクを軽減するのに役立ちます。 コストの最適化のためのアクセス制御を実装するには、次の手順に従います。

  1. 必要な制御を特定します。 アクセス制御を必要とするリソースとサービスを特定します。

  2. アクセス ポリシーを定義します。 最小限の特権アクセスを使用する原則に基づいてアクセス ポリシーを定義し、タスクを実行するために必要なアクセス許可のみをユーザーに付与します。 たとえば、読み取りアクセスのみが必要なユーザーがいる一方で、書き込みまたは削除のアクセス許可が必要なユーザーもいます。

  3. 認証を実装します。 承認されたユーザーのみがリソースにアクセスできるように、ユーザー名とパスワード、多要素認証、ID プロバイダーとの統合などの認証方法を実装します。

  4. ロール ベースのアクセス制御 (RBAC) を使用します。 ジョブの責任に基づいてユーザーにロールとアクセス許可を割り当てる RBAC を設定します。 RBAC を使用すると、リソース アクセスを効果的に管理できます。

  5. コントロールを確認および更新します。 組織の変化するニーズに合わせてアクセス制御を定期的に確認し、更新します。 不要なアクセス許可を削除し、必要に応じてアクセス レベルを調整します。

リリース ゲートの使用

リリース ゲートは、リリースまたはデプロイを続行する前に満たす必要があるチェックポイントまたは条件です。 リリース ゲートを使用して、リリースがコスト効率が高く、最適化の目標と適合していることを確認します。 リリース ゲートは、コスト削減策の識別と実装に対する構造化されたアプローチを提供します。 ワークロード コストの最適化のためにリリース ゲートを実装するには、次の手順を検討してください。

  1. リリース ゲートの基準を確立します。 リソースをリリースまたはデプロイする前に満たす必要がある条件または条件を確立します。 支出制限、リソース使用率のしきい値、プロジェクト マイルストーンなどの要因を含めます。

  2. リリース ゲートを組み込みます。 リリース ゲートをデプロイ パイプラインに組み込みます。 自動化ツールまたはカスタム スクリプトを使用して、リソースのデプロイが定義された条件に従っていることを保証できます。

  3. 支出を監視します。 支出とリソースの使用状況を、定義された条件と突き合わせて継続的に監視します。 組織が支出のしきい値を超えた場合、問題が解決されるまでは、リリース ゲートはそれ以上のデプロイを防ぐ必要があります。

コスト アラートの構成

コストを最適化するには、予算、コストの異常、コミットメントベースの計画的使用のアラートを設定することが重要です。 これらのアラートによって、クラウド支出が可視化され、プロアクティブなコスト管理が可能になります。 アラートの通知受信者については、注意深く管理し、最新の責任とアクセス権を持つように、受信者リストを最新の状態に保ってください。 コストを最適化するために作成できるアラートには、次のようなものがあります。

  • 予算アラート: 予算にアラートを設定して、定義済みのしきい値と突き合わせて支出を追跡します。 毎月の予算、課金アカウント、またはリソース グループを作成することで、コストを監視し、予算額に近づいたり超えたりしたときに通知を受け取れるようにできます。 予算アラートを使用すると、支出に関する情報を常に把握し、コストを制御するための予防措置を講じられます。

  • コストの異常アラート: 異常アラートは、非効率的または異常な支出パターンを示す可能性のある予定にないコスト変動に関して通知します。 これらのアラートを構成して、実績コストまたは予測コストの異常を特定できます。 コストの異常アラートを使用して、コスト変動の根本的な原因を調査し、必要に応じて是正措置を講じます。

  • コミットメントベースの計画的使用のアラート: コミットメントベースの計画的使用のアラートを実装して、計画的使用状況を監視します。 コミットメントベースの計画がある場合は、計画的使用に関するアラートを設定すると、これらのコミットメントの価値を効果的に管理および最大化するのに役立ちます。 コミットメント ベースのリソースの使用量が目的のしきい値を下回った場合、関係者に通知するようにこれらのアラートを構成できます。 コミットメント ベースのリソースを最適化し、コミットメントの利点を確実に使用できるようにします。

IaC の使用

コードとしてのインフラストラクチャは、コード (通常は構成ファイルの形式) を使用してインフラストラクチャ リソースを管理およびプロビジョニングする方法です。 この戦略は、コード ベースのテンプレートを使用して、仮想マシン、ネットワーク、ストレージなどのインフラストラクチャ リソースのデプロイと構成を定義および自動化する目的で実装します。

IaC 戦略は、インフラストラクチャ リソースを管理および制御するための、構造化された繰り返し可能な方法を提供します。 IaC を導入すると、必要に応じてリソースをデプロイし、リソースを継続的に実行せずに削除でき、事前に定義されたルールに従ってリソースをデプロイおよび構成することでコストを最適化するのに役立ちます。 コストの最適化に IaC を使用するには、次の手順に従います。

  1. IaC テンプレートを作成します。 コードベースのテンプレート言語を作成して、インフラストラクチャ リソースとその構成を定義します。 これらのテンプレートを使用すると、宣言型の方法でインフラストラクチャ リソースの目的の状態を指定できます。 インフラストラクチャ コードにコスト最適化のベスト プラクティスを実装します。 予約インスタンスまたは節約計画を使用して、リソースの適切なサイズ設定を検討してください。 コスト効率の高いストレージ オプションを使用し、コストの割り当てと追跡にリソース メタデータを適用します。

  2. テンプレートを格納します。 バージョン管理システムに IaC テンプレートを格納して、変更を追跡し、さまざまなバージョンを管理します。 バージョン管理を使用して、インフラストラクチャ構成の履歴を保持し、チーム メンバー間のコラボレーションを促進できます。

  3. パラメーターを使用します。 テンプレートのパラメーターを使用して、再利用可能で構成可能にします。 パラメーターを使用すると、さまざまな環境やシナリオに合わせてインフラストラクチャのデプロイを簡単にカスタマイズできます。

  4. エフェメラル環境を使用します。 開発、テスト、ステージングの目的でエフェメラル環境を使用して、コストを最適化します。 エフェメラル環境は、必要なときにのみ実行する必要があります。 IaC ツールを使用してこれらの環境を作成し、完了したら、その環境を削除します。

  5. IaC ツールを使用します。 IaC のツールとフレームワークを使用して、インフラストラクチャ リソースのデプロイと構成を自動化します。 自動化を使用して、定義されたポリシーに従ってリソースを一貫した方法で確実にデプロイします。

  6. デプロイされたリソースを監視します。 リソースとそのコストを定期的に監視して、支出ポリシーに確実に準拠させます。 監視ツールとアラート ツールを使用して、定義されたガードレールからの逸脱を特定し、必要に応じて是正措置を講じます。 使用されていないリソースを確認し、可能であれば自動化を使用して削除します。

Azure ファシリテーション

ガバナンス ポリシーの使用: Azure Policy を使用して、コスト最適化の目標に合ったガバナンス ポリシーを定義して適用します。 Azure Policy を使用して、管理グループ、サブスクリプション、リソース グループにルールを設定できます。 これらのポリシーは、リソースのプロビジョニング、使用制限、コストの割り当てを規制できます。 ポリシーを使用して、リソースの権利化を促進し、アイドル状態または使用率の低いリソースを特定して取り除き、コスト効率の高いサービスとアーキテクチャの使用を促進します。

Azure には、Azure リソース全体にルールとガイドラインを適用するための標準化された効率的な方法を提供する、一般的なユース ケース用の組み込みポリシーが用意されています。 独自のカスタム ポリシーを定義して、独自のビジネス要件や、Azure 組み込みポリシーに含まれていない特定の業界の規制を満たすことをお勧めします。 詳細については、「Azure Policy の組み込みのポリシー定義」を参照してください。

Azure では、予定にないコストの発生を防ぐために、制限またはクォータを設定できます。 リソースの使用量のサイズと期間に加えて、プロビジョニングできるリソース数に課す制限を定義できます。 オーバープロビジョニングを防ぎ、コストを制御するために、これらの制限を設定します。

  • 未使用またはアイドル状態のリソースを特定します。 Azure Advisor を使用して、アイドル状態のリソースや使用率の低いリソースを特定することで、Azure を最適化し、Azure の全体的なコストを削減します。 Advisor ダッシュボードの [コスト] セクションから、コストに関する推奨事項を受け取ります。

  • リソース メタデータを追加します。 Azure のガバナンスを使用して、リソースのタグ付けと分類を実装します。 関連するメタデータを使用してリソースにタグを付け、さまざまな部門、プロジェクト、またはコスト センターのコストを追跡し、これらに割り当てます。 コストの属性を可視化することで、支出が多い領域を特定し、リソースの割り当てを最適化し、コスト管理を容易にできます。

アクセス制御の構成: Azure RBAC を使用してリソースへのアクセスを管理します。 RBAC を使用して、ロールに基づいてユーザー、グループ、またはアプリケーションにアクセス許可を付与できます。 RBAC を実装して、承認されたユーザーのみがリソースにアクセスできるようにし、承認されていないリソースの使用と潜在的なコストへの影響のリスクを軽減します。

リリース ゲートの使用: Azure Pipelines リリース管理を使用して、リリース ゲートを定義して適用します。 手動チェックポイントまたは自動チェックポイントを設定して、セキュリティ チェック、コンプライアンス要件、コストしきい値など、特定の条件を満たしていることを保証できます。

コードとしてインフラストラクチャを使用します。 Azure のツールとサービスを使用して、コードを使用してインフラストラクチャ リソースをデプロイおよび管理できます。 Azure Resource Manager (ARM) テンプレート、Azure Bicep、Azure DevOps などのツールを使用すると、宣言型の方法でインフラストラクチャ リソースを定義してデプロイできます。 Azure には、すべての Azure リソース用の Bicep、Azure Resource Manager、Terraform テンプレートがあります。

Azure Pipelines またはその他の継続的インテグレーションと継続的デリバリー (CI/CD) ツールを使用して、ビルド、テスト、デプロイのプロセスを自動化します。 Teams では、パイプラインを使用して、コードベースに変更が加えられたときに自動的に実行される一連の手順と処理を定義できます。 これらのプロセスを自動化して、手動での操作を減らし、一貫性を確保し、ソフトウェアの配信を促進できます。

コストを最適化するために、エフェメラル環境または非運用環境に低コストのリソースを使用することを検討してください。 Azure には、リソースのさまざまな価格レベルが用意されています。 Azure DevTest Labs の価格と Azure の予約は、エフェメラル環境を調べられるコスト削減の方法です。

Azure ReposGitHub などの Git リポジトリには、コードとインフラストラクチャの構成を管理するためのバージョン管理機能が用意されています。 Teams と開発者は、自動化されたリポジトリを使用して、共同作業し、変更を追跡し、コードベースの履歴を維持できます。

Azure Deployment Environments を使用すると、開発チームはプロジェクト ベースのテンプレートを利用して、一貫性とベスト プラクティスを確立しつつ、セキュリティを最大限に確保して、アプリ インフラストラクチャをすばやく簡単に構築できます。 セキュリティで保護された環境にオンデマンドでアクセスし、準拠しているコスト効率の高い方法でソフトウェア開発ライフサイクルのステージを時間短縮します。

Azure Developer CLI は、ローカルの開発環境から Azure にアプリケーションを移すために要する時間を短縮するオープンソース ツールです。 Azure Developer CLI では、ターミナル、統合開発環境 (IDE)、または CI/CD のどれで作業しているかに関係なく、ワークフローの主要なステージにマップされる、ベスト プラクティスであり開発者にとって使いやすいコマンドが提供されます。

コスト アラートの構成: Microsoft Cost Management を使用してコストを最適化し、支出ガードレールを適用します。 コスト管理機能を使用して、予算とアラートを設定し、Power BI などのツールを使用してコスト情報を視覚化し、コスト パターンとパフォーマンスのボトルネックを分析できます。

組織の配置

中心のチームは、クラウド導入フレームワークのガイダンスを使用して組織全体の支出ガードレールを設定し、中心のチームが提供できることをワークロード チームが理解できるようにする必要があります。

組織はポリシー主導のガードレールを採用することをお勧めします。 実装例については、「ポリシー主導のガードレールの採用」を参照してください。

コスト最適化チェックリスト

レコメンデーションの完全なセットを参照してください。