AWS Fargateとは?Amazon ECSとの関係性やメリット・デメリットを解説

企業情報システムのITインフラストラクチャはオンプレミスからクラウドへと移行しています。それにともない、開発環境や本番環境のサーバーやネットワーク管理もユーザーの手から離れ、クラウドサービス事業者が管轄するようになってきました。また、従来のクラウドサービス利用ではクラウド上にユーザーが仮想マシンを構築するスタイルが一般的でしたが、近年のコンテナ利用に見られるようにクラウド上のホストマシンすら意識させないスタイルになりつつあります。そこで今回は、コンテナの実行環境であるAWS Fargateとは何なのか、Amazon ECSとの関係性を交えながらAWS Fargateを利用するメリット・デメリット、そしてユースケースについて解説します。

AWS Fargateとは

AWS Fargateとは、Amazon Elastic Container Service (ECS) と Amazon Elastic Kubernetes Service (EKS) で動作する、ホストマシンを意識せずにコンテナを実行できる環境です。AWS Fargateを利用すれば、コンテナとコンテナの実行環境の2重管理が不要になります。

いわゆる、コンテナ向けのサーバーレスコンピューティングです。

具体的には、EC2インスタンス(コンテナを実行するためのサーバー環境)やそのスケーリング、インスタンスの集合体であるクラスターを管理する必要がなくなり、管理の効率化を図れます。

AWS Fargateを理解するために必要な主な知識

ここで、AWS Fargateを理解するためにいくつかの必要な用語や知識をおさらいしておきましょう。

コンテナとは

コンテナとは、必要なコンポーネントをパッケージ化したものです。

例えば、開発に必要なランタイムやライブラリなどの依存関係や整合性を、サーバーごとに構築・管理するのは手間がかかります。このような問題を解決するために利用されるのがコンテナで、開発環境や本番環境などにコンテナを使えば、同じ環境をすぐに構築でき、アプリケーションを動作させることができます。

Dockerとは

Dockerとは、コンテナを実行するための機能です。

Docker Engineが動いている環境であれば、OSなどに依存することなくDockerコンテナを実行できます。

Amazon ECSとは

Amazon ECSとは「Amazon Elastic Container Service」のことで、Amazon EC2インスタンスを用いたDockerコンテナを管理するサービスです。

Amazon ECSを利用すれば、マルチホストで構成されたクラスター環境全体のホストOSを管理し、複数のコンテナを統合して管理できます。これをコンテナオーケストレーションと呼びます。

Amazon ECSについては「スケーラブルで高速なコンテナ管理サービス「Amazon ECS」の主な機能と使い方」や「コンテナ管理サービス「Amazon ECS」とは?実際に使用してみた」のコラムでも詳しく解説していますので、ぜひ参考にしてください。

なお、AWS FargateはAmazon EKSでも動作します。AWS ECSとAWS EKSの概要については「AWSにおけるクラウドネイティブ」でも触れておりますのでご参照ください。

AWS FargateとAmazon ECSの違いと関係性

AWS FargateとAmazon ECSの違いがイメージできないという方も多いかもしれません。双方は、連携してコンテナを起動する関係性にあります。簡単にいえば、Amazon ECSでコンテナを実行する方法としてAWS Fargateを利用するという選択肢があるということです。

実際に、Amazon ECSがコンテナを起動する方法としては「EC2」と「Fargate」の2つの起動タイプがあります。これら2つの起動タイプを比較してみると分かりやすいでしょう。

例えば、Amazon ECSのEC2でコンテナを実行した場合には、ホストマシン上でコンテナを起動するため、コンテナ環境のOSやDocker Engineなど、ホストマシンの管理や運用が必要です。また、ホストマシンの選択や起動するコンテナの数なども管理する必要があります。

しかし、EC2の替わりにAWS Fargateを利用してコンテナを起動すれば、ホストマシンを意識せずにコンテナを実行することが可能です。

AWS Fargateを利用するメリット

それでは、AWS Fargateを利用するメリットを見ていきましょう。

ホストマシンのOSやミドルウェアなどの構築が必要ない

AWS Fargateを利用することで、コンテナ実行環境のホストマシンなどの管理が必要なくなるというメリットがあります。つまり、EC2インスタンスのOSやDocker Agent、ミドルウェアなどの構築や設定操作の手間が省けるということです。

