Pular para o conteúdo principal
JonaFerreira
/// VOLTAR_PARA_PROJETOSCASE_STUDY: CLOUD RUNNER
ID: CLOUD RUNNER2024Microsserviços Assíncronos

Email Service

Microsserviço de mensageria transacional isolado em Java Spring Boot, capaz de processar disparos de e-mail de alta concorrência integrando com AWS SES.

/// 01_RESULTADOS_MEDIDOS_E_IMPACTO

99.9%
Uptime de Entrega
Isolamento contra quedas da aplicação cliente
< 15ms
Latência de Aceitação
Tempo para enfileirar e responder o cliente HTTP
Zero
Bloqueio de Thread
Desacoplamento assíncrono via Spring Async

/// 02_DIAGRAMA_DE_ARQUITETURA_E_FLUXO

/// AWS_SES // JAVA_SPRING_GATEWAYDOCKER: RUNNING
CLIENTHTTP POST
AWS SES200 OK
BACKOFF: EXPONENTIAL
DISPATCH: 0.04s
FLOW_TRACE:Async HTTP Request -> Spring Controller -> EmailGateway Strategy -> AWS SES SDK -> Instant Status Response & Async Delivery

/// 03_CONTEXTO_DE_NEGÓCIO_E_DESAFIOS

Aplicações monolíticas sofriam com bloqueios na thread principal durante o envio síncrono de e-mails transacionais (boas-vindas, redefinição de senha e alertas), gerando alta latência nas requisições do usuário final.

Desafios Técnicos Identificados:
  • >Isolar a responsabilidade de mensageria de forma que falhas de e-mail não afetem o fluxo principal da aplicação.
  • >Garantir retry automático resiliente com exponencial backoff para falhas temporárias da AWS SES.
  • >Facilitar a conteinerização e deploy em qualquer nuvem pública via Docker.

/// 04_DECISÕES_DE_ARQUITETURA

Arquitetura limpa em camadas (Clean Architecture em Java Spring Boot), expondo endpoints REST assíncronos e desacoplando o provedor de e-mail da lógica de negócios central.

Clean Architecture com Strategy Pattern

Abstração da interface `EmailSenderGateway`, permitindo alternar entre AWS SES, SendGrid ou SMTP sem alterar uma única linha de regra de negócio.

Spring Event Processors & Virtual Threads

Utilização de concorrência desacoplada para consumo imediato de solicitações e liberação imediata do cliente HTTP.

/// 05_TRADE_OFFS_E_COMPROMISSOS_TÉCNICOS

DECISÃO ADOTADA:Microsserviço dedicado vs Envio assíncrono interno na aplicação principal
✓ RATIONALE (POR QUE):Fornece isolamento total de recursos e escala horizontal independente em picos de disparo.
⚠ DOWNSIDE (TRADE-OFF):Adiciona a complexidade de manter uma aplicação extra e monitorar logs distribuídos.
TECNOLOGIAS UTILIZADAS NO CASE
Java 17Spring BootAWS SESDockerREST APIMaven
Ver Todos os Projetos →