0
0

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 ECSとは

Last updated at Posted at 2025-06-07

まずはじめに

普段はJavaをメインにバックエンドの開発をしていますが、最近になってインフラ(AWS)を触る機会がとても多くなっており、頭の整理がてらアウトプットさせていただきます。
インフラ第一回目はコンテナについてです。

ECSってなにもの?

image.png

まずはじめにECSについて簡単に説明すると、ECSとはDockerコンテナを実行、停止、管理するためのフルマネージドなコンテナオーケストレーションサービスであり、 コンテナ化されたアプリケーションのスケーリング、ロードバランシング、ネットワーキング、および監視を簡素化してくれるサービスのこと。

簡単にいうと、とてもいい感じにコンテナの管理をしてくれるサービスです。

フルマネージド、オーケストレーションとは?

コンテナクラスタの管理、スケーリング、パッチ適用などのインフラ管理をAWSが担当してくれること。

オーケストレーション:管理

Dockerとは?

1台のサーバー上で様々なアプリケーションを手軽に仮想化・実行できるようにするためのプラットフォームのこと。
Dockerコンテナと呼ばれるアプリケーションの実行環境を、1台のサーバー上に作成することができる。
Dockerコンテナを作成するための設計図であるDockerイメージを共有することで、他ユーザーでも簡単に同じ開発環境のDockerコンテナを使ってアプリケーションを実行できる。

Dockerfile:Dockerイメージを作成するためのテキストデータ。OSの設定、言語のインストール、依存関係のインストールなどを記載する実行環境構築の手順書のようなもの。

Dockerイメージ:Dockerfileに記述された手順に従ってビルドされた、アプリケーションとその実行環境をパッケージとしてまとめたもの。ソースコード+実行環境

Dockerコンテナ:実行環境や依存関係をパッケージ化された仮想空間のようなもので、他のシステムに影響を与えない、与えられないように隔離されている。

ECSの構成要素

・クラスター 
サービスやタスクを実行する実行基盤

・タスク定義
ECSがどのようにコンテナを実行すべきかを記述した設計図。アプリケーションを構成する1つまたは複数のコンテナ、それらのコンテナが使用するリソース、ネットワーク設定、ログ設定などを定義します。

・サービス
ECSにおいてタスクの実行と管理を維持し、指定されたdesired count(希望する実行数)を維持するもの。長時間稼働するWebサーバーやAPIなどのアプリケーションで使用される。

・タスク
タスク定義に基づいてECSクラスター上で実際に実行されているコンテナのインスタンス、実際に動いているアプリケーションのまとまり

EKS ECRとは何が違うの?

ESK(Elastic Kubernetes Service)

image.png

ESKはkubernetesのマネージドサービスで、オープンソースのkubernetesをAWS上で利用しているもの。(逆にECSはAWSが独自に開発したサービス)

ECSとESKはどちらもコンテナオーケストレーションサービスですが、採用している技術と、運用における特徴が異なっている。

ECR(Elastic Container Registry)

image.png

ECRとはDockerコンテナのイメージを保存するためのサービス
ECRはDockerfileやdocker-compose.ymlではなく、ビルドされたDockerイメージを保存する
ECSはコンテナを実際に実行する役割をもち、ECRはDockerイメージを保管する役割を持っている。

まとめ

ECSはコンテナ運用の強力な味方。
最後にECS運用のメリットをまとめて終わります。

1. 運用負荷からの解放:インフラ管理の心配なし

ECSを使う最大のメリットの一つは、コンテナインフラの管理から解放されることです。特にAWS Fargateを選択すれば、EC2インスタンスのOSパッチ適用、スケーリング、高可用性の維持といった面倒な作業はすべてAWSが引き受けてくれます。私たちはアプリケーションコードとコンテナイメージの作成に集中できるため、開発の生産性が大幅に向上します。

2. 高いスケーラビリティと可用性:急なアクセス増も怖くない

ECSのサービス機能とAuto Scalingの組み合わせにより、アプリケーションは必要な時に必要なだけスケールできます。トラフィックの急増にも柔軟に対応し、負荷分散機能と連携することで、ユーザーに途切れないサービスを提供できます。万が一、タスクが停止しても、ECSが自動的に新しいタスクを起動してくれるため、アプリケーションの可用性が高く保たれます。

3. 効率的なリソース利用とコスト最適化:使った分だけ賢く支払う

タスク定義でコンテナごとにCPUとメモリを細かく指定できるため、リソースを無駄なく利用できます。特にFargateの場合、コンテナが実際に利用したリソースに対してのみ課金されるため、アイドル状態のリソースに対する無駄なコストが発生しにくくなります。これにより、運用コストを最適化しやすくなります。

4. 開発とデプロイの高速化:モダンなCI/CDパイプラインの実現

ECRでコンテナイメージを一元管理し、ECSと連携させることで、継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインを簡単に構築できます。新しいコードをデプロイする際も、ECSのサービスデプロイ機能を使えば、ダウンタイムを最小限に抑えながら安全にリリースを行うことが可能です。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?