

# REL08-BP05 自動化を使用して変更をデプロイする
<a name="rel_tracking_change_management_automated_changemgmt"></a>

 デプロイとパッチ適用を自動化することで、悪影響を排除します。

 本稼働システムに変更を加えることは、多くの組織にとって最大級のリスクの 1 つです。当社は、ソフトウェアで対処するビジネス上の問題と同じくらい、デプロイを最優先の課題であると考えています。これは今日、変更のテストとデプロイ、容量の追加と削除、データの移行など、実運用のあらゆる場所における自動化の導入を意味します。

 **期待される成果:** 広範な本稼働前テスト、自動ロールバック、ずらされた本稼働デプロイを使用して、自動デプロイの安全性をリリースプロセスに構築します。この自動化により、デプロイの失敗による本番環境への潜在的な影響が最小限に抑えられ、開発者は本番環境へのデプロイを積極的に監視する必要がなくなります。

 **一般的なアンチパターン:** 
+  手動で変更を行う。
+  手動の緊急ワークフローにより、自動化のステップを省略する。
+  スケジュールを短縮するために、確立された計画やプロセスを無視する。
+  ベイク時間を考慮せずに、急激なフォローオンデプロイを実行する。

 **このベストプラクティスを活用するメリット:** 自動化を使用してすべての変更をデプロイすることで、人為的ミスが発生する可能性を排除し、本番環境を変更する前にテストする機能を提供します。本番環境の稼働前にこのプロセスを実行することで、計画が完了していることを確認できます。さらに、リリースプロセスに自動ロールバックを組み込むことで、本番環境の問題を特定し、ワークロードを以前の動作状態に戻すことができます。

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

## 実装のガイダンス
<a name="implementation-guidance"></a>

 デプロイパイプラインを自動化します。デプロイパイプラインを使用すると、自動テストおよび異常の検出を呼び出せるようになります。また、本番環境へのデプロイを行う前の特定のステップでパイプラインを休止したり、変更を自動的にロールバックしたりできます。このために不可欠な部分は、[継続的インテグレーションと継続的デリバリー/デプロイ](https://en.wikipedia.org/wiki/CI/CD) (CI/CD) 文化の導入です。これにより、コミットまたはコードの変更は、ビルドおよびテスト段階から本番環境へのデプロイまで、さまざまな自動化されたステージゲートを通過します。

 運用上の最も難しい手順には人間を関与させることが一般通念で推奨されていますが、最も難しい手順については、まさにこの理由から自動化を推奨します。

### 実装手順
<a name="implementation-steps"></a>

 デプロイを自動化して手動操作をなくすには、以下の手順に従います。
+  **コードを安全に保存するためのコードリポジトリを設定する:** Git などの一般的なテクノロジーに基づくホスト型ソースコード管理システムを使用して、ソースコードと Infrastructure as code (IaC) 構成を保存します。
+  **ソースコードをコンパイルし、テストを実行して、デプロイアーティファクトを作成するように継続的統合サービスを設定する:** この目的のためにビルドプロジェクトを設定するには、「[コンソールを使用した AWS CodeBuild の開始方法](https://docs.aws.amazon.com/codebuild/latest/userguide/getting-started.html)」を参照してください。
+  **アプリケーションのデプロイを自動化し、エラーが発生しやすい手動デプロイに依存せずにアプリケーションの更新の複雑さを処理するデプロイサービスを設定する:** [AWS CodeDeploy](https://aws.amazon.com/codedeploy/) は、Amazon EC2、[AWS Fargate](https://aws.amazon.com/fargate/)、[AWS Lambda](https://aws.amazon.com/lambda)、オンプレミスサーバーなどのさまざまなコンピューティングサービスへのソフトウェアデプロイを自動化します。これらのステップを設定するには、「[CodeDeploy の開始方法](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-codedeploy.html)」を参照してください。
+  **リリースパイプラインを自動化する継続的な配信サービスを設定して、アプリケーションとインフラストラクチャの更新をより迅速かつ確実にする:** リリースパイプラインの自動化に役立つ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/getting-started-codepipeline.html) の使用を検討してください。詳細については、「[CodePipeline チュートリアル](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials.html)」を参照してください。

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

 **関連するベストプラクティス:** 
+  [OPS05-BP04 構築およびデプロイ管理システムを使用する](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_build_mgmt_sys.html) 
+  [OPS05-BP10 統合とデプロイを完全自動化する](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_auto_integ_deploy.html) 
+  [OPS06-BP02 デプロイをテストする](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_mit_deploy_risks_test_val_chg.html) 
+  [OPS06-BP04 テストとロールバックを自動化する](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_mit_deploy_risks_auto_testing_and_rollback.html) 

 **関連ドキュメント:** 
+  [AWS CodePipeline を利用したネストされた AWS CloudFormation スタックの継続的デリバリー](https://aws.amazon.com/blogs/devops/continuous-delivery-of-nested-aws-cloudformation-stacks-using-aws-codepipeline) 
+  [APN パートナー: 自動化されたデプロイソリューションの作成を支援できるパートナー](https://aws.amazon.com/partners/find/results/?keyword=devops) 
+  [AWS Marketplace: products that can be used to automate your deployments](https://aws.amazon.com/marketplace/search/results?searchTerms=DevOps) 
+  [Webhook を使用してチャットメッセージを自動化する](https://docs.aws.amazon.com/chime/latest/ug/webhooks.html) 
+  [Amazon Builders' Library: デプロイ時におけるロールバックの安全性の確保](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments) 
+  [Amazon Builders' Library: 継続的デリバリーによる高速化](https://aws.amazon.com/builders-library/going-faster-with-continuous-delivery/) 
+  [ とはAWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 
+  [What is CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)
+  [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 
+  [Amazon SESとは](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html) 
+  [Amazon Simple Notification Service とは](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 

 **関連動画:** 
+  [AWS Summit 2019: AWS における CI/CD](https://youtu.be/tQcF6SqWCoY) 