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. 

 Código

Disponível em AWS Labs no GitHub

 Data da última atualização

31 de março de 2023

Módulos

Este tutorial está dividido nos módulos a seguir. Conclua cada módulo antes de passar para o próximo.

  1. Configuração (20 minutos): neste módulo, você instalará e configurará a AWS CLI, instalará o AWS Copilot e instalará o Docker.
  2. 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.
  3. 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).
  4. 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.
  5. 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.

Esta página foi útil?

Configuração