

# OPS 6 デプロイのリスクを軽減するにはどうすればよいですか?
<a name="w2aac19b5b7b9"></a>

 品質に関する迅速なフィードバックを提供し、望ましい結果をもたらさない変更から迅速に復旧できるようにするアプローチを採用します。このような手法を使用すると、変更のデプロイによって生じる問題の影響を軽減できます。 

**Topics**
+ [OPS06-BP01 変更の失敗に備える](ops_mit_deploy_risks_plan_for_unsucessful_changes.md)
+ [OPS06-BP02 変更をテストし、検証する](ops_mit_deploy_risks_test_val_chg.md)
+ [OPS06-BP03 デプロイ管理システムを使用する](ops_mit_deploy_risks_deploy_mgmt_sys.md)
+ [OPS06-BP04 限定的なデプロイを使用してテストする](ops_mit_deploy_risks_test_limited_deploy.md)
+ [OPS06-BP05 並列環境でデプロイする](ops_mit_deploy_risks_deploy_to_parallel_env.md)
+ [OPS06-BP06 小規模で可逆的な変更を頻繁にデプロイする](ops_mit_deploy_risks_freq_sm_rev_chg.md)
+ [OPS06-BP07 統合とデプロイを完全自動化する](ops_mit_deploy_risks_auto_integ_deploy.md)
+ [OPS06-BP08 テストとロールバックを自動化する](ops_mit_deploy_risks_auto_testing_and_rollback.md)

# OPS06-BP01 変更の失敗に備える
<a name="ops_mit_deploy_risks_plan_for_unsucessful_changes"></a>

 変更が望ましい結果をもたらさない場合に、既知の良好な状態に戻すか、本番環境で修正を行うことを計画します。この準備を行うことで、迅速な対応によって復旧時間を短縮できます。 

 **一般的なアンチパターン:** 
+  あなたがデプロイを実行したところ、アプリケーションが不安定になりましたが、システムにはアクティブなユーザーがいるように見えます。あなたは、変更をロールバックしてアクティブなユーザーに影響を与えるか、またはユーザーが影響を受ける可能性があることを考慮して変更をロールバックするのを待つかを判断しなければなりません。 
+  ルーティンを変更すると、新しい環境はアクセスできますが、サブネットの 1 つにアクセスできなくなります。あなたは、すべてをロールバックするか、アクセスできないサブネットを修正するかを判断しなければなりません。その判断がなされるまでの間、サブネットはアクセスできないままとなります。 

 **このベストプラクティスを活用するメリット:** 計画を事前に立てることで、失敗からの平均復旧時間 (MTTR) を短縮し、エンドユーザーへの影響を抑えることができます。 

 **このベストプラクティスを活用しない場合のリスクレベル:** 高 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  変更の失敗に備える: 変更が望ましい結果をもたらさない場合に、既知の良好な状態に戻す (変更をロールバックする) か、本番環境で修正を行う (変更をロールフォワードする) ことを計画します。失敗した変更をロールバックできないことがわかった場合は、変更をコミットする前にデューデリジェンスを適用します。 

