【軌跡-DVA】DVA学習メモーー分野１：展開（デプロイ）

DVAの学習で自分がポイントと思ったところだけメモをしました、参考になれば幸いです。
前回の記事：【軌跡-DVA】今日からawsデベロッパーアソシエイト(DVA)の学習を始まります。
https://qiita.com/goto8/items/63b7fb8a203143d2158f
##１．デプロイパターン
<strong>In-Placeデプロイ：</strong>稼働中の環境でデプロイ。再起動してしまう。
<strong>Blue/Greenデプロイ：</strong>現バージョン環境は更新しない、新バージョンの環境を構築しデプロイ。リクエスト送信先を切り替える方式。無停止でリリース。

<strong>Linear（線形）：</strong>時間に合わせて新環境の割合を増やす。
　例：毎分10％づつを設定すると、１０分後100％デプロイ完了
<strong>Canary（カナリア）：</strong>最初は数％のみのユーザーに新バージョンの環境を提供、問題が起きないことを確認しながら段階的に割合を増やしていく方式。
　炭鉱で毒ガスを検知する「カナリア」がこの名称の由来らしい。
<strong>Rolling：</strong>稼働中サーバーを一部切り離してIn-Placeデプロイを繰り返す。
<strong>Immutable:</strong>Blue/Greenデプロイと似てるが、リリース後旧環境は削除してしまう。ロールバックする場合も新環境に古いアプリケーションをリリースする。
<strong>All at once:</strong>すべてのサーバーを同時にIn-Placeデプロイを行う。

##２．デプロイサービス
<strong>AWS CodeCommit：</strong>プライベートにソースコードのバージョン管理できるリポジトリサービス。
　　gitコマンドはGitHubと同様。
　　SSHまたはHTTPSを使って安全に接続できる、認証情報はIAMユーザーごとに生成する。
　　管理ポリシー：AWSCodeCommitPowerUserをアタッチすることで使用可能になる。
　　ソースコードが更新されたとき、通知（SNS、AWSChatbot）とLambda関数を実行できる。
　　プルリクエスト：コードの変更をレビュワーに通知し、マージを依頼する機能。

<strong>AWS CodeBuild:</strong>
　　ビルド対象のソース：S3バケット、CodeCommit、GitHub、GitHub Enterprise、Bitbucket。
　　　　GitLabは現時点サポートされていない。
　　buildspec.yml：ビルドの仕様を定義。
　　ローカルでもセットアップして実行できる。

<strong>AWS CodeDeploy：</strong>
　　appspec.yml：リビジョンに含まれるアプリケーションの仕様。
　　GihubやS3バケットからリビジョンにアクセスできる。
　　EC2、オートスケーリング、オンプレミスサーバー、ECS、Lambdaへ、S３、GitHubからデプロイできる。
　　設定画面：設定項目と設定内容を理解しておきましょう。

<strong>AWS CodePipeline：</strong>リリースするために必要な手順をモデル化、視覚化、自動化に使用できるCD（継続的なデリバリーサービス）。
　　選択できるソースプロバイダー：CodeCommit、ECR、S3、Bitbucket、GitHub
　　選択できるビルドプロバイダー：CodeBuild、Jenkins
　　選択できるデプロイプロバイダー：
　　　　AWS CodeDeploy、AWS AppConfig、AWS CloudFormation、AWS Elastic Beanstalk
　　　　AWS OpsWorks、AWS Service Catalog、Alexa Skills Kit、Amazon ECS、Amazon S3

<strong>AWS CodeStar：</strong>プロジェクトテンプレートを選択でき、数クリックでＣＩ／ＣＤパイプラインを自動作成できる。

<strong>AWS CodeArtifact：</strong>ソフトウェアパッケージをリポジトリに保存するサービス。

<strong>Amazon CodeGuru:</strong>
　　CodeGuru Profiler:アプリケーションのパフォーマンスを可視化。
　　CodeGuru Reviewer:自動レビュー。

<strong>AWS CloudFormation：</strong>
　　ユースケース：
　　・開発環境、本番環境を選択できるようにしたい場合、ParametersとConditionsセクションを使う。
　　・複数のリージョンで独自のAMIを使用したEC２インスタンスを含むアーキテクチャを起動したい場合、Mappingsセクションを使う。
　　・別の AWS CloudFormation スタックのリソース出力を参照する場合、Outputsセクションを使う。
　　　例：ネットワークスタックで出力したサブネットIDをアプリケーションスタックで使いたい場合、ネットワークスタックでOutputsセクションにExportを定義し、アプリケーションスタックでImportValue関数を使用。

<strong>AWS OpsWorks：</strong>
　　既にChefを使用している場合は、AWS　OpsWorks　for Chef Automateを選択。
　　既にPuppetを使用している場合は、AWS OpsWorks for Puppet Enterpriseを選択。

<strong>Elastic Beanstalk:</strong>
　　実行プラットフォーム：．．．
　　作成できるリソース：
　　　　　CloudFormationスタック
　　　　　起動設定
　　　　　オートスケーリンググループ
　　　　　スケーリングポリシーと紐付くCloudWatchアラーム
　　　　　セキュリティグループ
　　　　　ALB
　　設定できるデプロイメントポリシー：All at onceとRolling
　　エラー発生したとき、管理者にメール通知したい場合、SNSと連携。
　　AWSの各リソースを管理するために、サービスロールと呼ばれるIAMロールが必要。
　　　　aws-elasticbeanstalk-service-role:
　　　　・AWSElasticBeanstalkEnhancedHealth:インスタンスや環境の正常性確認のためのポリシー
　　　　・AWSElasticBeanstalkService:環境を作成、更新するためのポリシー
　　EC2インスタンスのIAMロール、AWSの他のサービスにアクセスするために使用。
　　EB CLI：
　　　　代表的なコマンド：eb init、eb create、eb deploy
　　バージョンのライフサイクル設定：
　　　　バージョン数、期間で設定可能。S３バケットのソースファイルを保持するかどうか選択できる。
　　設定ファイル（.ebextensions）：環境のカスタマイズができる。
　　クローンとスワップ機能を使用して、Blue/Greenデプロイを実行し、無停止でソフトウェアの新バージョンをリリースできる。
　　構築できる環境：Webサーバー環境、ワーカー環境（SQSに送信されたタスクメッセージを受信して、タスク処理をするEC2　Auto Scalingを構築できる）

##３．サーバーレスアーキテクチャ：
　　代表的なサービスを押さえておきましょう。
　　一般的なアーキテクチャを押さえておきましょう。

##４．AWS　SAM：
　　サーバーレスアプリケーションの開発とデプロイを素早く開始できる。
　　コマンド：sam init、sam build、sam deploy、sam local start-api
　　sam local start-api：テストをローカル環境で行う

※本記事の内容は2021年8月時点の情報です。