はじめに
本記事では、Amazon ECSについて解説したいと思います!
Amazon ECSは複雑そうで、苦手意識があるんだよね・・・
ただ、ご安心ください!
本記事ではわかりやすい例えに置き換えて、初心者の方でも理解しやすいように解説しています!
みなさんも一緒にAmazon ECSの概要を理解しましょう!
Amazon ECS(Amazon Elastic Container Service )とは?
ざっくり解説すると…
・フルマネージド型のコンテナオーケストレーションサービス
・Dockerコンテナを簡単に実行、停止、管理することができる
というようなサービスです!
コンテナとはなにか?
コンテナとは、ホストOSの上に作成された論理的な領域で、サーバーのように動作する仮想環境となります。
これまでの一般的な仮想化では、アプリケーションを動作させるには、アプリケーション本体やOSの他にミドルウェア、ライブラリなど必要な要素が複数ありました。
しかし、コンテナはそれらの要素をパッケージングして、1つにまとめた技術と考えれば分かりやすいかもしれません。
船に乗せるコンテナをご存知でしょうか?
船や列車に荷物を乗せて行き来するための鉄の箱ですが、ITの世界の「コンテナ」も中にアプリケーションやWebサイトを乗せたまま自由に場所を移動でき、オンプレミスやクラウドなどの環境を問わずに実行することができます。
一般的な仮想化は、ゲストOSレベルからの個別構築が必要です。
そのため、ディスク、CPU、メモリなどの面でハイスペックなリソースが必要となり、結果的に高額のコストが発生します。
- ホストのカーネルを直接利用するため処理のオーバーヘッドが少なく、起動時間が高速
- 特定アプリケーションの実行に特化しており、不要なリソースを占有することなく稼働が安定している
- 環境構築に必要な情報をコードとして管理できるため、同一環境を簡単に構築できる
コンテナサービスとしてもっとも有名なのは、Docker社が提供す「Docker」(ドッカー)です。
マルチOSに対応したオープンソースのコンテナサービスを広範に提供しています。
公式サイト:https://www.docker.com/
Amazon ECSの構成要素
AmazonECSは、Dockerコンテナを簡単に実行、停止、管理することができるサービスと説明しました。
では、どのような要素でその役割を果たしているのでしょうか。
AmazonECSは、主に以下のような要素で構成されています。
①タスク定義:タスクをどのように実行するのかを定義するテンプレート
②タスク:タスク定義に基づいて起動するコンテナの集まり
③サービス:実行されるタスクを管理する機能
④クラスター:タスクを実行するための実行基盤
全体像はこのような形です。
まずはこのような要素があるんだ〜くらいに全体像を掴んでいただければ大丈夫です!
細かい説明については、これからひとつずつ行います。
①タスク定義
タスク定義とは、タスクをどのように実行するのかを定義するテンプレートです。
ここで定義された内容に基づき、後述するタスクが実行されます。
例えば、会社の規約のようなものをイメージしてもらうと分かりやすいかもしれません。
ここで言うタスクとは、会社に所属する各部門のことです。
各部門は、会社の規約に従いながら、業務を遂行しますよね!
具体的なタスク定義の内容には、以下のようなものがあります。
- 使用する Dockerイメージ
- CPU とメモリの量
- 起動タイプ(Fargate・EC2・外部)
- タスクで使用される IAMロール など
なお、一度作成したタスク定義は後から上書きで編集することはできません。
そのため、新しいタスクを定義してバージョンアップをさせます(=リビジョン番号の発行)
②タスク
タスクとは、タスク定義に基づいて起動するコンテナの集まりです。
1つのタスクは1つ以上のコンテナで構成されています。
タスク定義との関係性と合わせて、イメージしやすいようにイラストにしてみます。
各チームは、会社に所属をしているので、会社の規約に従いますよね!
③サービス
サービスとは、実行されるタスクを管理する機能です。
具体的な機能には、以下のようなものがあります
- 必要タスク数の設定
- ロードバランサー設定(何番ポートの設定か)
- デプロイ設定(配置設定)
- IAM設定 など
会社で例えると、管理者のような役割です。
イメージしやすいようにイラストにしてみます。
営業部には、各チームをとりまとめる部長がいますよね!
④クラスター
タスクを実行するための、コンテナ実行基盤です。
例えば、クラスターを分けることで、本番環境や開発環境を論理的に分けることができます。
各営業部や社員が働くためには、そもそも基盤となる会社が必要ですよね!
最後に全体の構成図をイラスト化してみます!
構成要素について、ざっくり理解できましたでしょうか?
身近にあるもので例えると頭に入りやすくなるかもしれませんね!
ECSの起動タイプ
ECSではコンテナを動かすための実行環境(データプレーン)として、以下の2つのタイプが用意されています。
① Fargate
② ECS on EC2
ひとつずつ、詳細を解説していきます!
Fargate
コンテナ向けのサーバーレスコンピューティングエンジンです。
AWSが実行環境の保守運用管理を行うので、バージョンアップやセキュリティ対策などを気にしなくていいです。
つまりサーバーの管理から開放されることが最大のメリットとなります。
ユーザーは、アプリケーション開発や構築に集中して取り組むことが出来るようになります。
ECS on EC2
EC2インスタンスを使った仮想サーバ上でコンテナを起動するタイプです。
ホストマシン上でコンテナを起動するため、コンテナ環境のOSやDocker Engineなど、ホストマシンの管理や運用が必要です。
また、ホストマシンの選択や起動するコンテナの数なども管理する必要があります。
- 工数がかかる場合 :EC2インスタンスを使用。管理の自由度が高く、細かい管理が可能になる。
- 工数がかからない場合 :Fargateを使用。サーバーを管理する必要がない。
まとめ
いかがでしたでしょうか?
本記事では、Amazon ECSの概要と構成要素について解説しました!
要件にあわせて、上手に活用していきましょう!