Codeシリーズ

●デプロイ種類

・Blue/Greenデプロイ

①本番環境(以下、ブルー環境と呼ぶ)に対し、アップデート環境(以下、グリーン環境と呼ぶ)を新規作成する。
②グリーン環境をルータにアタッチする。
③ルータの向き先を切り替え、アプリケーションへのリクエストの向き先をブルー→グリーンに変更する。
④グリーンの動作が安定したら完了。問題が発生した場合、向き先をグリーン→ブルーに変更し、ロールバックする。
⑤次回のリリースではグリーンを本番、ブルーをテスト環境とし、①〜④の手順でリリースを実施する。

AWSの場合、ロードバランサー等によるルーティングの制御によってトラフィックを切り替え、

ダウンタイム無しで環境を切り替える。

参考:https://www.casleyconsulting.co.jp/blog/engineer/246/

・イミュータブルデプロイメント

イミュータブルデプロイメントでは、新環境への切り替え後、問題ないことを確認したら旧環境は破棄します。

・シンボリックデプロイメント

運用中のサーバー上の別の場所に新しいファイルを配置して、

サービスが利用しているシンボリックリンクを変更することで新しいアプリケーションに切り替えます。

・ローリングデプロイメント

複数あるサーバーに対して順番にロードバランサーから切り離してデプロイを行っていく手法です。

 

●CodeCommit
ソースコードを管理するGitリポジトリサービス

トリガーにSNSを起動することができる。

Githubとの違いは、CodeCommitの方がセキュリティが高いこと。

IAMユーザーを用いた権限管理ができる。

リポジトリが基本プライベート。

AWS サービスとの親和性が高い

Githubの場合、Privateにしているプロジェクトでも外部の開発関係者と丸ごと共有する場合がある。

codeシリーズと組み合わせることでCI/CD環境構築が容易にできる。

プルリクエストも可能。

 

●CodeBuild

コンパイル、ビルド環境を提供するマネージドサービス

☆CodeBuildでユニットテストも実行可能。dockerイメージにも可能。

ソースコードを受け取りそれを仕様書(buildspec.ymlファイル)に基づいて、

ビルド環境を構築しテストを行う。

GitHubやBitbucketも選択可能。

 

●CodeDeploy
ビルドされたモジュールのデプロイ自動化サービス

☆オンプレ、AutoScaling、Lambdaへのデプロイが可能

☆EC2、オンプレを対象サーバーとする場合、CodeDeployエージェントをインストール

appspec.ymlファイルに記述

○デプロイ方法

・AllAtOnce

関連するサーバーへデプロイする。

リリースが短くなる反面、システム全体でダウンタイムが発生する。

・HalfAtTime

関連するサーバー半分のリリースに対してデプロイを行う。

デプロイの前にサーバーを切り離すため縮小運用となる。

そのため高負荷にならないようにデプロイ計画が必要

・OneAtTime

関連するサーバーを1つずつ切り離してデプロイを行う方式デプロイを行うこと。

サーバーの負荷はかからないが、リリースに時間がかかる。

 

●CodePipeline

CodeCommit,CodeBuild,CodeDeployのサービスを束ねて一連の開発プロセスを自動化するサービス

その他にもCodeDeploy、Beanstalk、CloudFormation、OpsWorks、ECSに対応している。

1,ソースコードをプッシュ

2,プッシュを検知してソースコードをビルド

3,ビルドを検知してアーティファクトにデプロイ

使用例)

CloudFormationをコードパイプラインに組み込んでCloudFormationの環境構築を自動化できる

1.CloudFormationテンプレートを記載したコードをgithubでプッシュしてCodePipelineのパイプラインが起動。

2.CodeBuildによりビルド

3.CloudFormationによりLambda関数やDynamoDBテーブルを作成

 

●Codestar

Codeシリーズを使ってCI/CD環境を自動でセットアップしてくれる。