サイトアイコン 協栄情報ブログ

Amazon Elastic Container Service(ECS)について調べました


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

業務の中でECSの話が度々上がり、改めて理解を深めたくまとめます。
恥ずかしながら筆者のECS知識としては、コンテナに関するサービスでForgateと組み合わせると管理コストが下げられるくらいの知識しかありませんでした。。

■ECSとは何かをAWS公式ドキュメントから見ていきます

コンテナ化されたアプリケーションを簡単にデプロイ、管理、スケーリングできる、完全マネージド型のコンテナオーケストレーションサービスです。
フルマネージドサービスである Amazon ECS には、AWS の構成と運用に関するベストプラクティスが組み込まれています。
Amazon Elastic Container Registry や Docker などの AWS とサードパーティーツールの両方に統合されています。
この統合により、チームは環境ではなくアプリケーションの構築に集中しやすくなります。コントロールプレーンの複雑な管理は必要なく、クラウドの AWS リージョン 間またはオンプレミスで、コンテナワークロードを実行およびスケーリングできます。
引用:https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html
 
なるほど。。それぞれの単語の意味を理解できないと理解を深められなそうです。

■ECSの構成要素

1.クラスター :コンテナを配置する複数のEC2やForgate、外部インスタンス(オンプレ)で構成される要素
2.サービス :クラスター内で実行中のタスクを管理する
3.タスク定義 :タスクを構成するコンテナ群の定義 ※タスク内には複数のコンテナを起動させることが可能
4.タスク :タスク定義に基づいて起動するコンテナの集まり
 

■コンテナとは

アプリケーションとその実行環境を1つにまとめあげる技術のこと。らしい。。
そろそろ何を言っているのか分からなくなってきましたね。
イラストを交えながら説明していきます。
 

物流業界におけるコンテナ

まずはコンテナのイメージを持てるように、物流業界で使われているコンテナ(箱)について知ることが理解の助けになるそうなので調べてみます。
物流業界では貨物の大きさや形(規格)が統一されていない物をコンテナに格納し積み上げ・積み下ろしをすることで持ち運びやすいようにしているそうです。
上記内容を頭の片隅に置いて下段に記載の内容を読み進んでみてください。きっとさきほどよりイメージし易くなるはずです。

物理基盤・仮想化技術・コンテナの違い

コンテナも物流業界と同じく規格を統一し、持ち運びし易くするために生まれた技術で、アプリの実行環境を1つにまとめることができます。
比較しながらコンテナについて解説した方が理解し易いと思うので、物理基盤の特徴から解説していきます。
 

1. 物理基盤(イメージ:一軒家)

物理サーバの上に直接LinuxやWindowsといったOSそしてミドルウェア、アプリケーションをインストールするのが一般的です。
メリット・デメリットは以下の通りとなり、物理基盤での1番のデメリットはCPUやメモリ等のリソースを集約しないことで無駄が生まれてしまうことです。このデメリットを解消するために、仮想化技術が登場しました。
 

2. 仮想化技術(イメージ:アパート)

物理基盤(イメージ:一軒家)と違い土地や建物は共有してますが、各部屋毎に個別で契約が発生しているイメージです。
仮想化技術にはホストOS型とハイパーバイザー型がありそれぞれゲストOSが必要となります。
メリット・デメリットは以下の通りとなり、仮想マシンは各々でゲストOSを起動する必要があり、メモリ消費に無駄があります。
ここで登場したのがコンテナです。

3. コンテナ(イメージ:シェアハウス)

1・2のイメージと比較すると土地や建物だけではなく、生活用品(家電など)も共有しているイメージです。
コンテナにはゲストOSが含まれておらず、ホストOSを共有しているので2のメモリ消費の無駄という観点を克服しています。
コンテナ内には以下のものが含まれています。

これらのまとまりをイメージと呼び、このイメージからコンテナが各々独立して実行されます。
そのため、1つのホストOS上で他アプリケーションとの競合を意識することなくアプリケーションを実行できます。
メリット・デメリットは以下の通りとなり、前述した物流業界のコンテナと同じくホスト OS と同系列でカーネルに互換性のある OS(Linux系でいうと(CentOS・Ubuntu))であれば他サーバ・環境に持ち運びがし易くなります。
※コンテナ内にゲストOSが含まれず、イメージを持ち運ぶだけなので物理基盤・仮想化技術と比べ管理が楽そうですね。

 

■もう一度冒頭の公式ドキュメントを読み直してみます

「コンテナ化されたアプリケーションを簡単にデプロイ、管理、スケーリングできる、完全マネージド型のコンテナオーケストレーションサービスです。」※AWS公式ドキュメントより一部抜粋

 
AWSのコンテナを動かす実行環境のサービスかと思っていましたが、どうやら違うようです。
コンテナをオーケストレーションするサービスみたいですね。
ECSはコンテナの管理に使用し、実際にコンテナを実行する環境には、Amazon EC2Fargateといった別のサービスを使用するみたいです。
では、オーケストレーションについて調べていきます。

 

■オーケストレーションとは

コンテナを管理するサービスのことを、オーケストレーターといい、オーケストレーターでコンテナ管理することをオーケストレーション(自動化)というそうです。
みんな大好き自動化ですね!
 

■コンテナオーケストレーターの目的

コンテナオーケストレーターを使う目的は、複数ホストで起動するコンテナを一元管理するためです。

 

■まとめ

社内勉強会でECSについて説明しようと考えていましたが、コンテナを理解するところからになりました。
何事も一歩ずつですね。次回は実際にECSを利用した構築をしようと思います。

モバイルバージョンを終了