AWS ECSワークショップに参加したので、その感想とまとめをしました。
はじめに
AWS ECSのワークショップに参加したので感想とまとめです。
Dockerは業務で使いますが、ECS,Fargateに関しては初めてだったので ワークショップを通じて、自分なりに整理してみました。
ワークショップの内容は、ECSを使ってシンプルなチャットアプリを作成することです。 ※コードは既に準備されています。
想定されるサービスの構成は以下のようなものになります。 引用元:AWS Workshops
情報整理
まずは、図で整理します。
ECR(Elastic Container Registry)
ECSで展開するためのDockerコンテナイメージを登録しておくサービス
ECSクラスター
タスクやサービスをまとめておくグループ(枠)
タスク
起動タイプをFargateかEC2から選択する。 選択した起動タイプで、どのECRリポジトリを起動するのか定義する。 環境変数などもタスク上に定義する。
サービス
どのクラスターに属するのかや、起動しておくタスクの数を設定する。 どのVPCに属すのか、ロードバランサーは何を使うのかなど設定。
起動の指示などを行うイメージ。
デプロイタイプ
ECSをデプロイする際に、デプロイ戦略を3種類の中から指定できる。
タイプ | 内容 |
---|---|
ローリング更新 | 1台ずつ順番に更新して、置き換えていく |
Blue/Green | CodeDeployと連携し、更新用に新しい環境を準備し、準備ができたら切り替える |
外部 | サードパーティ制のデプロイ管理サービスを使用できる。 |
特に厳しい要件もなく、シンプルにいく場合は、ローリング更新がオススメです。
手順
やったことをそのまま書くと、ワークショップ通りになってしまうので ざっくりと記入するようにします。
CloudFormationの展開
今回使用するインフラ構成ついては、CloudFormationを使って構築するため 構成ファイルをダウンロードし、展開します。 https://static.us-east-1.prod.workshops.aws/public/a5d3aad0-1d63-460e-aab7-7dc6017a7c1a/static/simplechat.json
ECRでリポジトリの作成
新規にリポジトリを作成し、Dockerイメージを登録します。
Cloud9を使用し、Dockerプロジェクトファイルのダウンロード,解凍します。
ECRには、プッシュコマンドが用意されているので Cloud9上からプッシュコマンドを実行し、イメージの登録を行います。
クラスターの作成
ECSに移動し、クラスターを作成します。
タスク定義
ECSでタスク定義を行います。この時、Fargateを使用します。
サービスの作成
ECS サービスの作成を行います。 └デプロイメントタイプの指定 └クラスターの指定 └VPCの指定 └ALBの追加
アプリ使用
ALBのDNSにアクセスし、アプリを利用。
アプリの更新
Cloud9でアプリのViewファイルを更新し、プッシュコマンドを実行
ECSのクラスターでサービスの更新を実施することで、デプロイされる。 古いサービスに関しては削除(ドレイン)される。
感想
ECSが実案件で使えるようになったら、スケーリングや環境の準備が要らなくなるなりそうな気がするので試してみたいと思いました。
Discussion