AWSではコンテナを運用するための様々なサービスがあることを以前ご紹介させて頂きました。
AWSでコンテナ技術を使ったインフラをいざ作ろうとした時に「コンテナ化するための手段・方法」はとても多く、新技術への検証に対するコストの余裕が無い時には少しためらってしまう方も多いかと思います。
この記事では、そんな「コンテナ化」に関するサービス・用語について解説しながら、簡単な事例に沿ってどんなサービスが利用できるかをご紹介します。
■コンテナオーケストレーション(コントロールプレーンとデータプレーン)
まず、コンテナに関連するサービスとしてコントロールプレーンとデータプレーンという2つの主なサービスから考えましょう。
砕けた説明ですが、次のように捉えるものとします。
- コントロールプレーン→コンテナを管理するためのサービス
- データプレーン→コンテナを稼働させるサービス
例えばEC2インスタンスにSSHしてDockerの環境を整えてイメージをpullしてきて……と手作業でコンテナ化を行う事は可能ですが、デプロイの度にEC2を直接操作したり、サーバーの台数が増えたらそれだけ管理も複雑になったり……といった課題を産まないために、に関する作業やそれらのリソースの増減を効率的に管理するためにコンテナオーケストレーションと呼ばれる管理手法を取ります。それを行うのがコントロールプレーンに属するサービスとなります。
ざっと「コントロールプレーンを使ってデータプレーンを操作して、コンテナをデプロイして、その各コンテナを管理する」という関係で思い浮かべると良いです。
その中で、コントロールプレーンの中でもEKS、ECSが、データプレーンの中でもFargateとEC2があり、それぞれが違う特徴を持っているためサービスの利用目的に沿って選定する必要があります。
■ECS(Elastic Container Service)とは
多様なワークロード(24時間稼働するワーカーやWebアプリケーションから、バッチ等やデータ分析用途のスポット起動まで)に対応するコントロールプレーンが、ECSです。
後述するEKSと同じくコントロールプレーンとして、データプレーンの属するVPC、サブネット、ゲートウェイ等のネットワークの管理からコンテナの管理まで行う事が出来ます。
サービスの違いを理解するために重要なのはEKSと違い「AWSで完結するコンテナオーケストレーション」を実現するために開発されたサービスのため、AWSで普段目にしない用語を気にすることなく、様々なAWSのサービスと連携して効率的な管理を行う事ができます。
■EKS(Elastic Kubernetes Service)とは
Kubernetes(Googleによって開発され、現在はOSS化されたプロジェクト)をマネージドのサービスとして利用するコントロールプレーンが、EKSです。
OSSであるKubernetesを使ってAWSのデータプレーンを操作するため、扱いにはKubernetesに対する学習が必要な反面、プロビジョニングやトラブルシューティングに関するナレッジもあり、AWSのみならずオンプレミス、Microsoft(AKS)、Google(GKE)等他社のマネージドKubernetesサービスに対する理解も同時に得られる事ができます。
■Fargateとは
Fargateは現在ではECS、EKSどちらからでも利用できるデータプレーンで、主に次のような特性を持っています。
- コンテナインスタンスについて考える必要が無くなるため、サーバーリソースの管理(インスタンスに関するスケーリングやセキュリティ対応)コストが無くなる(実際はユーザーの管理できない所でAWSがEC2インスタンスをプロビジョニングしている)
- 課金はリソースと起動時間の秒単位で計算される
- GPUやGraviton2(等のARM系CPU)を利用することはできない
聞き慣れない時はEC2とFargateの違いに戸惑うかもしれませんが、実際はAWS上が良い感じにリソースを割り当ててくれるマネージドインスタンスの上にコンテナが乗っかっている、と考えると良いです。
次回は、各サービスのメリットやデメリットについてお伝えします!