これにより、インフラ専任の技術者がいなくても、手軽に環境構築とインフラ管理を行えます。

インスタンスタイプやクラスター管理が不要

AWS Fargateは、EC2起動タイプでのコンテナ実行と比べて、EC2インスタンスやクラスターの管理をしなくてよいというメリットもあります。

Amazon ECSでAWS Fargateを利用してコンテナを実行するときに意識するのは、実行時に必要なCPUやメモリの組み合わせのみです。

オートスケーリング

オンプレミスで環境構築をした場合において、途中で利用環境を拡張・縮小などが必要な時にはリソースの整合性やインフラの稼働状況を確認しながら、慎重に行わなければなりません。この作業は、工数がかかるだけでなくリスクも伴うため、担当者に負担がかかりやすいものです。

しかし、AWS Fargateならば、例えばコンテナ数をオートスケールできるメリットがあるのです。

AWS Fargateを利用するデメリット

次に、AWS Fargateを利用するデメリットも確認しておきましょう。

パブリックIPの固定割り当てができない

AWS Fargateでは、EC2インスタンスへのIPが自動割り当てのため、パブリックIPアドレスの固定割り当てができません。これにより、外部アクセスのためのIP許可や、API運用時に不便を感じる場合があります。

EC2インスタンスにEIPという固定IPアドレスを設定できますが、そのためにはNATゲートウェイ設定などのひと手間が必要であることもデメリットだといえるでしょう。

sshやdocker execが使えない

AWS Fargateでは、sshやdocker execでのコンテナアクセスをサポートしていません。これは、EC2を意識しない環境として、セキュアなサービス提供しているためです。

しかし、インフラのトラブル時に素早くコンテナに対してシェルで入れないという環境を不便だと感じる担当者も多いかもしれません。

AWS Fargateのユースケース

AWS Fargateのユースケースとしては、アプリケーション開発において発生するインフラ運用工数の解決があります。少人数のスタートアップ企業などでインフラ担当がいなくても、アプリケーションの開発に専念できるのです。

例えば、オンプレミスや仮想マシンで開発環境と本番環境を作成するためには次のような手間がかかります。

オンプレミスの場合は物理サーバー選定やネットワーク構築に始まり、スーパーバイザーのインストールから仮想マシンへのOSやミドルウェアのインストールなどの作業が必要です。また、EC2を利用した場合でも、仮想マシンのリソース管理などは行わなければなりません。

そこで、Amazon ECSでAWS Fargateの起動タイプを選択することで、インフラストラクチャの設計や設定の手間を省き、すぐにアプリケーション開発に取りかかれます。開発環境で利用したコンテナをそのまま本番環境へ移行できるため、インフラ環境における不具合を最小限に抑えることも可能です。

また、AWS Fargateはインフラ専任担当者がいないスタートアップ企業だけではなく、大規模なオンラインゲームのプラットフォームとしても利用されています。将来的なゲームプレイの需要拡大を視野に入れ、スケーリングが容易にできる柔軟なサービスとしてAWS Fargateが採用されました。

AWS Fargate料金体系

AWS Fargateの料金は、コンテナのアプリケーションで利用したvCPUとメモリリソースに対して課金されます。従量課金なので、基本的に固定料金は発生しません。料金が発生するタイミングは、コンテナイメージのダウンロード開始からタスクの終了まで、リソースを使用したときです。

なお、料金の詳細についてはリージョンなどにより異なるため、最新の情報は公式サイトで確認してください。

AWS Fargate の料金別ウィンドウで開きます(AWS)

管理工数削減にAWS Fargateを検討しよう

OSやミドルウェアを含めたホストマシンを意識せずに運用できるAWS Fargateは、Amazon ECSと連携してコンテナを実行できる手段の一つです。EC2のインスタンスやクラスター管理が不要ですので、インフラ環境の専任担当者がいない少人数でのアプリケーション開発現場などでも、効率的に開発工程を開始できます。また、比較的スケーリングの多い環境も、オートスケーリングで対応できるため、大規模なオンラインインフラ環境にも採用されるなどといった例もあります。このように、ホストマシンを意識しないでコンテナを実行できるという特徴はさまざまなサービスで活用されはじめています。

開発や運用の管理工数削減をお考えの場合にはAWS Fargateの利用を検討してみてはいかがでしょうか?

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る