AWSコラム

AWSエンジニアのためのブログメディア

AWS Fargate とは?「コンテナ」と「仮想マシン」の違い|AWS上のコンテナ関連のサービス

2021年03月23日

「AWS Fargate」とは?


「AWS Fargate」とは、「Dockerコンテナ」を稼働させるための環境(※「データプレーン」と呼ばれますが、詳細は後述します)を提供するAWSサービスです。

AWSのコンテナに関するサービスには、「AWS Fargate」以外にも、「Amazon ECS」、「Amazon EKS」等があります。

最初に、AWS上の「コンテナ技術」に関して解説していきます。

「コンテナ」とは?

「コンテナ」とは、リソースが独立しているOS上のプロセスです。

ここでの「リソース」とは、「CPU」、「メモリ」、「ファイルシステム」や「プロセス空間」等を指します。

「コンテナ」は、「1つのOS」上で、複数のリソースを独立した状態のまま稼働させる実行環境を提供しています。

「コンテナ」と「仮想マシン」の違いとは?

「コンテナ」に似ている技術に「仮想マシン」があります。

「コンテナ」と「仮想マシン」の違いとは、OSに関するリソースの管理方法です。

「仮想マシン」とは、単一のサーバー上で複数のOSを稼働させる技術です。多種類のOSを稼働させられる反面、OSに関するリソースを重複して消費してしまうという問題があります。

「コンテナ」は、単一のOS上で複数の実行環境を提供するため、OSに関するリソースが節約できる点が異なります。

「コンテナ」のメリット

「コンテナ」のメリットとは、サーバーのリソースを効率的に使用でき、オーバーヘッドが少ないことです。

アプリケーションを少ないリソース消費で起動できるため、起動や停止が高速で行えます。そして、1個のコンテナイメージから複数のコンテナを起動できるため、必要な数だけ起動や停止が可能という「スケーラビリティ」にも優れています。

またアプリケーションのビルドからデプロイまでの開発工程に組み込みやすい技術でもあります。

「Docker」とは?

「Docker」とは、コンテナ技術の事実上の標準技術(デファクトスタンダード)です。

dotCloud社(現「Dokcer社」)が開発し、2013年にオープンソースとして公開されました。現在は、OCI(Open Container Initiative)で仕様を作成しています。

実行環境として「Dockerエンジン」をLinuxやWindowsにインストールし、「Dockerコンテナ」を起動して利用します。

AWS上のコンテナ関連のサービスについて

「AWS Fargate」を理解する上で必要となる、コンテナ関連のAWSサービスについても理解しておきましょう。

AWS上のコンテナ関連サービスは、「データプレーン」と「コントロールプレーン」の2種類に分けられます。

それぞれについて解説していきます。

「データプレーン」とは?

「データプレーン(「実行基盤」とも呼ばれます)」とは、コンテナが稼働する実行環境、もしくはサーバーインスタンスそのものです。

AWS上で「データプレーン」を提供しているのは、「AWS Fargate」と「Amazon EC2」になります。

つまり、「AWS Fargate」と「Amazon EC2」の両方とも「データプレーン」として利用できますが、「AWS Fargate」の方はDockerコンテナの稼働に特化しています。

「コントロールプレーン」とは?

「コントロールプレーン(「オーケストレーション」とも呼ばれます)」とは、Dockerコンテナの稼働や停止等の運用を管理するサービスです。

この運用には、コンテナの配置、デプロイ時のコンテナ入れ替えや仮想ネットワークの提供等があります。

AWS上では、「Amazon ECS」と「Amazon EKS」がコントロールプレーンに該当しています。他の同様の技術として、オープンソースの「Kubernetes」もあります。

「AWS Fargate」の概要


「AWS Fargate」の概要について、その前段となる「Amazon ECS」について解説しながら、「AWS Fargate」のメリットや主な機能について解説していきます。

なおDockerコンテナを稼働させるためには、「データプレーン(実行基盤)」と「コントロールプレーン(オーケストレーション)」の両方が必要になります。

「Amazon ECS」とは?

「Amazon ECS(Elastic Container Service)」とは、AWS上のコンテナに関するコントロールプレーン(オーケストレーション)サービスです。

つまり、AWSでDockerコンテナを管理してくれるサービス で、他のAWSサービスとスムーズな連携が可能なのが特徴です。

データプレーンには、「AWS Fargate 」と「Amazon EC2」の両方に対応しています。

データプレーン選択時の課題

データプレーン選択時の課題として、「Amazon EC2」のシステム管理作業が必要になります。

このシステム管理作業自体は付加価値を生まないので、アプリケーションの開発等のコア業務にリソースを割きたいという要望が出てきます。

具体的な作業内容としては、OSの更新、脆弱性対応のパッチ当て、「Amazon EC2」インスタンス上のエージェント類の更新、インスタンスのスケーリング等があります。

データプレーンとしての「AWS Fargate」

データプレーンとしての「AWS Fargate」は、上記のような課題を解決するために開発されました。

つまり、「Amazon EC2」インスタンスのシステム管理作業が不要になり、結果的に「サーバーレス」でコンテナを実行することが可能になりました。

料金設定にも工夫があり、「Amazon EC2」のようにインスタンス自体には課金されず、使用したリソースに対してのみ秒単位で課金されるのでコスト削減につながります。

「AWS Fargate」のメリット(その1)

「AWS Fargate」のメリットの一つは、「Amazon EC2」インスタンスの「クラスタ管理」が不要になり、必要なコンテナの条件を選択するだけで実行できる点です。

ここでの「クラスタ管理」とは、システム規模に応じたリソースの見積やインスタンスタイプの選定、総インスタンスの制御等のことです。

「AWS Fargate」のメリット(その2)

「AWS Fargate」の次のメリットとして、負荷に応じたオートスケール機能をキャパシティの考慮不要で利用できる点です。

オートスケール機能の利用には、本来であればキャパシティの制御を伴いますが、AWSというクラウド環境である利点を活かして、これらの検討が不要となっています。

「AWS Fargate」のメリット(その3)

「AWS Fargate」のその他のメリットとして、サーバー等のシステム管理が不要となる、いわゆる「マネージド型」のサービスである点です。

一般的には、仮想マシン運用中に、OSやミドルウェアのバージョンアップ、セキュリティパッチ当てが必要です。

「AWS Fargate」側でコンテナを稼働させるために必要なシステム管理を行ってくれるため、アプリケーションの開発やデプロイに集中することができます。

「AWS Fargate」の料金体系について

「AWS Fargate」の料金体系は、柔軟な設定の選択肢(50パターン)から選択することで、コスト効率の高い、最適化された状態に設定できます。

時間単価で単純に比較した場合は、「Amazon EC2」の方が低額に見えますが、この最適化が可能であることにより、結果的に「Amazon EC2」よりもコストを抑制することが可能です。

「AWS Fargate」の学習方法について

「AWS Fargate」の学習方法としては、AWS公式サイトで提供されている「チュートリアル」が参考になります。

他にも、「TECH PLAY」や「Connpass」といったIT勉強会やセミナーを紹介しているサイトで、AWSに関するものも多数開催されています。

これらの学習サイトを上手く活用することで、「AWS Fargate」に関するスキルを身に着けていきましょう。


AWS分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)