fargateとはなんぞや

調べてみた。

「AWS Fargate とは Amazon Elastic Container Services (Amazon ECS) でコンテナを実行する際の起動タイプのうちの1つです。お客様はEC2 起動タイプ（前述の様にホストマシン上でコンテナを実行する）とFargate 起動タイプから自社のワークロードに合ったものをお選びいただくことが出来ます。」 - 公式

つまりEC2と同じようにFargateでもアプリケーションサーバを立ち上げることができる！
EC2で起動するときのイメージは、
EC2インスタンスにイメージを載せて、一つ一つを個々に管理していた！
Fargateでは、EC2インスタンスは気にすることなく、
イメージを与えるだけで勝手にスケーリングの管理をしてくれる！

EC2からFargateに変えたい場合は、起動タイプを切り替えるだけでOK!

だからEC2のスケーリング機能を勝手にやってくれる！


ECSとは
「Amazon Elastic Container Service (Amazon ECS) により、Docker コンテナアプリケーションを AWS で簡単に実行、スケール、保護できます。コンテナとしてローカルでパッケージングされたアプリケーションは、Amazon ECS によって管理されるコンテナと同様にデプロイし、実行できます。Amazon ECS では、コンテナオーケストレーションおよびクラスター管理インフラストラクチャを自分でインストール、運用、スケールする必要がないため、コンテナ化されたアプリケーションのリソースニーズと可用性要件に集中することができます。

Amazon EC2 では、数百のインスタンス全体で 1 個から数千個までコンテナを拡張できます。アプリケーションの実行方法がこれまでより複雑になることはありません。アプリケーション、バッチジョブ、マイクロサービスなどをすべて実行できます。Amazon ECS では、インフラストラクチャの複雑さがすべて解消されるため、お客様はコンテナ化アプリケーションの設計、作成、実行に集中できます。

Amazon ECS では、AWS Fargate を使用することでインフラストラクチャを完全に管理できるため、コンテナのデプロイに集中できるようになります。または、Docker コンテナの作成と削除から詳細なクラスター情報の確認まで、基盤となるサーバークラスターを完全に確認および制御することもできます。独自のコンテナスケジューラを統合して使用することや、継続的インテグレーションおよび配信システムなどの既存のソフトウェア配信プロセスに Amazon ECS を接続することができます。」　- 公式


要は、
Dockerコンテナの管理ツール。
Docker用アプリケーションをそのままデプロイできる。
コンテナオーケストレーションやクラスター管理をECSがしてくれるので便利。
Fargateで使える。

「AWS Fargate テクノロジーは、Amazon ECS を使用することで利用可能になります。AWS Fargate により、Amazon EC2 インスタンスタイプの選択、クラスターのプロビジョニングとスケール、各サーバーのパッチ適用と更新を実施する必要がなくなります。ビンパッキングやホストスプレッドなどのタスク配置戦略を考える必要はなく、タスクは複数のアベイラビリティーゾーンを渡って自動的にバランスされます。Fargate がお客様に代わってコンテナのアベイラビリティーを管理します。アプリケーションの要件を定義し、コンソールまたは CLI で起動タイプとして Fargate を選択すると、コンテナの実行に必要なすべてのスケーリングとインフラストラクチャ管理が Fargate によって処理されます。
インフラストラクチャ全体で詳細なサーバーレベルの制御が必要な開発者の場合は、Amazon ECS の EC2 起動タイプを使用することで、サーバーのクラスターを管理し、サーバー上のコンテナ配置をスケジューリングできます。
」 - 公式
ムム？FargateとECSの関連性がはっきりとわからない…

もう少し読み進めてみる…
「AWS Fargate は、Amazon Elastic Container Service (ECS) と Amazon Elastic Kubernetes Service (EKS) の両方で動作する、コンテナ向けサーバーレスコンピューティングエンジンです。Fargate を使用すると、アプリケーションの構築に簡単に集中することができます。Fargate ではサーバーのプロビジョンと管理が不要となり、アプリケーションごとにリソースを指定してその分のみ料金を支払うことができ、設計段階からのアプリケーション分離によりセキュリティを強化します。
Fargate では、インスタンスの選択やクラスター容量のスケーリングなしに、適切なコンピューティング容量が割り当てられます。料金は、コンテナの実行に必要なリソースの分のみを支払うため、オーバープロビジョニングや追加のサーバー料金は一切発生しません。Fargate による各タスクおよび各ポッドの実行には、独自のカーネルとそれぞれ独立したコンピューティング環境が使用されます。これにより、お使いのアプリケーションでワークロードの分離と設計段階からのセキュリティの向上が実現します。そしてこれが、Vanguard、Accenture、Foursquare、Ancestry などのお客様がミッションクリティカルなアプリケーションの実行に Fargate を選ぶ理由です。
」　-　公式
要は、
ECSはFargateサービスの基盤となっている部分！
アプリケーションによって、CPリソースが最適化されるので、料金もコンテナ実行のリソースにより最適化されるので無駄がない！
アプリケーションで使うポッドはそれぞれ独立しているのでセキュリティが保たれる！


公式の「サービス概要」を読んでみる


「Amazon ECSは、コンテナを大規模に稼働させることを可能にします。また、このサービスは、VPC networking、load balancing、IAM、Amazon CloudWatch LogsやCloudWatch metricsといったAWSプラットフォームとネイティブに連携しています。これらの連携により、ECSタスクはAWSプラットフォームの中でファーストクラスオブジェクトとして扱うことができます。
タスクを起動するためには、適切なインスタンスタイプと数を選び、Auto Scalingを設定し、パフォーマンス向上のためにクラスターのサイジングを管理するといったクラスターの立ち上げが必要ですが、Fargateでは、それらを全て忘れることができ、アプリケーションの定義、権限やスケーリングについてのポリシー設定に専念することができます」 - 公式

これはECSがVPCやIAM、CloudWatchなどと連携しているのでECSでこれらを普通に使えるということ。
後タスクの起動時はEC2のようにインスタンスタイプ、数、AutoScalingを設定する必要がないので、ほかのことに時間がさける。


「Amazon ECSにおいて、Fargateはlaunch typeです。今までと同様にタスク定義を利用してアプリケーションを定義することができます。対照的に、EC2 launch typeでは、サーバクラスタの管理やそのカスタマイズを柔軟に行うことが可能です。」 - 公式

つまりFargateを起動タイプとして扱うことができる。
BashでFargateを指定して起動ができる。

終わり