Projeto desenvolvido para estudo de arquitetura de microsserviços com ecossistema Spring.
- Spring Boot: Base dos microsserviços.
- Service Discovery: Utilização do Eureka Server para registro e descoberta de serviços.
- API Gateway: Implementação de gateway para roteamento centralizado.
- Comunicação Síncrona: Uso de OpenFeign para comunicação REST entre microsserviços (ex: Pagamentos notificando Pedidos).
- Resiliência: Implementação de Circuit Breaker com Resilience4j para tratamento de falhas e métodos de fallback, garantindo que o sistema degrade graciosamente quando serviços dependentes estão indisponíveis.
- Banco de Dados: Persistência com PostgreSQL e JPA.
- Migrações: Versionamento de banco de dados com Flyway.
- Load Balancer: Balanceamento de carga no lado do cliente.
server: Servidor de descoberta (Eureka).gateway: Gateway de entrada da aplicação.pagamentos: Microsserviço responsável pelo processamento de pagamentos. Implementa padrões de resiliência.pedidos: Microsserviço de gestão de pedidos.aws-infra: Infraestrutura como código (IaC) usando AWS CDK para deployment na AWS.
O projeto possui uma infraestrutura completa na AWS gerenciada via CDK (Cloud Development Kit), localizada em aws-infra/.
- VpcStack: Configuração da Virtual Private Cloud para isolamento de rede
- ClusterStack: Cluster ECS Fargate para execução dos containers
- RdsStack: Bancos de dados RDS PostgreSQL dedicados para cada microsserviço
- ServiceStack: Deployment dos serviços com Application Load Balancer
- Pedidos (Orders): Imagem
ctiagosantos/order-msdeployada no ECS Fargate - Pagamentos (Payments): Imagem
ctiagosantos/payment-msdeployada no ECS Fargate
Ambos executando com:
- CPU: 256 units
- Memória: 512 MiB
- Porta: 8080
- Desired Count inicial: 3 tarefas
Logs centralizados configurados para cada microsserviço:
- Log Group:
PedidosMsLogePaymentsMsLog - Retention: 1 semana
- Stream Prefix:
PedidosMSePaymentsMS - Removal Policy: Destroy (para ambientes de desenvolvimento)
Auto Scaling configurado para ambos os microsserviços com:
Capacidade:
- Mínimo: 1 tarefa
- Máximo: 20 tarefas
Métricas de Scaling:
- CPU: Target 70% de utilização
- Scale Out Cooldown: 2 minutos
- Scale In Cooldown: 3 minutos
- Memória: Target 65% de utilização
- Scale Out Cooldown: 2 minutos
- Scale In Cooldown: 3 minutos
- PostgreSQL (RDS) com bancos dedicados:
pedidos-dbpara o serviço de Pedidospagamentos-dbpara o serviço de Pagamentos- Conexões configuradas via variáveis de ambiente injetadas nas tarefas ECS
cd aws-infra
cdk deploy --allPara mais detalhes, consulte aws-infra/README.md