AWS Fargateを使いこなそう!〜AWS Fargateの概要・使い方について〜
AWS Fargateとは?
AWS Fargateとは、一言でいえば「ホストの管理なしにコンテナを動かすためのサービス」のことを言います。「※コンテナ」を動かすためのサービスとして、Amazon ECSというサービスもありますが、コンテナ実行環境(ホストマシン)の管理・運用は必要になります。しかしAWS Fargateでは、ホストマシンを意識する事なく、コンテナを実行する事が可能です。また、既にAmazon ECS on EC”で動作しているサービスについては、起動タイプを切り替えるだけでほぼ変わりなくAWS Fargeteに移行する事も出来ます。
※[補足] そもそも「コンテナ」ってなに?
アプリケーションを構成するコンポーネントは4つあり、其々「ランタイム/エンジン」「アプリケーションコード」「依存ライブラリ/パッケージ」「設定」になります。本番、各環境でソフトウェアのバージョンが違って問題が起きる事があります。そういった問題を「コンテナ」で解決します。ランタイム/エンジン・アプリケーションコード・依存ライブラリ/パッケージを全てコンテナの中にパッケージングします。そして、このパッケージをそのままデリバリーする事で、開発環境から本番環境まで同一の環境(コンテナ)でアプリケーションを動作させることが可能となります。
「ホストマシンの管理・運用が不要」のメリットとは?
話を戻して、先程AWS Fargateは「ホストマシンを意識する事なく、コンテナを実行する事が可能」という事がメリットだとご紹介しました。そこで次は具体的にどういうメリットがあるのかをブレイクダウンしていきます。
◆クラスタの管理が不要
通常、EC2などの仮想マシンでクラスタを構築し運用する際に色々な事を考慮する必要があります。例えば、全体でどの程度のリソースが必要かの見積もり、インスタンスタイプの選定、必要な総台数の計算などがあります。しかしAWS Fargateでは、こういった事を意識する必要がなく、コンテナを実行する事が出来ます。ユーザは、コンテナ実行時に必要なCPUやメモリの組み合わせをするだけでよく、リソースの調達は Fargate プラットフォーム側で行われます。
◆シームレスなスケーリング
コンテナを管理するクラスタ上で起動している場合、クラスタのキャパシティに気を配る必要があります。これは、コンテナをスケールする際に実行に必要なリソースが無ければ、コンテナを新規に実行出来ないからです。その為、クラスタ全体のキャパシティ状況を常にモニタリングし、コンテナと合わせてスケールする必要があります。AWS Fargateを利用する事で、上記のような事を考慮する事なく、コンテナをスケーリングする事が出来ます。
◆ホストマシンの管理(セキュリティ等)が不要
通常、EC2などの仮想マシンを運用する際は、OSやミドルウェアのバージョンアップやセキュリティパッチの適用などをする必要があります。しかし、 Fargate プラットフォームの管理運用はAWSにて行われる為、ユーザーはコンテナについてのみ検討すればよく、アプリケーションの構築と運用に注力する事が出来ます。
AWS Fargate上のコンテナはどのように動作するのか?
AWS Fargate上のコンテナの動きとして、4点を意識しておく必要があります。
◆Container definition(コンテナの定義)
これは実際に動かすコンテナの定義を表すものです。どのコンテナイメージを使うのか、コンテナにどの程度のCPUとメモリを割り当てるのかを設定します。下記のTask definitionの中に複数のコンテナを定義する事が出来ます。サイドカーコンテナ的な使い方も可能です。
◆Task definition(タスクの定義)
タスク定義では、コンテナ定義をどう管理するかを設定します。どのコンテナを同時に起動するか、どのネットワークで動かすかなどを指定します。
◆Service(サービス)
サービスでは、タスク定義を何個実行して維持するかを設定します。必要なタスク、セキュリティグループ、ロードバランサの種類などを設定出来ます。
◆Cluster(クラスター)
クラスターでは、コンテナで使用するVPC、コンテナで使用するサブネットを設定します。
AWS Fargateの使い方
では次は、AWS Fargateを利用してサービスを構築していく方法についてご紹介していきます。初めての方は、まずECSのチュートリアルを動かし、後にコンテナを入替えるなどのアプローチの方がスムーズに進められます。
マネジメントコンソールから
マネジメントコントロールからチュートリアル を開始する事が一番簡単な方法です。ログインしたらAWS Fargateのチュートリアルの開始画面にアクセスします。
ecs-cil composeを利用する
「チュートリアル:Amazon ECS CLIを使用してFargateタスクのクラスターを作成する」を進める事で、”docker-compose.yml”を元にAWS Fargate上でコンテナを動かす事が出来ます。AWSは”ecs-cil”というコマンドラインツールを提供しており、サブコマンドに”ecs-cli compose”というものがあります。これは、”docker-compose”のようにAmazon ECS上でサービスを実行する事が可能です。ただし以下の点は注意が必要です。
※Amazon ECS用の設定を”ecs-params.yml”に書く必要があるなど、”docker-compose”と一部使用が異なる事があります。
AWS CLIを利用する
AWS CLIに慣れている人は、AWS CLIからAWS Fargateを利用する事が出来ます。ただし、パラメータの引き渡しにjsonファイルの記述が必要です。
まとめ
AWS Fargateの概要及び構築方法についてご紹介しました。AWS Fargateはホストマシンの管理・運用が不要であり、アプリケーションの構築に時間をかける事が出来ます。これはAWSを利用されている方にとって、使い方によっては時間の有効活用が可能な為、とても頼もしいサービスではないでしょうか。是非この機会に、少しでもAWS Fargateについて興味を持って頂けたら嬉しいです。