Menu

A tradução automática foi usada para esta página. Algum conteúdo pode não ser perfeito.

Compartilhar Feedback

AWS ECS em detalhes: arquitetura e opções de implantação

Conteúdo

Compartilhe esta página

Yifat Perry
Yifat Perry

O que é o AWS ECS?

O Amazon Elastic Container Service (ECS) é um serviço de orquestração de contêineres totalmente gerenciado e baseado em nuvem. Ele permite que você execute seus aplicativos na nuvem sem precisar configurar e manter a infraestrutura.

Para garantir que as demandas de capacidade sejam atendidas de maneira ideal e manter o desempenho máximo, você pode configurar o ECS para avaliar e monitorar continuamente os processos de memória e CPU. Esses dados podem ajudar você a determinar uma estratégia de implantação ideal para cada contêiner. Além disso, você pode utilizar o ECS para escalar contêineres e lançar atualizações conforme necessário.

O ECS oferece suporte à integração com vários serviços e recursos úteis da AWS, incluindo funções do Identity and Access Management (AWS IAM), volumes do Elastic Block Store (AWS EBS) e o AWS Elastic Load Balancing (AWS ELB).

Isso faz parte da nossa série de artigos sobre a Kuberneteson AWS.

Neste artigo, você conhecerá:

Benefícios e casos de uso do ECS

O ECS permite que você utilize facilmente os contêineres para vários casos de uso. Você pode utilizar o ECS para hospedar sites simples e gerenciar uma arquitetura de microsserviços distribuída. O ECS simplifica o gerenciamento de contêineres, mas não automatiza todo o processo. Você ainda pode ajustar e personalizar o processo.

Aqui estão alguns dos principais benefícios do Amazon ECS:

  • Implantação fácil e simples—o ECS elimina a necessidade de configurar e manter a infraestrutura de clusters do Kubernetes ao assumir a responsabilidade por essas tarefas.
  • Recursos de agendamento—que permitem programar serviços, aplicações e processos em lote.
  • Disponibilidade gerenciada — o ECS é responsável por manter a disponibilidade da aplicação e ajuda você a aumentar ou diminuir conforme necessário para garantir que as demandas de capacidade sejam atendidas.
  • Integração nativa — com uma ampla variedade de recursos, como AWS ELB, Amazon Virtual Private Cloud (Amazon VPC), IAM e AWS EBS.
  • Integração com ferramentas existentes—o ECS fornece APIs simples que permitem integrar com seu pipeline de CI/CD e suas ferramentas existentes.

Saiba mais em nossos guias: AWS ECS vs Kubernetes e AWS ECS vs EKS

Arquitetura do Amazon ECS

A figura abaixo ilustra o Amazon ECS com contêineres em execução no AWS Fargate. Nas seções a seguir, discutiremos os principais componentes mostrados.

Amazon ECS architecture with VPC, container registry, Fargate tasks, and elastic network interfaces across availability zones.Fonte: AWS

Contêineres e Imagens

Para implantar seu aplicativo no Amazon ECS, você precisa projetar componentes do aplicativo para serem executados em contêineres. Contêineres são criados a partir de modelos somente leitura chamados imagens.

As imagens geralmente são criadas a partir de um Dockerfile, um arquivo de texto sem formatação que especifica todos os componentes que precisam ser executados no contêiner. Depois de criadas, essas imagens são armazenadas em um registro de contêiner e podem ser baixadas e executadas no cluster.

Definições de Tarefa do AWS ECS

Para preparar seu aplicativo para ser executado no Amazon ECS, você precisa criar uma definição de tarefa. Uma definição de tarefa é um arquivo de texto (em formato JSON) que descreve um ou mais contêineres (até 10) que compõem seu aplicativo.

A definição de tarefa pode especificar vários parâmetros para seu aplicativo em contêiner. Por exemplo, você pode usar esses parâmetros para indicar quais contêineres executar, quais portas devem ser abertas, quais volumes de dados devem ser usados, qual modo de rede do Docker usar e quais funções de Identity and Access Management (IAM) utilizar.

Quase tudo o que você pode executar em um comando Docker de linha de comando pode ser definido usando definições de tarefa do ECS. Veja todos os parâmetros de definição de tarefa na documentação oficial.

Tarefas e agendamento do AWS ECS

Uma tarefa é uma instância de uma definição de tarefa em execução em um cluster. Depois de criar uma definição de tarefa para seu aplicativo no Amazon ECS, você pode especificar o número de tarefas a serem executadas em seu cluster.

O Amazon ECS Task Scheduler é responsável por colocar tarefas em um cluster. Existem duas estratégias principais do agendador:

  • A estratégia REPLICA coloca um número desejado de tarefas em seu cluster e mantém esse número de tarefas, restaurando-as se algumas delas falharem.
  • A estratégia DAEMON coloca uma tarefa em cada instância de contêiner ativa que atende aos critérios relevantes.

Amazon ECS architecture showing service definition and Fargate tasks with elastic network interfaces.Fonte: AWS

Cluster AWS ECS

Um cluster do Amazon ECS é um agrupamento lógico de serviços, cada um composto por uma ou mais tarefas. Na primeira vez que você usa o Amazon ECS, um cluster padrão é criado. Você pode criar clusters adicionais em sua conta para obter isolamento de recursos para diferentes workloads ou projetos.

