安全な展開プラクティス (SDP) に関する推奨事項
この Power Platform Well-Architected Operational Excellenceチェックリストの推奨事項に適用されます:
OE数:10 | ワークロードの安全な展開プラクティスを明確に定義します。 小規模で段階的な、品質に応じたリリース方法の理想を強調します。 最新の展開パターンを使用してリスクを制御します。 日常的な展開、緊急な展開、修正プログラムの展開を考慮します。 |
---|
このガイドでは、安全なデプロイ プラクティスを使用するための推奨事項について説明します。 安全な展開プロセスと手順では、ワークロードへの変更を安全に行って展開方法を定義します。 これらを実装するには、リスク管理のレンズを通じてデプロイについて考える必要があります。 これらのプラクティスを実装することで、デプロイでの人為的エラーのリスクを最小限に抑え、問題のあるデプロイがユーザーに与える影響を制限できます。
主要な設計戦略
安全な展開プラクティスを実装する際には、次の重要なガイドラインに留意してください。
- 安全性と一貫性: 本番環境のワークロードに対するすべての変更は本質的にリスクを伴い、安全性と一貫性に重点を置いて行う必要があります。
- 正常性モデル: デプロイは、進行性曝露の各フェーズを開始する前に、正常性チェックに合格する必要があります。
- 問題の検出: 問題が検出されたら、デプロイをすぐに停止し、復旧を開始する必要があります。
次のセクションでは、これらの各ポイントに関する詳細な推奨事項を示します。
安全性と一貫性
アプリケーション コード、コードとしてのインフラストラクチャ (IaC)、機能フラグ、構成のいずれに更新プログラムをデプロイする場合でも、ワークロードにリスクをもたらします。 運用環境への低リスクのデプロイはありません。 すべての展開は標準パターンに従う必要があり、一貫性を確保して人的エラーのリスクを最小限に抑えるために自動化する必要があります。 ワークロードのサプライ チェーンと展開パイプラインが信頼性と安全性を備え、明確に定義された展開標準を備えていることが重要です。 すべての展開を潜在的なリスクとして扱い、すべての展開を同じレベルのリスク管理の対象にします。
リスクをよそに、ワークロードに定期的な変更を展開し続ける必要があります。 定期的な更新を展開しないと、展開を通じて対処する必要があるセキュリティの脆弱性など、他のリスクが発生します。 詳細については、「ワークロード開発サプライ チェーン の設計に関する推奨事項」を参照してください。
大規模な展開を頻繁に行わないよりも、小規模な展開を頻繁に行うことを推奨します。 小規模な変更は問題が発生したときに解決しやすく、頻繁に展開することで、チームは展開プロセスに自信を持つことができます。 展開中に異常が発生した場合は、ワークロード プロセスを確認して運用環境から学ぶことも重要です。 インフラストラクチャやロールアウトの設計に弱点が見つかる可能性があります。 デプロイ中に問題が発生した場合は、インシデントに関する教訓を記録するためのプロセスに、誰も責めることのない事後分析が含まれていることを確認します。
正常性モデル
可観測性監視プラットフォームと信頼性戦略の一環として、堅牢な正常性モデルを開発します。 正常性モデルは、ワークロードのコンポーネントと全体的な正常性を詳細に可視化する必要があります。 ロールアウトの直後に正常性メトリックを綿密に監視します。 ロールアウト中に正常性の変更に関するアラートを受け取った場合は、すぐに問題を調査し、変更のロールバックなど、次のアクションを決定します。 ユーザーが問題を報告せず、すべてのヘルス インジケーターが緑色のままである場合は、ロールアウトを続行する必要があります。 正常性モデルに使用状況メトリックを必ず含めて、ユーザーから報告された問題や否定的な正常性シグナルの欠如が問題を隠していないことを確認します。 詳細については、障害モード分析 の実行に関する推奨事項を参照してください。
問題の検出
展開によってロールアウト グループのいずれかに問題が発生した場合、ロールアウトを直ちに停止する必要があります。 アラートを受信したらすぐに、問題の原因と影響の重大度を調査します。 問題からの回復には次のものが含まれます。
- デプロイで行われた変更を元に戻し、最後に確認された動作構成に戻すことでロールバック します。
- ロールアウト中に問題に対処することで、ロールフォ ワードします。 修正プログラムを適用するか、問題を最小限に抑えることで、ロールアウト中に問題に対処できます。
- 最後に確認された動作構成を使用して新しいインフラストラクチャ をデプロイする。
変更のロールバック、特にデータベース、スキーマ、またはその他のステートフル コンポーネントの変更は複雑になる可能性があります。 安全なデプロイ プラクティスのガイドラインでは、ワークロードのデータ資産設計に従ってデータ変更に対処する方法について明確な指示を提供する必要があります。 同様に、ロールフォワードは、安全なデプロイ プロセスが無視されず、修正プログラムやその他の最小化作業が安全に実行されるように、慎重に処理する必要があります。
全般的なレコメンデーション
必要に応じてロールバックおよびロールフォワードできるように、ビルド成果物全体にバージョン管理を実装します。
Gitflow または環境ベースのブランチ構造の代わりに、開発チーム全体で緊密に同期されたコラボレーションを強化するリリース フローまたはトランク ベースのブランチ構造を使用します。
安全なデプロイの実践を可能な限り自動化します。 詳細については、 自動化の実装に関する推奨事項をご覧ください。
継続的インテグレーション (CI) プラクティスを使用して、コードの変更をリポジトリに定期的に統合します。 CI プラクティスは、統合の競合を特定し、大規模でリスクの高いマージの可能性を減らすのに役立ちます。 詳細については、「継続的インテグレーション の推奨事項」を参照してください。
機能フラグを使用して、運用環境で新しい機能や変更を選択的に有効または無効にします。 機能フラグは、新しいコードの公開を制御し、問題が発生した場合に展開を迅速にロールバックするのに役立ちます。
運用環境をミラーリングするステージング環境に変更を展開します。 プラクティス環境を使用すると、ライブ環境に展開する前に、制御された設定で変更をテストできます。
コード レビュー、セキュリティ スキャン、コンプライアンス チェックなどの事前展開を確立して、変更が安全に展開されることを保証します。
サーキット ブレーカーを実装して、問題が発生しているサービスへのトラフィックを自動的に停止し、システムのさらなる劣化を防ぎます。
緊急時のプロトコル
ホットフィックスや、セキュリティ侵害や脆弱性の露出などの緊急の問題に対して、安全なデプロイ プロセスをどのように調整できるかを定義する規範的なプロトコルを確立します。 たとえば、緊急時のプロトコルには次のものが含まれます。
- プロモーションと承認の段階の加速
- スモークテストと統合テストの高速化
- ベイク時間の短縮
場合によっては、緊急時に品質ゲートやテストゲートが制限される可能性がありますが、それでもアウトオブバンド エクササイズとしてゲートをできるだけ早く実行する必要があります。 緊急時に安全なデプロイの高速化を承認できるユーザーと、高速化が承認されるために満たす必要がある基準を定義してください。 緊急時のプロトコルを緊急時の応答計画 と 位置を合わせると、すべての緊急事態が同じプロトコルに従って処理されるようにします。
考慮事項
安全な展開プラクティスの構築と維持は複雑です。 堅牢な標準を完全に実装できるかどうかは、ソフトウェア開発の多くの領域にわたるプラクティスの成熟度にかかっています。 自動化、インフラストラクチャの変更に対するIaCのみの使用、分岐戦略の一貫性、機能フラグ、およびその他のプラクティスを使用すると、安全なデプロイを確保できます。 このガイドを使用して、ワークロードを最適化し、プラクティスの進化に応じた改善計画を報告します。
Power Platform の促進
Microsoft Power Platform Build Tools for Azure DevOps を使用すると、 Power Platform で構築されたアプリに関連する一般的なビルドおよびデプロイメント タスクを自動化できます。
GitHub Actionsを使用すると、開発者は自動化されたソフトウェア開発ライフサイクル ワークフローを構築できます。 Power Platform Microsoft Power Platform の GitHub アクション を使用して、リポジトリにワークフローを作成して、アプリをビルド、テスト、パッケージ化、リリース、デプロイし、自動化を実行し、ボットやその他のコンポーネントを Power Platform 上で管理できます。
ALM Accelerator は、継続的インテグレーション/継続的デリバリー プロセスを自動化するために設計された一連のアプリケーション、スクリプト、パイプラインで構成されるオープン ソース ツールです。
ソリューション内の 環境 変数 には、パラメータのキーと値が格納され、他のアプリケーション オブジェクトへの入力として機能します。 消費オブジェクトからパラメーターを分離すると、同じ環境内で、または他の環境にソリューションを移行するときに値を変更できます。
Power Platform 環境 では、ロールバックに役立つポイントインタイム リストア機能が提供されます。