ECS vs Fargate

Victor BatistaX
3 min readJul 6, 2023

--

Qual a diferença ?

Houve um tempo que a pergunta em alta era sobre as diferenças entre ECS e EKS our Kubernetes. Atualmente, a nem tão nova questão é, Qual a diferença entre ECS e AWS Fargate? Nesse post, tentarei responder essa pergunta. Voce tambem aprenderá sobre as vantagem e desvantagens das duas opções.

Para entendermos a diferença, vamos dividir o serviço ECS entre duas responsabilidades:

  1. Gerênciamente de ciclo de vida e posicionamento de tarefas
  2. Executar containers

Gerenciamento de ciclo de vida e posicionamento de tarefas*

O ECS é responsavel por gerenciar o ciclo de vida e o placement das tarefas. As tarefas são normalemnte feitas de um ou dois container que trabalham juntos.
Exemplo: Um container web server com um container de php-fpm.
Talves venha a pergunta, O ECS inicia e para as tarefas, tambem armazena o seus conteudos? Então, o ECS não executa ou roda seus containers. Ele apenas prove o Control Plane para gerir as tarefas.

Então, Quem roda os containers ? hahaha, sabia que viria essa pergunta

Para rodar containers, nos temos duas opções, sendo elas ECS container instances ou Fargate. Ambas opções trabalham juntas com o ECS. Podemos ver isso e a diferença na figura a seguir.

ECS container instance

Um ECS container instance nada mais é que uma instancia EC2 que roda os ECS container agent. O EC2 é propriedade sua e gerenciado por você. O ECS container agent regularmente fica checando se novos container precisam ser iniciados ou parados. Normalmente, nos executamos um cluster de instancias de container em um auto-scaling group. Vale lembra que o serviço ECS é gratuito, pagando apenas pelas EC2 utilizadas. Isso é uma mega vantagem, pois influencia do custo final, porém, temos aqui um desvantagem pois é preciso fazer o dimensionamento, monitoramento, corrigir e proteger as instancias do EC2 e sim, isso é tarefa SUA. Em especial, o dimensionamento não é das tarefas mais faceis de se fazer.

  • Não há nenhuma métrica óbvia para dimensionar o cluster e nenhuma integração para dimensionar quando o posicionamento da tarefa falha devido à capacidade insuficiente.
  • O grupo de dimensionamento automático e o ECS não estão cientes um do outro, dificultando muito as implantações de tarefas durante o dimensionamento do cluster ou as atualizações contínuas por meio do CloudFormation (os provedores de capacidade abordam esse problema, mas ainda não estão prontos para o horario de pico :/
  • Você precisa reduzir sem matar tarefas em execução, o que é um desafio ainda mais significativo para tarefas de longa duração.

Mesmo a arquitetura de referencia AWS não inclue dimencionamento automatico para o ECS cluster.

Um ECS container instance pode rodar em Linux ou Windows. E o CPU não utilizado pode ser compartilhadao com outro container SE disponivel.

Fargate

Facil! Tão facil como parece. Observe só.

O AWS Fargate gerencia a execução da tarefa. Não há mais instâncias do EC2 para gerenciar. Você paga pelas tarefas em execução. É isso.

Cada tarefa executada no FArgate vem com uma interface de rede (ENI) dedicada com um endereço IP privado, podendo tambem ser artivado um IP publico. Todos os containers da mesma tarefa podem se comnunicar entre si via localhost. Assim, toda comunicação de entrada e saida passa peli ENI.

Comparações

Em resumo…

ECS ou Fargate ? Bom, essa não é a pergunta certa a se fazer. A questão é se usar container instance(EC2) ou Fargate. O que o ECS chama de container instance é conhecido como work node no k8s/EKS ;)

Dimensionar container instance é um desafio. É por isso que recomendo o uso do Fargate. Fargate é muito mais fácil de operar. Use-o se possível (consulte rede, vCPU, memória, sistema operacional do host e limitações do EBS). Mas só vai. Não queira o caminho dificil. O simples é melhor que o complexo.

Abraços

--

--

Victor BatistaX

Computer Scientist | Architect Cloud | AWS Community Builder - Security Topics