安全な展開プラクティス (SDP) に関する推奨事項

この Power Platform Well-Architected オペレーショナル エクセレンス チェックリストの推奨事項に適用されます:

OE:10 ワークロードの安全な展開プラクティスを明確に定義します。 小規模で段階的な、品質に応じたリリース方法の理想を強調します。 最新の展開パターンを使用してリスクを制御します。 日常的な展開、緊急な展開、修正プログラムの展開を考慮します。

この ガイド では、安全なデプロイメント プラクティスを使用するための推奨事項について説明します。 安全な展開プロセスと手順では、ワークロードへの変更を安全に行って展開方法を定義します。 これらを実装するには、リスク管理の観点から展開について考える必要があります。 これらのプラクティスを実装することで、展開における人為的エラーのリスクを最小限に抑え、問題のある展開がユーザーに与える影響を制限することができます。

主要な設計戦略

安全な展開プラクティスを実装する際には、次の重要なガイドラインに留意してください。

  • 安全性と一貫性: 運用ワークロードに対するすべての変更には本質的にリスクが伴うため、安全性と一貫性を重視して行う必要があります。
  • 正常性モデル: 段階的公開の各フェーズを開始する前に、展開が正常性チェックに合格する必要があります。
  • 問題の検出: 問題が検出された場合は、展開を直ちに停止し、復旧を開始する必要があります。

次のセクションでは、これらの各ポイントに関する詳細な推奨事項を示します。

安全性と一貫性

アプリケーション コード、インフラストラクチャ アズ コード (IaC)、機能フラグ、または構成のいずれに更新を展開する場合でも、ワークロードにリスクが生じます。 本番環境への低リスクのデプロイメントはありません。 すべての展開は標準パターンに従う必要があり、一貫性を確保して人的エラーのリスクを最小限に抑えるために自動化する必要があります。 ワークロードのサプライ チェーンと展開パイプラインが信頼性と安全性を備え、明確に定義された展開標準を備えていることが重要です。 すべての展開を潜在的なリスクとして扱い、すべての展開を同じレベルのリスク管理の対象にします。

リスクをよそに、ワークロードに定期的な変更を展開し続ける必要があります。 定期的な更新を展開しないと、展開を通じて対処する必要があるセキュリティの脆弱性など、他のリスクが発生します。 詳細については、 ワークロード開発の設計に関する推奨事項 サプライ チェーン をご覧ください

大規模な展開を頻繁に行わないよりも、小規模な展開を頻繁に行うことを推奨します。 小規模な変更は問題が発生したときに解決しやすく、頻繁に展開することで、チームは展開プロセスに自信を持つことができます。 展開中に異常が発生した場合は、ワークロード プロセスを確認して運用環境から学ぶことも重要です。 インフラストラクチャやロールアウトの設計に弱点が見つかる可能性があります。 展開中に問題が発生した場合、インシデントに関する教訓を記録するプロセスに、責任を問わない事後検証が含まれていることを確認します。

正常性モデル

可観測性監視プラットフォームと信頼性戦略の一環として、堅牢な正常性モデルを開発します。 正常性モデルは、ワークロードのコンポーネントと全体的な正常性を詳細に可視化する必要があります。 ロールアウト後にヘルスメトリックを注意深く監視します。 ロールアウト中にヘルスの変更に関するアラートを受け取った場合は、すぐに問題を調査し、変更をロールバックするなどの次のアクションを決定します。 ユーザーが問題を報告せず、すべてのヘルスインジケーターが緑色のままであれば、ロールアウトは続行されます。 ユーザーから報告された問題や否定的なヘルス シグナルが不足していることで問題が隠れていないことを確認するために、ヘルス モデルに使用状況メトリックを必ず含めてください。 詳細については、 障害モード解析を実行するための推奨事項をご覧ください。

問題の検出

展開によってロールアウト グループのいずれかに問題が発生した場合、ロールアウトを直ちに停止する必要があります。 アラートを受信したらすぐに、問題の原因と影響の重大度を調査します。 問題からの回復には次のものが含まれます。

  • ロールバック : デプロイメントで行われた変更を元に戻し、最後に動作していた構成に戻します。
  • ロールアウト中に問題に対処することでロールフォワードします。 修正プログラムを適用するか、問題を最小限に抑えることで、ロールアウト中に問題に対処できます。
  • 新しいインフラストラクチャの導入では、最後に動作していることがわかっている構成を使用します。

