osio_sioの日記

自分用メモ

ECS/EKSについての事前学びメモ

ECS/EKSを使用する1dayイベントがあるのですが、インフラ周りの知識が全くなく、ECS/EKSが何かも全然わかっていないので、軽く勉強してメモしておこうと思います。

ECS/EKSとは

EKS:
Amazon Web Services (AWS) 上で、独自の Kubernetes コントロールプレーンをインストール、運用、保守する必要がないマネージド型サービス。EKSはとにかく運用コストが高い。ちなみにKubernetes は、コンテナ化されたアプリケーションの管理、スケーリング、デプロイを自動化するオープンソースシステム
ECS:
AWSが開発したコンテナ管理サービス

webアプリケーションとDBを動かすときのAWSの構成

(ref: udemyのAWSコンテナサービス入門―AWSの基本からECS・Copilot CLI・CI/CD・App Runnerまで)

  1. VPC(ネットワーク)の中にEC2(サーバ)を1台用意して、その中でwebアプリとDBを動かす
    →パッチやバックアップなど、対応すべきことが非常に多い

  2. AWSにはRDSというデータベースのサービスがある
    →RDSを使うとDBのパッチ適用などをAWSに任せることができる
    RDSのようにAWSなどのクラウド事業者に管理を任せられるサービスを「マネージドサービス」という。

  3. EC2を並列稼働させ、webアプリの処理能力を高める(スケールアウト) →CPU使用率などに応じて、自動でスケールさせることが可能

  4. EC2を並列稼働させる場合は、前段にELB(ユーザからのリクエストをEC2などに分配するロードバランサのマネージドサービス)を配置するのが一般的

→最近はEC2をECS on Fargateに置き換えた構成が非常に一般的

なぜECS on Fargateを使うのか

そもそもコンテナを使うわけ
環境構築済みのイメージを運搬して実行するため、他の環境でテストした動作を本番でも保証しやすいこと、サーバよりも軌道が高速で開発サイクルの高速化やオートスケールといった面で有利なこと、サーバ内で環境を分離でき1つのサーバ内でさまざまなアプリケーションを動かしても競合しにくいなどの利点がある

1台のサーバを増強してたくさんのコンテナを動かす方針では、サーバのスペックの限界がある。また、サーバが1台停止するだけで、その中でコンテナとして動いているwebアプリケーションなどにアクセスできなくなる

複数台のサーバでたくさんのコンテナを使えば、コンテナの数が増えても、その分サーバを増やすことで対応可能。サーバ間でコンテナを冗長化させておけば、サーバが1台停止してもwebアプリケーションは全体としては停止しない

複数のサーバでたくさんのコンテナを使うためには、どのサーバにどのコンテナを配置するのが適切か考えるのが大変

コンテナオーケストレーションのツールを使えば、クラスタに対して、コンテナを適当に配置してくれる
コンテナオーケストレーションのツール
AWSを使う場合は、以下の2つの選択肢がある
EKS : k8sのマネージドサービス
ECS:AWS独自のコンテナオーケストレーションサービス

ECS on EC2を使う場合、コンテナとサーバの両方の考慮が必要

ECS on Fargateを使うと、サーバ管理なしでコンテナを実行できる

ECSの基本概念

クラスタ :
まとめて扱う複数のコンピュータの集まりのこと。ECSではクラスタという単位でサーバをまとめておいて、そのサーバに対して適当にコンテナを配備してもらう。ECS on Fargateを使うとき、サーバはAWSが管理してくれるので空のクラスタを作成する

タスク: アプリケーションの実行単位。1つ以上のコンテナから構成される。 タスク定義としては、CPUやメモリのサイズ、コンテナのポートや環境変数がある。 ECSでコンテナを実行するときは、タスク定義という設定をもとにタスクを起動する

サービス: タスク定義からタスクを起動する方法の一つ。起動するタスクの数やロードバランサーなどを設定

ELB

ロードバランサーのサービスで、HTTPなどのアクセスを複数のサーバやコンテナに負荷分散できる。webアプリの場合、HTTPに特化したALBを使うことが多い

ref: EKSとECSの違い #AWS - Qiita
Amazon EKS とは - Amazon EKS
今さら聞けないAWS ECSとは?Fargateとは? #AWS - Qiita
AWS入門 - ECS・Fargate 使ってみる
AWSのロードバランサ機能・使い分けについて(ALB作成手順付き)|クラウドテクノロジーブログ|ソフトバンク