ローカルのDockerプロジェクトを、本番用としてAWS上に展開するサービスとして、ECS(Elastic Container Service)がある。
このECSでタスク定義など設定を行っていく際に必ず直面するのが、「起動タイプの互換性」や「FARGATEとEC2」といった用語。
この、「起動タイプの互換性」や「FARGATEとEC2の違い」について。
起動タイプの互換性とは何か?
AWSでコンテナを起動させるためには、そもそもコンテナを起動するためのGuest OS(Linuxなど)をインストールするサーバー(コンピュータ)を用意する必要がある。
この大元のインフラとなるサーバーが、ここでいう起動タイプとなる。
ECSでDockerサービスを展開するために使えるサーバーは(1)Fargateと(2)EC2の二つ。
Fargate(ファーゲート)とは何か?
Fargateはファーゲートと読み、AWSが作ったサービス名で英語辞典にその意味は載っていない。
FargateはECS(AWS上)でコンテナを実行するためのサーバーの種類の一つ。保守管理が要らないのが最大の特徴。
AWSによると「コンテナ向けサーバーレスコンピューティングエンジン」とのこと。(これまたわかりにくい)
コンテナ向けサーバーレスコンピューティングエンジンって何?
保守管理のいらないコンテナ専用のサーバーという意味。
保守管理をAWSがやってくれるので、バージョンアップやセキュリティ対策など気にしなくていい超手間いらずなサーバー。
サーバーレスとは何か?
サーバーがない(レス)という意味ではなく、保守管理のいらない(レス)サーバーということ。
コンピューティングエンジンとは?
プログラムの処理システムのこと。英語だとCompute Engineと書く。馴染みのある用語だと「仮想マシン」
1台のコンピュータで複数のコンピュータを作動させる技術のこと。(Dockerのコンテナの説明で、仮想マシンの上にコンテンがのっかているイメージ図が表している)
Fargateを選択すると、GuestOSにwindowsは使えない。
EC2とは何か?
ユーザーがAWSクラウドの中に自由に設計できるサーバーのこと。
Elastic Compute Cloudの略。Cから始まる単語二つを略してEC2と呼ばれる。
AWSによると「インスタンスと呼ばれる仮想コンピューティング環境」や「安全でサイズ変更可能なコンピューティング性能をクラウド内で提供するウェブサービス」とのこと。
仮想コンピューティング環境とは何か?
仮想コンピューティング環境 = 仮想サーバーのこと。サーバーとしてはAWSの持つものが本体で、その中に更にサーバーを作るため、本体じゃないよという意味で「仮想」がつく。
インスタンスとは何か?
インスタンスは実態のこと。EC2を作る前は、AWSのクラウドがあるのみで、その中にサーバーは存在していない。
サーバー(EC2)を自分で設計することで新しい仮想サーバーが生み出される。これを一つの実態と捉えて、一つの一つのEC2のことをインスタンスと呼ぶ。
インスタンスは一つ一つで起動・停止、またはコピー、削除もできる。
タスク定義の中のEC2とは何か?
タスク定義の最初に選択するEC2は、Dockerを展開するためのインフラとして、EC2サーバーを選択するという意味。
自由に設計できるサーバーなので、容量やセキュリティーの状況など自己管理する必要がある。
FargateとEC2の違いは何か?
FargateもEC2もどちらもAWS上の仮想サーバー。
ECSのタスク定義では、Dockerやコンテナを作成するための大元のインフラ環境となる。
どちらを選んでもいいが、FargateはAWSが運用保守管理をしてくれる手間要らずのサーバー。
EC2は自己管理ができるサーバーとなる。
FargateとEC2どっちを選べばいいか?
基本的にはFargateを選べばOK。
FargateはECSのサービスをより使いやすくするためにAWSが作成した専用のサーバー。
EC2でいちいちサーバー構築して保守管理するのめんどくさいというユーザーの悩みを解決してくれている。
もちろん、自分で保守管理したいといったニーズがあればEC2を選択してコンテナを作成していくことも可能。