変更のロールバック、特にデータベース、スキーマ、またはその他のステートフル コンポーネントの変更は複雑になる可能性があります。 安全なデプロイメント プラクティス ガイドラインでは、ワークロードのデータ資産設計に応じてデータの変更を処理する方法について明確な指示を提供する必要があります。 同様に、ロールフォワードは、安全な展開プロセスが無視されないように、また、ホットフィックスやその他の最小化の取り組みが安全に実行されるように、慎重に処理する必要があります。

全般的なレコメンデーション

  • 必要に応じてロールバックおよびロールフォワードできるように、ビルド成果物全体にバージョン管理を実装します。

  • Gitflow または環境ベースのブランチ構造の代わりに、開発チーム全体で緊密に同期されたコラボレーションを強化するリリース フローまたはトランク ベースのブランチ構造を使用します。

  • 安全なデプロイメントの実践を可能な限り自動化します。 詳細については、 自動化の実装に関する推奨事項をご覧ください

  • 継続的インテグレーション (CI) プラクティスを使用して、コードの変更をリポジトリに定期的に統合します。 CI プラクティスは、統合の競合を特定し、大規模でリスクの高いマージの可能性を減らすのに役立ちます。 詳細については、 継続的インテグレーションに関する推奨事項をご覧ください。

  • 機能フラグを使用して、運用環境で新しい機能や変更を選択的に有効または無効にします。 機能フラグは、新しいコードの公開を制御し、問題が発生した場合に展開を迅速にロールバックするのに役立ちます。

  • 運用環境をミラーリングするステージング環境に変更を展開します。 プラクティス環境を使用すると、ライブ環境に展開する前に、制御された設定で変更をテストできます。

  • コード レビュー、セキュリティ スキャン、コンプライアンス チェックなどの事前展開を確立して、変更が安全に展開されることを保証します。

  • サーキットブレーカーを実装して、問題が発生しているサービスへのトラフィックを自動的に停止し、システムのさらなる劣化を防ぎます。

緊急プロトコル

修正プログラムや、セキュリティ侵害や脆弱性の露出などの緊急の問題に合わせて安全な展開プロセスを調整する方法を定義する規範的なプロトコルを確立します。 たとえば、緊急時のプロトコルには次のような内容が含まれます。

  • プロモーションと承認段階の加速
  • スモークテストと統合テストの高速化
  • 焼き時間の短縮

場合によっては、緊急時に品質ゲートやテストゲートが制限される可能性がありますが、それでもアウトオブバンド エクササイズとしてゲートをできるだけ早く実行する必要があります。 緊急時に安全な展開の加速を承認できるユーザーと、加速が承認されるために満たす必要のある基準を必ず定義してください。 すべての緊急事態が同じプロトコルに従って処理されるように、緊急時のプロトコルを 緊急時対応計画 と連携させて 位置を合わせる します。

考慮事項

安全な展開プラクティスの構築と維持は複雑です。 堅牢な標準を完全に実装できるかどうかは、ソフトウェア開発の多くの領域にわたるプラクティスの成熟度にかかっています。 自動化、インフラストラクチャの変更に対するIaCのみ、ブランチ戦略の一貫性、機能フラグ、およびその他のプラクティスの使用は、安全なデプロイメントを保証するのに役立ちます。 このガイドを使用して、ワークロードを最適化し、プラクティスの進化に応じた改善計画を報告します。

Power Platform の促進

Power Platform のパイプラインは、ALM 自動化機能と継続的インテグレーションと継続的デリバリー (CI/CD) 機能をサービスに組み込むことで、Power Platform およびDynamics 365 の顧客向けにアプリケーション ライフサイクル管理 (ALM) を民主化することを目的としています。

Azure DevOps 用の Microsoft Power Platform を使用することで、Power Platform でビルドされたアプリに関連する一般的なビルド & デプロイ タスクを自動化することができます。

GitHub Actionsを使用すると、開発者は自動化されたソフトウェア開発ライフサイクル ワークフローを構築できます。 Power Platform Microsoft Power Platform の GitHub アクション を使用して、リポジトリにワークフローを作成して、アプリをビルド、テスト、パッケージ化、リリース、デプロイし、自動化を実行し、ボットやその他のコンポーネントを Power Platform 上で管理できます。

ALM Accelerator は、継続的インテグレーション/継続的配信プロセスを自動化するために設計された一連のアプリケーション、スクリプト、パイプラインで構成されるオープンソース ツールです。

Azure Pipelines でテストを自動化します

ソリューションの環境変数は、パラメーター キーと値を格納し、他のさまざまなアプリケーション オブジェクトへの入力として機能します。 消費オブジェクトからパラメーターを分離すると、同じ環境内で、または他の環境にソリューションを移行するときに値を変更できます。

Power Platform 環境は、ロールバックに役立つポイントインタイム リストア機能を提供します。

次の手順