クラウドインテグレーション部の渡邊です。
コンテナ、ECS、CDKに関連する登壇を先日行ったため、記事にまとめました。
各内容の基礎から、部分的ではありますがベストプラクティスまで説明しているため、ぜひご覧ください。
コンテナとは、OS内で仮想化されたアプリケーションの実行環境で、コンテナエンジンを用いて動かす仮想化技術のひとつです。
OSの上にあるコンテナ管理ソフト(コンテナエンジン)でコンテナを管理します。
Dockerとは、軽量で高速に動作するコンテナ型仮想環境用プラットフォームのことで、コンテナを動かすためのコンテナエンジンです。
Dockerコンテナが完成するまでに以下の過程を経ます。
①DockerイメージのオンラインレジストリであるDockerHubからベースイメージを取得する(DockerFileにベースイメージの情報を記載する)
②コンテナの設計書にあたるDockerfileの情報をもとに、Dockerイメージを作成する
③Dockerレジストリへイメージをプッシュ、またはローカルにコンテナを起動する
④Dockerレジストリへイメージをプッシュした場合、イメージに基づいて任意のプラットフォームでコンテナを起動する
ベースイメージの指定に加え、ファイル追加やパッケージのインストールなど実行したい内容をDockerfileに記載し、Dockerイメージを構成します。
ECSとはコンテナ化されたアプリケーションのデプロイ、管理、スケーリングを簡素化するためのオーケストレーションサービスです。
機能として、デプロイ、スケーリング、ネットワークロードバランシングなどが挙げられます。
複数のコンテナに対して、コマンドを実行する必要がなく、運用管理が楽になります。
ECSの構成要素は主に4つです。
①クラスタ
②タスク定義
③サービス
④タスク
ECSと関連の深いサービスとしてECRが挙げられる。
ECRはDockerイメージの保存場所で、タスク定義でイメージレジストリを参照する。
ECRは脆弱性のスキャン、イメージの暗号化機能を提供している。
ECSの実行環境として、EC2またはAWS Fargateを選択できる。
これらを使用してコンテナをホストするクラスタを管理する。
ECS on Fargateは、ECS on EC2と比べると利用者の責任範囲が小さい分、リソースの詳細な設定ができない。
しかし、サーバレスであるためシンプルな運用が可能。
CDKとは、プログラミング言語を用いてクラウドインフラをコードで定義し、CloudFormationによってデプロイできる開発フレームワークのことです。 メリットとしては、手順書の省力化、テストの自動化による開発スピードの向上、手動による操作ミス防止などが挙げられます。
CDKはApp、Stack、Constructで構成されてます。
App > Stack > Construct という包含関係があるため、1つのAppに複数のStack、1つのStackに複数のConstructが含まれます。
App・・・構成のエントリポイント
Stack・・・Cloudformationスタックを表現する入れ物
Construct・・・具体的なAWSリソースを作成
AWS CDKでクラウドアプリケーションを開発するためのベストプラクティスをベースにCDKのベストプラクティスを記載しております。
【参考】
Boost your infrastructure with the AWS CDK
Container technology terminology
Docker入門(第四回)~Dockerfileについて~