# OPS06-BP02 変更をテストし、検証する
<a name="ops_mit_deploy_risks_test_val_chg"></a>

 あらゆるライフサイクルステージで変更をテストし、その結果を検証することで、新しい機能を確認するとともに、デプロイの失敗のリスクと影響を最小限に抑えます。 

 AWS では、実験やテストのリスク、労力、コストを削減するために一時的な並列環境を作成できます。これらの環境のデプロイを [AWS CloudFormation](https://aws.amazon.com/cloudformation/) を使用して自動化し、一時環境の実装に一貫性を持たせます。 

 **一般的なアンチパターン:** 
+  あなたは、斬新な新機能をアプリケーションにデプロイします。動作しません。理由はわかりません。 
+  あなたは、証明書を更新します。あなたは、意図せずに、誤ったコンポーネントに証明書をインストールします。理由はわかりません。 

 **このベストプラクティスを活用するメリット:** デプロイ後の変更をテストして検証することで、問題を早期に特定し、顧客への影響を軽減する機会が得られます。 

 **このベストプラクティスを活用しない場合のリスクレベル:** 高 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  変更をテストし、検証する: あらゆるライフサイクルステージ (開発、テスト、本番など) で変更をテストし、その結果を検証することで、新しい機能を確認するとともに、デプロイの失敗のリスクと影響を最小限に抑えます。 
  +  [AWS Cloud9](https://aws.amazon.com/cloud9/) 
  +  [AWS Cloud9 とは](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) 
  +  [コードを送信する前に AWS CodeDeploy をローカルでテスト/デバッグする方法](https://aws.amazon.com/blogs/devops/how-to-test-and-debug-aws-codedeploy-locally-before-you-ship-your-code/) 

## リソース
<a name="resources"></a>

 **関連するドキュメント:** 
+  [AWS Cloud9](https://aws.amazon.com/cloud9/) 
+  [AWS デベロッパーツール](https://aws.amazon.com/products/developer-tools/) 
+  [コードを送信する前に AWS CodeDeploy をローカルでテスト/デバッグする方法](https://aws.amazon.com/blogs/devops/how-to-test-and-debug-aws-codedeploy-locally-before-you-ship-your-code/) 
+  [AWS Cloud9 とは](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) 

# OPS06-BP03 デプロイ管理システムを使用する
<a name="ops_mit_deploy_risks_deploy_mgmt_sys"></a>

 デプロイ管理システムを使用して変更を追跡および実装します。これにより、手動プロセスによって発生するエラーと、変更をデプロイする労力を減らすことができます。 

 AWS では、以下のサービスを使用して、継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインを構築できます [AWS デベロッパーツール](https://aws.amazon.com/products/developer-tools/) (例: AWS CodeCommit、 [AWS CodeBuild](https://aws.amazon.com/codebuild/)、 [AWS CodePipeline](https://aws.amazon.com/codepipeline/)、 [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)、および [AWS CodeStar](https://aws.amazon.com/codestar/))。 

 **一般的なアンチパターン:** 
+  あなたがフリート全体でアプリケーションサーバーに対して手動で更新をデプロイしたところ、更新エラーのために多数のサーバーが応答しなくなりました。 
+  あなたは、何時間もかけて、アプリケーションサーバーフリートを手動でデプロイします。変更中のバージョンの不整合が、予期しない動作を引き起こします。 

 **このベストプラクティスを活用するメリット:** デプロイ管理システムを採用することで、変更のデプロイにかける労力のレベルと、手動の手順に起因するエラーの頻度を軽減できます。 

 **このベストプラクティスを活用しない場合のリスクレベル:** ミディアム 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  デプロイ管理システムを使用する: デプロイ管理システムを使用して変更を追跡および実装します。これにより、手動プロセスによって発生するエラーと、変更をデプロイする労力が減ります。テスト、デプロイ、検証を通じたコードのチェックインから統合とデプロイのパイプラインを自動化します。これにより、リードタイムが減り、変更の頻度を増やすことが可能になるとともに、必要な労力がさらに減ります。 
  +  [AWS CodeDeploy の紹介 - Amazon Web Services を使用したソフトウェアの自動デプロイ](https://www.youtube.com/watch?v=Wx-ain8UryM) 
  +  [AWS CodeDeploy とは](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
  +  [AWS Elastic Beanstalk とは](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) 
  +  [Amazon API Gateway とは](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 

## リソース
<a name="resources"></a>

 **関連するドキュメント:** 
+  [AWS CodeDeploy ユーザーガイド](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
+  [AWS デベロッパーツール](https://aws.amazon.com/products/developer-tools/) 
+  [AWS CodeDeploy でブルー/グリーンデプロイのサンプルを試す](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications-create-blue-green.html) 
+  [AWS CodeDeploy とは](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
+  [AWS Elastic Beanstalk とは](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) 
+  [Amazon API Gateway とは](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 

 **関連動画:** 
+  [AWS を使用した高度な継続的デリバリーテクニックの詳細](https://www.youtube.com/watch?v=Lrrgd0Kemhw) 
+  [AWS CodeDeploy の紹介 - Amazon Web Services を使用したソフトウェアの自動デプロイ](https://www.youtube.com/watch?v=Wx-ain8UryM) 

# OPS06-BP04 限定的なデプロイを使用してテストする
<a name="ops_mit_deploy_risks_test_limited_deploy"></a>

 完全なデプロイを行う前に、既存のシステムと並行して限定的なデプロイを実施してテストを行い、望ましい結果が得られるかどうか確認します。例えば、デプロイ Canary テストまたはワンボックスデプロイを使用します。 

 **一般的なアンチパターン:** 
+  あなたは、失敗した変更を一度にすべての本稼働環境にデプロイします。あなたにはわかりません。 

 **このベストプラクティスを確立するメリット:** 制限されたデプロイ後の変更をテストして検証することで、顧客への影響を最小限に抑えながら、問題を早期に特定し、顧客への影響をさらに軽減する機会が得られます。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** ミディアム 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  限定的なデプロイを使用してテストする: 本格的なデプロイの前に、既存のシステムと一緒に限定的にデプロイしてテストを行い、期待される結果が得られるかどうかを確認します。例えば、デプロイ Canary テストまたはワンボックスデプロイを使用します。 
  +  [AWS CodeDeploy ユーザーガイド](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
  +  [AWS Elastic Beanstalk を使用したブルー/グリーンデプロイ](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html) 
  +  [API Gateway Canary リリースデプロイの設定](https://docs.aws.amazon.com/apigateway/latest/developerguide/canary-release.html) 
  +  [Try a Sample Blue/Green Deployment in AWS CodeDeploy (AWS CodeDeploy でブルー/グリーンデプロイのサンプルを試す)](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications-create-blue-green.html) 
  +  [Working with deployment configurations in AWS CodeDeploy (AWS CodeDeploy でのデプロイ構成の操作)](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html) 

## リソース
<a name="resources"></a>

 **関連するドキュメント:** 
+  [AWS CodeDeploy ユーザーガイド](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
+  [AWS Elastic Beanstalk を使用したブルー/グリーンデプロイ](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html) 
+  [API Gateway Canary リリースデプロイの設定](https://docs.aws.amazon.com/apigateway/latest/developerguide/canary-release.html) 
+  [Try a Sample Blue/Green Deployment in AWS CodeDeploy (AWS CodeDeploy でブルー/グリーンデプロイのサンプルを試す)](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications-create-blue-green.html) 
+  [Working with deployment configurations in AWS CodeDeploy (AWS CodeDeploy でのデプロイ構成の操作)](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html) 

# OPS06-BP05 並列環境でデプロイする
<a name="ops_mit_deploy_risks_deploy_to_parallel_env"></a>

 並列環境に変更を実装し、その後、新しい環境に移行します。デプロイの成功を確認するまで、以前の環境を維持します。こうすることで、以前の環境へのロールバックが可能になり、復旧時間を最小限に抑えることができます。 

 **一般的なアンチパターン:** 
+  あなたは、既存のシステムを変更することにより、変更可能なデプロイを実行します。変更が失敗したことを検出した後、あなたは、システムを再度変更して古いバージョンを復元するよう命じられ、これにより、復旧までの時間がより長くかかります。 
+  あなたは、メンテナンスウィンドウ中に、古い環境を停止してから、新しい環境の構築を開始します。この手順には何時間もかかり、あなたは、デプロイに復旧できない問題を検出します。非常に疲れていますが、あなたは、以前のデプロイの手順を探し、古い環境の再構築を開始するように命じられます。 

 **このベストプラクティスを活用するメリット:** 並列環境を使用することで、新しい環境を事前にデプロイし、必要に応じて環境に移行できます。新しい環境が失敗した場合は、元の環境に戻すことで、すばやく復旧できます。 

 **このベストプラクティスを活用しない場合のリスクレベル:** ミディアム 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  並列環境でデプロイする: 並列環境に変更を実装し、その後、新しい環境に移行またはカットオーバーします。デプロイの成功を確認するまで、以前の環境を維持します。こうすることで、以前の環境へのロールバックが可能になり、復旧時間を最小限に抑えることができます。例えば、ブルー/グリーンデプロイでイミュータブルインフラストラクチャを使用します。 
  +  [AWS CodeDeploy でのデプロイ構成の操作](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html) 
  +  [AWS Elastic Beanstalk を使用したブルー/グリーンデプロイ](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html) 
  +  [API Gateway Canary リリースデプロイの設定](https://docs.aws.amazon.com/apigateway/latest/developerguide/canary-release.html) 
  +  [AWS CodeDeploy でブルー/グリーンデプロイのサンプルを試す](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications-create-blue-green.html) 

## リソース
<a name="resources"></a>

 **関連するドキュメント:** 
+  [AWS CodeDeploy ユーザーガイド](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
+  [AWS Elastic Beanstalk を使用したブルー/グリーンデプロイ](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html) 
+  [API Gateway Canary リリースデプロイの設定](https://docs.aws.amazon.com/apigateway/latest/developerguide/canary-release.html) 
+  [AWS CodeDeploy でブルー/グリーンデプロイのサンプルを試す](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications-create-blue-green.html) 
+  [AWS CodeDeploy でのデプロイ構成の操作](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html) 

 **関連動画:** 
+  [AWS を使用した高度な継続的デリバリーテクニックの詳細](https://www.youtube.com/watch?v=Lrrgd0Kemhw) 

# OPS06-BP06 小規模で可逆的な変更を頻繁にデプロイする
<a name="ops_mit_deploy_risks_freq_sm_rev_chg"></a>

 小規模で可逆的な変更を頻繁に行うことで、変更の範囲を減らします。これにより、トラブルシューティングが容易になり、修復がすばやくできるようになります。また、変更をロールバックすることもできます。 

 **一般的なアンチパターン:** 
+  あなたは、四半期ごとに、アプリケーションの新しいバージョンをデプロイします。 
+  あなたは、データベーススキーマに対して頻繁に変更を加えます。 
+  あなたは、手動のインプレースアップグレードを実行し、既存のインストールと設定を上書きします。 

 **このベストプラクティスを活用するメリット:** 小さな変更を頻繁にデプロイすることで、開発にかける労力から得られる恩恵をすばやく認識できます。変更が小さい場合、意図しない結果が発生するかどうかを識別することがより容易になります。変更を元に戻すことができる場合、復旧が簡素化されるため、変更を実装するリスクが低減されます。 

 **このベストプラクティスを活用しない場合のリスクレベル:** 低 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  小規模で可逆的な変更を頻繁にデプロイする: 頻繁に、小さく、可逆的な変更を使用することで、変更の範囲を縮小します。これにより、トラブルシューティングが容易になり、修復がすばやくできるようになります。また、変更をロールバックすることもできます。 

# OPS06-BP07 統合とデプロイを完全自動化する
<a name="ops_mit_deploy_risks_auto_integ_deploy"></a>

 ワークロードのビルド、デプロイ、テストを自動化します。これにより、手動プロセスによって発生するエラーと、変更をデプロイする労力を減らすことができます。 

 一貫したタグ付け戦略に従って [リソースタグ](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) および [AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/APIReference/Welcome.html) を使用して [メタデータを適用し、](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) リソースの識別を可能にします。組織、原価計算、アクセスコントロールのリソースにタグを付け、自動化された運用アクティビティの実行に的を絞ります。 

 **一般的なアンチパターン:** 
+  金曜日に、あなたは、機能ブランチ用の新しいコードの作成を完了します。月曜日に、あなたは、コード品質テストスクリプトと各ユニットテストスクリプトを実行した後、予定された次のリリースのためにコードをチェックインします。 
+  あなたは、本稼働中の多数の顧客に影響を与える重要な問題の修正コードを記述するように指示されます。修正をテストした後、あなたは、コードと E メールの変更管理をコミットして、本稼働環境にデプロイするための承認をリクエストします。 

 **このベストプラクティスを活用するメリット:** 自動化されたビルドおよびデプロイ管理システムを実装することで、手動プロセスにより発生するエラーを削減し、変更をデプロイする労力を減らして、チームメンバーがビジネス価値の提供に注力できるようにします。 

 **このベストプラクティスを活用しない場合のリスクレベル:** 低 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  構築およびデプロイ管理システムを使用する: ビルドおよびデプロイ管理システムを使用して、変更を追跡、実装し、手動プロセスによって発生するエラーと労力を減らすことができます。構築、テスト、デプロイ、検証を通じたコードのチェックインから統合とデプロイのパイプラインを完全自動化します。これにより、リードタイムを削減し、変更の頻度を増やすことが可能になり、それにかかわる労力のレベルを減らすことができます。 
  +  [AWS CodeBuild とは](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
  +  [ソフトウェア開発のための継続的インテグレーションのベストプラクティス](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
  +  [Slalom: AWS のサーバーレスアプリケーション用の CI/CD](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
  +  [AWS CodeDeploy の紹介 - Amazon Web Services を使用したソフトウェアの自動デプロイ](https://www.youtube.com/watch?v=Wx-ain8UryM) 
  +  [AWS CodeDeploy とは](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
  +  [AWS を使用した高度な継続的デリバリーテクニックの詳細](https://www.youtube.com/watch?v=Lrrgd0Kemhw) 

## リソース
<a name="resources"></a>

 **関連するドキュメント:** 
+  [AWS CodeDeploy でブルー/グリーンデプロイのサンプルを試す](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications-create-blue-green.html) 
+  [AWS CodeBuild とは](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [AWS CodeDeploy とは](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **関連動画:** 
+  [ソフトウェア開発のための継続的インテグレーションのベストプラクティス](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
+  [AWS を使用した高度な継続的デリバリーテクニックの詳細](https://www.youtube.com/watch?v=Lrrgd0Kemhw) 
+  [AWS CodeDeploy の紹介 - Amazon Web Services を使用したソフトウェアの自動デプロイ](https://www.youtube.com/watch?v=Wx-ain8UryM) 
+  [Slalom: AWS のサーバーレスアプリケーション用の CI/CD](https://www.youtube.com/watch?v=tEpx5VaW4WE) 

# OPS06-BP08 テストとロールバックを自動化する
<a name="ops_mit_deploy_risks_auto_testing_and_rollback"></a>

 デプロイした環境のテストを自動化し、望ましい結果が得られるかどうか確認します。結果が得られなかった場合に、以前の正常な状態へのロールバックを自動化し、復旧時間を最小限に抑え、手動プロセスによるエラーを低減します。 

 **一般的なアンチパターン:** 
+  あなたは、ワークロードに変更をデプロイします。変更が完了したことを確認した後、あなたは、デプロイ後のテストを開始します。テストが完了したことを確認した後、あなたは、ワークロードが操作不可であり、顧客の接続が切断されたことに気づきます。その後、あなたは、以前のバージョンへのロールバックを開始します。問題を検出するのに長い時間をかけた後、復旧にかかる時間は、手動による再デプロイによってさらに長くなります。 

 **このベストプラクティスを確立するメリット:** デプロイ後の変更をテストして検証することで、問題をすぐに特定できます。以前のバージョンに自動的にロールバックすることで、顧客への影響を最小限に抑えることができます。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** 低 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  テストとロールバックを自動化する: デプロイした環境のテストを自動化し、望ましい結果が得られるかどうか確認します。結果が得られなかった場合に、以前の正常な状態へのロールバックを自動化し、復旧時間を最小限に抑え、手動プロセスによるエラーを低減します。例えば、デプロイ後に詳細な合成ユーザートランザクションを実施し、その結果を確認して、失敗した場合にはロールバックします。 
  +  [Redeploy and roll back a deployment with AWS CodeDeploy (AWS CodeDeploy を使用した再デプロイとロールバック)](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployments-rollback-and-redeploy.html) 

## リソース
<a name="resources"></a>

 **関連するドキュメント:** 
+  [Redeploy and roll back a deployment with AWS CodeDeploy (AWS CodeDeploy を使用した再デプロイとロールバック)](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployments-rollback-and-redeploy.html) 