material-de-estudos

Containers na AWS e Serverless

Sumário

Containers na AWS

Na AWS os containers são executados em instâncias do EC2 (clusters de instâncias EC2). Podendo ter muitas instâncias EC2 em várias AZs por exemplo.

O gerenciamento de containers é chamado de orquestração.

Amazon Elastic Container Service (ECS)

Elastic Container Service

É um serviço para gerenciar orquestração de containers do tipo Docker. Você pode usar para monitorar e automatizar o redimensionamento de clusters de instâncias EC2.

Para usar containers, é necessário instalar o agente de container do ECS nas instâncias EC2, que então se irão se chamar instância de container

Com as instâncias de container, você pode escalar na horizontal ou vertical, atribuir permissões, reunir requisitos de disponibilidade, saber o estado do cluster, etc.

Para a aplicação ser executada no ECS você cria uma definição de tarefa (formato JSON) que descreve 1 ou + containers. O exemplo abaixa é de uma execução realizada no web server Nginx

{
  "family":"webserver",
  "containerDefinitions":[{
    "name":"web",
    "image":"nginx",
    "memory":"100",
    "cpu":"99"
  }],
  "requiresCompatibilities": ["FARGATE"],
  "networkMode":"awsvpc",
  "memory":"512",
  "cpu":"256"
}

Amazon Elastic Kubernetes Service (EKS)

Elastic Kubernetes Service

É um serviço para gerenciar orquestração de containers Kubernetes, possui um mecanismo de autoscaling

O Kubernetes é outra plataforma para gerenciar e automatizar workloads e serviços de aplicativos em containers.

Diferença entre ECS e EKS

Serverless (sem servidor)

A AWS cuida do gerenciamento da infraestrutura subjacente do serviço (sistema operacional, escalabilidade, provisionamento, tolerância a falhas e outros recursos), tendo o desenvolvedor focando apenas na entrega da aplicação e não na implementação

AWS Fargate

Fargate

É uma plataforma de computação serverless para ECS ou EKS

AWS Lambda