Divida uma aplicação monolítica em microsserviços com o AWS Copilot, o Amazon ECS, o Docker e o AWS Fargate
TUTORIAL
Introdução
Visão geral
Neste tutorial, você implantará uma aplicação monolítica Node.js em um contêiner do Docker, e depois desacoplará a aplicação em microsserviços sem qualquer tempo de inatividade. A aplicação Node.js hospeda um fórum simples com discussões e mensagens entre os usuários.
Por que isso é importante
As arquiteturas monolíticas tradicionais são difíceis de escalar. À medida que a base de códigos de um aplicativo cresce, fica cada vez mais complexo mantê-la e atualizá-la. Apresentar novos recursos, linguagens, estruturas e tecnologias fica mais difícil, limitando inovações e novas ideias.
Com uma arquitetura de microsserviços, cada componente da aplicação roda como seu próprio serviço e se comunica com outros serviços por meio de uma API bem definida. Os microsserviços são projetados de acordo com as capacidades dos negócios, e cada serviço realiza uma única função. Os microsserviços podem ser escritos com o uso de estruturas e linguagens de programação diferentes, e você pode implantá-los separadamente como um único serviço ou como um grupo de serviços.
O que você aprenderá
Durante este tutorial, mostraremos como é possível executar uma aplicação monolítica simples em um contêiner do Docker, implantar a mesma aplicação como microsserviços e também migrar o tráfego para os microsserviços sem tempo de inatividade. Assim que terminar, você poderá usar este tutorial e o código nele existente como modelo para construir e implantar seus próprios microsserviços em contêineres na AWS.
Arquitetura monolítica
A aplicação Node.js roda inteira em um contêiner como um único serviço, e cada contêiner apresenta os mesmos recursos que todos os outros contêineres. Se algum recurso a aplicação apresentar um pico de demanda, a arquitetura inteira deverá ser escalada.
Arquitetura de microsserviços
Cada recurso de uma aplicação Node.js roda como um serviço separado dentro do seu próprio contêiner. Os serviços podem escalar e ser atualizados separadamente dos outros.
Pré-requisitos
- Uma conta da AWS: caso ainda não tenha uma, siga o tutorial Configurar o ambiente da AWS para obter uma visão geral rápida.
- Instalar e configurar a AWS CLI
- Instalar e configurar o AWS Copilot
- Instalar e configurar o Docker
- Um editor de texto. Neste tutorial, usaremos o VS Code, mas você pode usar seu IDE preferido.
Experiência com a AWS
Intermediária
Tempo mínimo para conclusão
110 minutos
Custo para a conclusão
Qualificado para o nível gratuito
Requisitos
- Uma conta da AWS: caso ainda não tenha uma, siga o tutorial Configurar o ambiente da AWS para obter uma visão geral rápida.
- Instale e configure a AWS CLI.
- Instale e configure o AWS Copilot.
- Instale e configure o Docker.
- Um editor de texto. Neste tutorial, usaremos o VS Code, mas você pode usar seu IDE preferido.
Serviços usados
Código
Data da última atualização
Módulos
Este tutorial está dividido nos módulos a seguir. Conclua cada módulo antes de passar para o próximo.
- Configuração (20 minutos): neste módulo, você instalará e configurará a AWS CLI, instalará o AWS Copilot e instalará o Docker.
- Conteinerizar e implantar o monólito (30 minutos): neste módulo, você colocará a aplicação em um contêiner, usará o AWS Copilot para instanciar um cluster gerenciado de instâncias de computação do EC2 e implantará sua imagem como um contêiner em execução no cluster.
- Dividir o monólito (20 minutos): neste módulo, você dividirá a aplicação Node.js em vários serviços interconectados e enviará cada imagem do serviço a um repositório do Amazon Elastic Container Registry (Amazon ECR).
- Implantar microsserviços (30 minutos): neste módulo, você implantará a aplicação Node.js como um conjunto de serviços interconectados por trás de um Application Load Balancer (ALB). Em seguida, você usará o ALB para migrar facilmente o tráfego do monólito para os microsserviços.
- Limpeza (10 minutos): neste módulo, você encerrará os recursos que criou ao longo do tutorial. Você interromperá os serviços em execução no Amazon ECS, excluirá o ALB e excluirá a pilha do AWS CloudFormation para encerrar o cluster do Amazon ECS, incluindo todas as instâncias do EC2 subjacentes.