よくわかるAWS・クラウド

  • AWS入門
  • AWS

【AWS入門】AWS Fargate とは、コンテナ管理を容易にするサーバーレスコンピューティング環境サービス

世の中のITシステムは、積極的にクラウドを利用する動きが強まっています。クラウド利用にはさまざまなメリットがありますが、その1つにコンテナがあります。コンテナはコンピューティング仮想化技術のひとつで、最近では開発期間の短縮や、小さな機能をまとめて1つのアプリケーションを構築するマイクロサービスなどの活用が盛んです。ここではAWS Fargateをはじめ、Amazon ECS、Amazon EKSなど、AWSでコンテナを利用できるサービスを紹介します。

クラウドネイティブ環境におけるコンテナとは

コンテナ

AWS Fargateは、コンテナ向けのサーバーレスな実行環境です。コンテナ技術の理解のため、関連するDocker、Kubernetesなどの意味、そしてAWSで利用できるコンテナ関連サービスのAmazon ECSやAmazon EKSとの関係を紹介します。

コンテナとは

コンテナとは、仮想化技術のひとつで、アプリケーションの動作に必要なライブラリ、設定ファイルなどをひとまとめにしたもので、それをホストOSの中で分離して使える技術のことを言います。仮想サーバーのように、仮想化用のソフトウェアをインストールしてゲストOSを用意する環境と異なり、ゲストOSなくアプリケーション実行環境を構築することが可能となるため、リソースの消費が少なく、起動時間も短くなります。

コンテナで動作環境をまとめられるので、環境を軽くでき、また動作環境がまとまっているので、あるクラウド環境から別の環境にコンテナを移動すれば、すぐにアプリケーションを動作できるという可搬性のメリットもあります。

Docker、Kubernetesとは

こうした利便性の高いコンテナを実行できる環境で、現在よく使われているのが2013年に登場したDocker(ドッカー)社の「Docker」です。Dockerは、どんなアプリケーションでも、物理環境でも、仮想化環境でも、クラウド環境でも、さらにはLinuxでもWindowsなど場所を問わずに構築・移動・実行できる環境を提供できます。またDockerは、コンテナを実行できるプラットフォームを提供できるだけでなく、コンテナを1つのイメージファイルにする機能なども持っています。

コンテナの活用が進んでくると、複数の環境でさまざまなコンテナが使われるようになります。2014年、Google社が自社のサービスをコンテナ化しましたが、このとき毎週20億ものコンテナを起動していたといいます。しかし、Docker自体は複数のコンテナを効率良く管理したり、組み合わせたりする機能を持っていません。どのようなコンテナが動作しているのか、停止しているのかを一元的に把握することができないのです。

そこで、これらコンテナの管理を行う必要性から生まれたのが、オープンソースのコンテナオーケストレーションシステム「Kubernetes(クーバネティス)」です。オーケストレーションとは、たくさんある要素を管理する意味で、クラシックのオーケストラのように多様な楽器や演奏を上手にまとめることから来ています。

Kubernetesは、Dockerでコンテナ化されたアプリケーションの、デプロイ、スケーリング、管理を行うために利用します。複数ホストでコンテナを運用する場合でも、ネットワークやストレージなどを連携して管理できるようになります。またコンテナを実行するためのマシンの集団(クラスタ)の管理や運用の自動化もできます。

▼ エンジニアの運用負担を軽減!AWS運用のベストプラクティスもご提案する運用代行サービス!
マンガでわかるAWS運用代行サービス

AWSのコンテナ関連サービス

AWSには、こうしたアプリケーション開発に利便性の高いコンテナを利用できるサービスとして、AWS Fagate、Amazon ECS、Amazon EKSがあります。

AWS Fargate

AWS Fargateは、Amazon EC2インスタンスによるコンテナ実行環境をフルマネージドで自動化するサービスです。コンテナの可用性を自動的にスケール、ロードバランス、最適化することができます。

AWS Fargateを使えば、Amazon EC2インスタンスの運用管理の手間や、時にはセキュリティパッチを当てるといった作業もなく、望めばすぐにアプリケーション開発を始められます。開発が無事に終了すれば、その開発環境はコンテナのまま本番環境に移行できるので、クラスタなどのインフラに起因する問題点を極力抑えることができます。

Amazon ECS

Amazon ECSは、Amazon Elastic Container Serviceの略で、AWS上でコンテナを利用できるサービスです。コンテナオーケストレーション機能もあり、コンテナを実行するためのクラスタの管理や運用の自動化ができます。Amazon ECSを使えば、コンテナを実行できるクラスタのインストール、運用、スケールを行う必要がなくなります。クラスタを構成するマシンは、Amazon EC2インスタンスを使えます。なお、インスタンスの設定や配置はユーザーが行います。

Amazon ECSは、アプリケーションへのトラフィックを自動的に分散できるAmazon ELBや、ブロックストレージが使えるAmazon EBS、IAMロールなど、AWSの他サービスと連携しやすいのも特徴です。

Amazon EKS

Amazon EKSは、Amazon Elastic Kubernetes Serviceの略で、Amazon ECS同様、AWS上でコンテナを利用できるサービスです。ただしコンテナオーケストレーション機能は、オープンソースのKubernetesとほぼ同等の機能が使え、Amazon ECSより細かく、高度なコンテナ運用が行えます。すでにDockerとKubernetesのペアでコンテナを利用しているユーザーは、こちらを使えばAWSでも同じ環境を再現・管理しやすくなります。

Amazon ECSかAmazon EKSかの、どちらを選ぶかは構築したいシステムによりますが、概して、コンテナの数が少なく、シンプルにシステムを構築できるならAmazon ECSを、コンテナ間でも通信したいなど複雑な構成を目指す場合は、Amazon EKSといった傾向があります。