Há duas maneiras de executar recursos de cluster—em instâncias do EC2 ou por meio do Amazon Fargate. Para obter mais detalhes sobre como cada uma dessas opções funciona, veja a seção a seguir.

Agente de contêiner

O agente de contêiner é executado em cada instância de contêiner em um cluster Amazon ECS. O agente envia informações sobre as tarefas em execução no momento e a utilização de recursos para Amazon ECS. O Amazon ECS pode usar o agente para iniciar e interromper tarefas conforme necessário.

Amazon ECS workflow diagram illustrating container registry integration and task scheduling.Fonte: AWS

Opções de implantação do AWS ECS: EC2 vs Fargate

O ECS pode usar instâncias do Elastic Compute Cloud (EC2) para executar contêineres. As instâncias do EC2 são implantadas como parte do serviço Amazon EC2 e "registradas" em um cluster ECS definido, o que significa que o EC2 pode usar essas instâncias para implantar contêineres. Você pode executar um cluster ECS em uma VPC existente, tornando-o acessível aos recursos AWS existentes em execução nessa VPC.

Uma maneira alternativa de implantar contêineres do ECS é com Amazon Fargate. O Fargate remove a responsabilidade de provisionar, configurar e gerenciar instâncias do EC2, permitindo que a AWS gerencie instâncias do EC2 para você.

Com o Fargate, você não precisa gerenciar servidores, mas deve garantir que as definições de tarefas sejam sem estado. Atualmente, você não pode anexar um volume de storage (como um volume Elastic Block Storage) ao contêiner definido no job.

Isso significa que, se você usar o Fargate com storage persistente, você precisará usar serviços de storage externos, como S3 ou Relational Data Service (RDS).

Use o ECS com EC2 quando:

  • Toda a sua infraestrutura é executada em AWS
  • Você já definiu VPC e sub-redes
  • Você tem processos existentes para provisionar e gerenciar instâncias EC2
  • Os aplicativos exigem storage persistente conectado diretamente

Use o ECS Fargate quando:

  • Você não tem uma VPC existente
  • Você tem alguns recursos em execução na Amazon e alguns em outros ambientes de nuvem
  • Os aplicativos são sem estado ou não exigem volumes de storage conectados diretamente

Perguntas e respostas do AWS ECS

Como o Amazon ECS é diferente do AWS Elastic Beanstalk?

O EC2 fornece recursos que simplificam o gerenciamento de contêineres, enquanto você continua a ajustar o processo. O AWS Elastic Beanstalk, por outro lado, gerencia automaticamente a infraestrutura para você. Você pode usar o Beanstalk nos casos em que precisa se concentrar apenas no código.

O AWS Elastic Beanstalk é um serviço baseado em nuvem que ajuda você a implantar e escalar aplicações e serviços com facilidade. O Beanstalk gerencia automaticamente serviços, como ELB, EC2, Auto Scaling, RDS e Auto Scaling, implanta aplicações e monitora a integridade da aplicação.

Ao trabalhar com o Beanstalk, você precisa especificar as imagens de contêiner que deseja que o serviço implante, bem como os requisitos de memória e CPU, os links de contêiner e os mapeamentos de porta. Depois de definir essas informações, o Beanstalk começa a lidar automaticamente com todo o gerenciamento. Ele provisiona o cluster do ECS, gerencia o dimensionamento automático e o monitoramento, executa o balanceamento de carga e implanta contêineres em clusters.

Como o Amazon ECS é diferente do AWS Lambda?

O Amazon ECS fornece recursos que simplificam o gerenciamento de contêineres e clusters, mas não automatiza totalmente o processo. Você precisa entender como funciona o processo de provisionamento e configurar e dimensionar continuamente seus recursos. O EC2 expõe servidores e fornece as informações necessárias para escalar e otimizar seu ambiente.

O AWS Lambda permite que você codifique tarefas orientadas por eventos que automatizam a infraestrutura de computação. O Lambda permite que você defina uma infraestrutura sem servidor que não exija ou permita sua intervenção, além de escrever o código que aciona eventos. O Lambda permite configurar eventos como alterações de dados ou cliques em sites e definir uma reação em resposta aos eventos.

Otimizando o storage de contêineres com o Cloud Volumes ONTAP

O NetApp Cloud Volumes ONTAP, a solução de gerenciamento de storage de nível empresarial líder do setor, oferece serviços de gerenciamento de storage seguros e comprovados na AWS, Azure e Google Cloud. O Cloud Volumes ONTAP suporta até 368 TB e vários casos de uso, como serviços de arquivo, bancos de dados, DevOps ou qualquer outra carga de trabalho empresarial, com um conjunto robusto de recursos, incluindo alta disponibilidade, proteção de dados, eficiências de storage, integração com Kubernetes e muito mais.

Em particular, o Cloud Volumes ONTAP atende a requisitos de provisionamento e gerenciamento de volumes persistentes de workloads em contêineres.

Saiba mais sobre como o Cloud Volumes ONTAP ajuda a enfrentar os desafios das aplicações em contêineres nestes KubernetesWorkloads com estudos de caso do Cloud Volumes ONTAP.

Drift chat loading