Pular para conteúdo

0001 — Micronaut em vez de Spring Boot

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-07-06 · Decidido em: 2026-04-01

Contexto

O processador de planilhas comerciais roda como serviço containerizado no Coolify: recebe uploads de .xlsx, detecta o tipo, valida e persiste em PostgreSQL. O framework de aplicação precisava ser escolhido antes de qualquer outra decisão de stack.

Decisão

Usar Micronaut (à época 4.x, hoje 5.0.2 — ver 0016) em vez de Spring Boot. DI e AOP são resolvidos em build-time (sem reflexão em runtime), o que dá startup rápido e footprint de memória menor — perfil adequado a um serviço que sobe e desce em container.

Consequências

  • Startup rápido e baixo consumo de RAM no alvo de deploy.
  • DI/validação resolvidas em compilação → erros de wiring aparecem no build, não em runtime; em troca, DTOs serializados exigem @Serdeable (serde build-time).
  • Ecossistema alinhado ao irmão bi-transporte-xls — a base compartilhada (~42 classes candidatas a bi-commons) só existe porque os dois apps usam a mesma stack Micronaut.

Alternativas consideradas

  • Spring Boot: ecossistema mais amplo, mas startup e memória maiores num alvo de container, e a reflexão em runtime não agrega aqui. Descartado.
  • Quarkus: perfil parecido com o do Micronaut, mas a casa já padroniza Micronaut nos processadores BI; adotar outro framework divergiria sem ganho. Descartado.