7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】Fargateって結局何をしてくれるサービスなの?

7
Posted at

はじめに

AWSを勉強していると、「Fargate」という名前をよく見かけます。
調べてみても「サーバーレスでコンテナを実行できる」としか書いておらず、「いや、それって結局何してるの?」と思いませんか?

本記事では、Fargateがつまり何をしてくれるサービスなのかを、コンテナの基礎からざっくり理解できるようにまとめました。

そもそもコンテナって何?

Fargateを理解するためには、まず「コンテナ」を知っておく必要があります。

コンテナとは、アプリケーションとその実行に必要なものをひとまとめにパッケージしたものです。

たとえば、自分のPCで動いているWebアプリを別のサーバーで動かそうとすると、「ライブラリのバージョンが違う」「OSの設定が違う」などの理由でうまく動かないことがありますよね。

コンテナは、アプリ本体+必要なライブラリ+設定ファイルなどをまるごと箱詰めして、どこでも同じように動く状態にしてくれます。

「このPC上では動くのに、別の環境では動かない...」という問題を解消してくれるのがコンテナです。

コンテナを動かすには「サーバー」が必要

コンテナは便利ですが、当然どこかのサーバー(=コンピュータ)の上で動かす必要があります。

AWSでコンテナを動かすサービスとして有名なのが Amazon ECS(Elastic Container Service) です。
ECSは「どのコンテナを、いくつ、どうやって動かすか」を管理してくれるサービスです。

ただし、ECSを使う場合、コンテナを実行する「土台」となるサーバーをどうするかという問題が出てきます。

従来は、EC2インスタンス(仮想サーバー)を自分で用意して、その上でコンテナを動かしていました。

[自分で管理する範囲]
┌──────────────────────────┐
│  EC2インスタンス(サーバー)  │  ← OSのアップデート、セキュリティパッチ...
│  ┌────────┐ ┌────────┐   │
│  │コンテナA│ │コンテナB│   │  ← アプリはこっち
│  └────────┘ └────────┘   │
└──────────────────────────┘

この方法だと、コンテナだけでなくEC2インスタンスの管理もしなければなりません。
OSのアップデート、セキュリティパッチの適用、キャパシティの調整...

アプリを動かしたいだけなのに、サーバーの面倒まで見るのは大変ですよね。

Fargateは「サーバーの管理を丸投げ」できるサービス

ここでFargateの出番です。

AWS Fargateは、コンテナを動かすためのサーバーをAWSが裏側で勝手に用意・管理してくれるサービスです。

[自分で管理する範囲]
┌────────┐ ┌────────┐
│コンテナA│ │コンテナB│   ← ここだけ気にすればOK
└────────┘ └────────┘
─────────────────────────
[AWSが管理する範囲]
┌──────────────────────────┐
│  サーバー(見えない)       │  ← Fargateが裏側でやってくれる
└──────────────────────────┘

つまりFargateを使えば、自分はコンテナ(=アプリ)のことだけを考えればよくなるわけです。

Fargateを一言でまとめると、「コンテナを動かすためのサーバーを、自分の代わりにAWSが用意・管理してくれるサービス」 です。

ECS + EC2 と ECS + Fargate の違い

ECSでコンテナを動かすとき、起動タイプとして「EC2」か「Fargate」かを選べます。
それぞれの違いを表にまとめました。

項目 ECS + EC2 ECS + Fargate
サーバーの管理 自分でEC2を用意・管理 AWSにおまかせ
OSのパッチ適用 自分でやる 不要
スケーリング EC2の台数を自分で調整 コンテナ単位で自動
料金体系 EC2インスタンスの稼働時間 コンテナが使ったCPU・メモリの分だけ
向いているケース 細かいサーバー設定が必要な場合 インフラ管理をなるべくしたくない場合

Fargateは手軽ですが、EC2起動タイプに比べてコストが割高になるケースもあります。大量のコンテナを常時稼働させる場合などは、EC2のほうがコストパフォーマンスが良いこともあるので、要件に合わせて選びましょう。

Fargateの料金の仕組み

Fargateは使った分だけ課金される仕組みです。

課金対象は以下の2つです。

  • vCPU:コンテナに割り当てたCPUの量 × 稼働時間
  • メモリ:コンテナに割り当てたメモリの量 × 稼働時間

EC2のように「インスタンスを立てている時間」ではなく、コンテナが実際に動いている時間だけなので、バッチ処理のように「必要なときだけ動かす」用途では無駄なコストが発生しにくいです。

Fargateがよく使われるユースケース

  • Webアプリのバックエンド:APIサーバーをコンテナで動かし、リクエスト数に応じてスケール
  • バッチ処理:定期的なデータ処理をコンテナで実行し、終わったら自動で停止
  • マイクロサービス:複数の小さなサービスをそれぞれコンテナで独立して運用

まとめ

疑問 回答
Fargateって何? コンテナを動かすサーバーをAWSが管理してくれるサービス
何が嬉しいの? サーバーの管理(OS更新、スケーリングなど)から解放される
どうやって使うの? ECS(またはEKS)の起動タイプとしてFargateを選ぶ
料金は? コンテナが使ったCPU・メモリの分だけ(使った分だけ課金)

Fargateの本質は、「コンテナを動かすためのインフラ管理をAWSに任せて、自分はアプリだけに集中できるようにする」 ことです。

「サーバーレスでコンテナを実行」という説明の裏側にあるのは、こういうシンプルな話でした。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?