

# REL07-BP01 リソースの取得またはスケーリング時に自動化を使用する
<a name="rel_adapt_to_changes_autoscale_adapt"></a>

 クラウドの信頼性の基盤は、インフラストラクチャとリソースのプログラム定義、プロビジョニング、管理です。自動化は、リソースのプロビジョニングを合理化し、一貫性のある安全なデプロイを促進し、インフラストラクチャ全体でリソースを拡張するのに役立ちます。

 **期待される成果**: Infrastructure as Code (IaC) を管理する。バージョン管理システム (VCS) でインフラストラクチャコードを定義して維持します。AWS リソースのプロビジョニングを自動化されたメカニズムに委任し、Application Load Balancer (ALB)、Network Load Balancer (NLB)、Auto Scaling グループなどのマネージドサービスを活用します。継続的インテグレーション/継続的デリバリー (CI/CD) のパイプラインを使用してリソースをプロビジョニングすることで、Auto Scaling 設定の更新を含むリソースの更新がコードの変更によって自動的に開始されます。

 **一般的なアンチパターン:** 
+  コマンドラインまたは AWS マネジメントコンソール (*click-ops* とも呼ばれる) でリソースを手動でデプロイしている。
+  アプリケーションコンポーネントまたはリソースを緊密に結合し、その結果として柔軟性のないアーキテクチャを作成している。
+  ビジネス要件、トラフィックパターン、または新しいリソースタイプの変化に適応しない柔軟性のないスケーリングポリシーを実装している。
+  予想される需要を満たすためのキャパシティを手動で見積もっている。

 **このベストプラクティスを活用するメリット**: Infrastructure as Code (IaC) を使用すると、インフラストラクチャをプログラムで定義できます。これにより、アプリケーションの変更と同じソフトウェア開発ライフサイクルでインフラストラクチャの変更を管理することができるため、一貫性と再現性が向上し、エラーが発生しやすい手動タスクのリスクが軽減されます。自動化された配信パイプラインで IaC を実装することにより、リソースのプロビジョニングと更新のプロセスをさらに合理化できます。手動による介入を必要とせずに、インフラストラクチャの更新を確実かつ効率的に展開できます。この俊敏性は、変動する需要に合わせてリソースをスケーリングするときに特に重要です。

 IaC および配信パイプラインと併せて、動的で自動化されたリソーススケーリングを実現できます。主要なメトリクスをモニタリングし、事前定義されたスケーリングポリシーを適用することにより、Auto Scaling は必要に応じてリソースを自動的にプロビジョニングまたはプロビジョニング解除できるため、パフォーマンスとコスト効率が向上します。これにより、アプリケーションやワークロードの要件の変化に応じて、手動エラーや遅延が発生する可能性が低くなります。

 IaC、自動化された配信パイプライン、Auto Scaling を組み合わせることで、組織は自信を持って環境をプロビジョニング、更新、スケーリングできるようになります。この自動化は、応答性、耐障害性、効率的なマネージド型のクラウドインフラストラクチャを維持するために不可欠です。

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

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

 CI/CD パイプラインと AWS アーキテクチャの Infrastructure as Code (IaC) で自動化を設定するには、Git などのバージョン管理システムを選択して IaC テンプレートと設定を保存します。これらのテンプレートは、[AWS CloudFormation](https://aws.amazon.com/cloudformation/) などのツールを使用して記述できます。開始するには、これらのテンプレート内でインフラストラクチャコンポーネント (AWS VPC、Amazon EC2 Auto Scaling グループ、Amazon RDS データベースなど) を定義します。

 次に、これらの IaC テンプレートを CI/CD パイプラインと統合してデプロイプロセスを自動化します。[AWS CodePipeline](https://aws.amazon.com/codepipeline/) のシームレスな AWS ネイティブソリューションを活用するか、サードパーティーの CI/CD ソリューションを使用できます。バージョン管理リポジトリに変更が発生したときにアクティブ化するパイプラインを作成します。IaC テンプレートをリントして検証するステージを含むようにパイプラインを設定し、インフラストラクチャをステージング環境にデプロイし、自動テストを実行し、最後に本番環境にデプロイします。必要に応じて承認ステップを組み込み、変更に対するコントロールを維持します。この自動パイプラインは、デプロイを高速化するだけでなく、環境間の一貫性と信頼性も高めることができます。

 IaC で Amazon EC2 インスタンス、Amazon ECS タスク、データベースレプリカなどのリソースの Auto Scaling を設定し、必要に応じて自動でスケールアウトとスケールインを提供します。このアプローチは、アプリケーションの可用性とパフォーマンスを向上させ、需要に基づいてリソースを動的に調整することによってコストを最適化します。サポートされているリソースのリストについては、「[Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html)」と「[AWS Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html)」を参照してください。

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

1.  ソースコードリポジトリを作成および使用して、インフラストラクチャの設定を制御するコードを保存します。このリポジトリに変更をコミットして、進行中の変更を反映します。

1.  インフラストラクチャを最新の状態に保ち、意図した状態からの不整合 (ドリフト) を検出するには、AWS CloudFormation などの Infrastructure as Code ソリューションを選択します。

1.  IaC プラットフォームを CI/CD パイプラインと統合してデプロイを自動化します。

1.  リソースの自動スケーリングに適したメトリクスを決定して収集します。

1.  ワークロードコンポーネントに適したスケールアウトおよびスケールインポリシーを使用して、リソースの自動スケーリングを設定します。予測可能な使用パターンには、スケジュールされたスケーリングの使用を検討してください。

1.  デプロイをモニタリングして障害とリグレッションを検出します。CI/CD プラットフォーム内にロールバックメカニズムを実装して、必要に応じて変更を元に戻します。

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

 **関連ドキュメント:** 
+  [AWS Auto Scaling: スケーリングプランの仕組み](https://docs.aws.amazon.com/autoscaling/plans/userguide/how-it-works.html) 
+  [AWS Marketplace: 自動スケーリングで使用できる製品](https://aws.amazon.com/marketplace/search/results?searchTerms=Auto+Scaling) 
+  [DynamoDB Auto Scaling によるスループットキャパシティの自動管理](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) 
+  [Auto Scaling グループでロードバランサーを使用する](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) 
+  [AWS Global Accelerator とは?](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html)
+  [Amazon EC2 Auto Scaling とは](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 
+  [What is AWS Auto Scaling?](https://docs.aws.amazon.com/autoscaling/plans/userguide/what-is-aws-auto-scaling.html)
+  [Amazon CloudFront とは何ですか?](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html?ref=wellarchitected)
+  [Amazon Route 53 とは?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html)
+  [Elastic Load Balancing とは?](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)
+  [Network Load Balancer とは?](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)
+  [「Application Load Balancer とは?](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)」 
+  [Jenkins を AWS CodeBuild および AWS CodeDeploy と統合する](https://aws.amazon.com/blogs/devops/setting-up-a-ci-cd-pipeline-by-integrating-jenkins-with-aws-codebuild-and-aws-codedeploy/) 
+  [AWS CodePipeline を使用して 4 ステージのパイプラインを作成する](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-four-stage-pipeline.html) 

 **関連動画:** 
+  [Back to Basics: Deploy Your Code to Amazon EC2](https://www.youtube.com/watch?v=f2wvEQ_sWS8) 
+  [AWS Supports You \$1 Starting Your Infrastructure as Code Solution Using AWS CloudFormation Templates](https://www.youtube.com/watch?v=bgfx76jr7tA) 
+  [Streamline Your Software Release Process Using AWS CodePipeline](https://www.youtube.com/watch?v=zMa5gTLrzmQ) 
+  [Monitor AWS Resources Using Amazon CloudWatch Dashboards](https://www.youtube.com/watch?v=I7EFLChc07M) 
+  [Create Cross Account & Cross Region CloudWatch Dashboards \$1 Amazon Web Services](https://www.youtube.com/watch?v=eIUZdaqColg) 