AWS FargateとAmazon ECS、Amazon EKSとの関係

Amazon ECSとAmazon EKSは、どちらもコンテナ実行の環境を用意し(機能に差はありますが)コンテナオーケストレーション機能を有しています。そしてコンテナ実行環境には両方ともAmazon EC2インスタンスが利用できます。AWS Fargateは、このAmazon EC2インスタンスによるコンテナ実行環境を自動化するサービスです。

当社NHNテコラスでは、お客様のAWS活用を支援する「AWS総合支援サービス C-Chorus」から、システム構築、AWS環境最適化のご提案や技術支援をおこなっており、
サービス資料のAWS総合支援サービス C-Chorus では、サービス詳細をはじめ、当社で支援を手掛けたお客様の導入事例もご紹介しています!

AWS Fargateの特徴

コンテナが持つ開発環境や本番環境へのフットワークの良さや、容易に構築できる手軽さを、サーバーレスで享受できるAWS Fargateの、メリット、利用シーン、注意点、料金などを紹介します。

AWS Fargateの利点は、インフラ管理が手軽になること

AWS Fargateのメリットは、なんといってもコンテナ実行環境であるクラスタの管理が容易になることです。細かく言えば、クラスタであるインスタンスのOSやミドルウェアの構築が不要、インスタンスタイプなどの設定や管理も不要になります。自社にインフラ専任の技術者がいなくても、容易にコンテナを利用することができ、効率的にアプリケーションの開発が行えます。

加えてAWS Fargateはフルマネージド型のサービスなので、クラスタのOS、Dockerなどのバージョンアップやセキュリティパッチの適用などもユーザーが気にする必要はありません。AWS Fargateは、コンテナ数をオートスケールできます。このため規模の大きなオンラインゲーム用としても利用されています。オートスケールが可能なら、将来ゲームプレーヤーが増えても容易にスケーリングができるためです。
技術支援・コンサルティングサービス

AWS Fargateの利用シーン

AWS Fargateの、おすすめの利用シーンとしては、以下が想定できます。

・ウェブアプリケーション、API、マイクロサービス

コンテナの高速な構築と、そのまま他のコンテナ環境に移行できる不変性を活用すれば、アプリケーション、API、マイクロサービスアーキテクチャの構築・デプロイを容易におこなえます。AWS Fargateは、コンテナなどコンピューティング・インフラストラクチャを所有し管理するといった手間をなくすことで、アプリケーションの開発や実行に集中できます。

・コンテナワークロードの実行とスケーリング

Amazon ECSもしくはAmazon EKSでAWS Fargateを使えば、アプリケーションによるデータ処理ワークロードを容易にコンテナ化でき、同様に容易にスケールすることも可能です。またAmazon ECSのWindowsコンテナを実行することもできますから、多種多様なワークロードを実行できます。

・AIと機械学習のトレーニングアプリケーションをサポート

AWS Fargateは、機械学習におけるデータの収集、学習、運用といった一連を容易に行えるAmazon SageMakerなどの開発環境を用意することもできます。また機械学習に適したコンテナとしてDeep Learning Containers Imagesもあり、準備も楽に行えます。

AWS FargateへのパブリックIP付与やSSH接続について

AWS Fargateは、Amazon EC2インスタンスへのIP割り当てが自動でおこなわれるため、静的 IP アドレスまたは Elastic IP アドレスを、Amazon ECSのタスク(コンテナを束ねたもの)に直接割り当てることができません。Amazon ECSタスクに静的IPアドレスもしくはElastic IPアドレスを割り当てたいときは、まずAmazon EC2 コンソールからNetwork Load Balancerを作成し、ターゲットグループを作成します。その後、Amazon ECSサービスを作成するときに、サービス定義で先ほど作成したターゲットグループを指定します。

またAWS Fargateでは、sshによるコンテナへの接続を推奨していません。しかし、本番環境で急遽、デバッグしたい場合などは、AWS Fargateでデプロイしたタスク内のコンテナに対し、ECS Exec機能で、アクセスすることができます。対話型のシェルもしくは1つのコマンドを実行することで利用できます。なおExec機能でコンテナに対して利用できるツールと機能は、コンテナ内にインストールされているもののみになります。

AWS Fargateの料金

AWS Fargateは、初期費用が不要で、コンテナ化されたアプリケーションが消費する vCPU、メモリ、ストレージリソースの量に応じて費用が決まります。さらに1年間または3年間に渡って、特定量のコンピューティングで契約するCompute Savings Plansを使えば、使用料金を最大50%削減できます。またAWS側の都合でタスクが終了する可能性があるSpotインスタンスに似た利用法としてFargate Spotがあります。この場合、通常のAWS Fargate料金の最大70%割引で利用することができます。

クラウドネイティブな環境の構築・運用はNHNテコラスにお任せください

コンテナで高速にアプリケーション開発を実施したい場合、AWS Fargateは多少の制限はありますが魅力的なサービスと言えます。ただ、効率的な利用にはノウハウが必要です。

AWSプレミアティア サービスパートナーである当社、NHNテコラスでは、AWS Fargateの活用をサポートする 技術支援・コンサルティングサービス を提供しています。AWSのスペシャリストが、開発に集中できるAWS Fargateの環境をご用意できますので、ぜひ、お気軽にご相談ください。

▼ エンジニアが本来の業務に集中するためにAWSの運用・監視・障害対応を最適化するには?
AWS入門 AWSを運用するための ベストプラクティス

おすすめのサービス

おすすめの記事

おすすめのカテゴリ