本記事では、まず大前提としてコンテナとは何かの内容に軽く触れたあと、実際にAWSが提供しているコンテナサービスを図など用いながら紹介していければと思います。
コンテナとは?
まず初めにコンテナというサービスについて簡単に紹介させていただきます。
コンテナとは、アプリの動作環境を仮想的に構築する技術の1つになっており、同一OS上で、データやアプリを隔離できるサービスになります。
コンテナを利用するメリットは様々ですが、実際に利用して私が感じたメリットは下記になります。
- 起動が早い
- オーバーヘッドが少なく、リソースを無駄なく使用できる
- ハードウェアを意識せずにアプリを実行できる
AWSコンテナサービスについて
AWSのコンテナサービスは大きく分けて4つに分類されます。
種別 | サービス名 | 説明 |
---|---|---|
コンテナをサポートするツールとサービス |
ECR Amazon Elastic Container RegistryDocker |
イメージを保存するマネージドなプライベートレジストリ |
コンテナオーケストレーション |
ECS Amazon Elastic Container Service |
AWS独自のマネージドコンテナオーケストレーションサービス |
コンテナオーケストレーション |
EKS Amazon Elastic Kubernetes Service |
コンテナオーケストレーションのデファクトスタンダードであるKubernetesをマネージド化 |
エンタープライズ規模のコンテナ管理 |
ROSA Red Hat OpenShift Service on AWS |
AWS上で利用できるフルマネージドなOpenShifサービス |
ECR(Amazon Elastic Container Registry)
ECRは、イメージを保存するマネージドなプライベートレジストリです。ECRはフルマネージド型のサービスのため、運用やスケーリングが不要です。
AWSにおける権限設定を行うサービスであるIAMを使ってアクセスを制御することができ、組織全体または世界中の誰とでもイメージを共有できるという特徴を持っています。
また、ECRは、後述のコンテナサービスであるECS・EKSやAWS Lambdaと統合されており、ワークフローの簡略化が可能です。
加えて、AWS Marketplaceで購入したDockerコンテナイメージの保存・管理・デプロイも可能なプライベートレジストリとなっており、コンテナ作成のサポートをしてくれます。
ECS(Amazon Elastic Container Service)
ECSは、AWS独自のマネージドコンテナオーケストレーションサービスで、Kubernetesとよく比較されます。ECSのクラスターは、AWSによって管理・運用されています。
ECSの最小実行単位は、タスクと呼ばれ、KubernetesでいうところのPodに相当します。
マニュフェストに相当するタスク定義などもありますが、少しずつKubernetesと異なる部分があります。
例えば、ECSにはサービスという要素が存在しています。例えば、タスクの数を3にすると、タスクの数を常時3つに保ってくれるという機能があります。
他にも、Kubernetesと比較して学習コストが低いことや、メンテナンスコストが低いといったメリットがあります。
EKS(Amazon Elastic Kubernetes Service)
EKSは、オーケストレーションシステムのデファクトスタンダードであるKubernetesをマネージド化したものになります。
Kubernetesはマスターノードとワーカーノードという2つのノードから構成されています。
一般的にはそれぞれのノードを管理する必要がありますが、EKSを用いることで、マスターノードをマネージド化し、管理をAWSに任せることができます。
前段のECSも同じコントロールプレーンサービスですが、EKSはオンプレのKubernetes環境をそのまま移行できるという部分がECSとの大きな違いになります。
EKSではクラスター外で必要なリソースをマニュフェストを使用し定義できるため、マニュフェストを見れば設定を全て確認することができます。
一方で、ECSではそれが行えません。ECSではCloudformationを利用する、もしくは手動作成を行う必要があります。
設定できるサービス量なども違うため、そこは用途に応じて使い分けていく必要があります。
ROSA(Red Hat OpenShift Service on AWS)
ROSAとは、AWS上で利用できるフルマネージドなOpenShifサービスです、
RedHatが運営を行い、AWSと共同でサポートされる形で、フルマネージドのRed Hat OpenShiftが提供されるのが特徴です。
ROSAを使うとAWSでのRed Hat OpenShiftクラスターの作成と運用が簡単になります。
ROSAでは、ネットワーク管理、クラスターロギング、クラスターのバージョン管理およびキャパシティー管理をRed HatとAWSが責任を分担し管理します。
一方、デプロイされたアプリケーション、ワークロード、およびデータの管理と保護については、利用者が管理する必要があります。
詳しい情報は以下URLを参照ください。
まとめ
AWSには様々なコンテナサービスがあります。
コンテナを学習するのが大変、難しい、何をしたらよいのかわからないという方はたくさんいらっしゃるかと思います。
たしかに最初からコンテナを自主学習しようとするとかなり学習コストが高く大変です。
そんな時に、まずはAWSによってマネージドされているコンテナサービスを使うことで、一からコンテナを勉強するよりも学習コストを低く学ぶことができます。
かつ、実際にコンテナに触れられることができるという点において一石二鳥かと思います。
ぜひ、本記事を参考に、AWSのコンテナサービスに触れてみてください。