Skip to content

feat(infra): complete infrastructure layer — Spring Boot 3.5.3, Kafka, OTel/Jaeger, Prometheus, Grafana, CI/CD#1

Merged
lmoraesdev merged 11 commits into
mainfrom
develop
Jun 3, 2026
Merged

feat(infra): complete infrastructure layer — Spring Boot 3.5.3, Kafka, OTel/Jaeger, Prometheus, Grafana, CI/CD#1
lmoraesdev merged 11 commits into
mainfrom
develop

Conversation

@lmoraesdev

Copy link
Copy Markdown
Owner

O que esse PR faz

Entrega a camada de infraestrutura completa do projeto, sem tocar em regra de negócio.
Espelha o pix-payment-core em Java com
Clean Architecture — o domínio (Charge, use cases, ports) será implementado a partir daqui.

Mudanças

Build

  • Spring Boot 4.0.6 (inexistente) → 3.5.3, groupId com.lmoraesdev
  • Dependências adicionadas: spring-kafka, micrometer-registry-prometheus,
    micrometer-tracing-bridge-otel, opentelemetry-exporter-otlp,
    spring-boot-starter-data-redis (pré-instalado, sem uso), Testcontainers
  • Plugins: maven-failsafe-plugin, spotless-maven-plugin (GJF AOSP), maven-checkstyle-plugin

Java — pacote com.lmoraesdev.payment.*

  • Migração completa do pacote dev.leandromoraes.paymentapi
  • Stubs ADIADOS removidos (Redis, OTel, OpenApi vazios)
  • Skeleton de pacotes com .gitkeep: domain.model/event, application.usecase/port.*, adapter.out.*
  • Log5w1h agora carrega traceId + spanId automaticamente do MDC do Micrometer Tracing

Configuração

  • application.propertiesapplication.yml com bindings 12-factor
  • application-test.yml com ddl-auto: create-drop, Kafka/Redis health desabilitados, tracing off
  • PaymentApiApplicationIT com @Testcontainers + @ServiceConnection (Postgres 18)

Docker

  • Dockerfile multi-stage: maven:3.9-eclipse-temurin-21eclipse-temurin:21-jre-alpine
  • Usuário não-root, HEALTHCHECK em /actuator/health, cache de camada por pom.xml

Compose

  • Jaeger all-in-one (OTLP HTTP :4318, UI :16686)
  • Redis 7 sob profile cache — não sobe no up padrão
  • OTEL_EXPORTER_OTLP_ENDPOINT injetado no container app

Observabilidade

  • Prometheus raspa /actuator/prometheus
  • Grafana com datasource uid=prometheus provisionado + dashboard Payment — Overview
  • Logs estruturados 5W1H com traceId + spanId em cada linha

CI/CD

  • Job unit-tests: Spotless + Checkstyle + ./mvnw test — roda em develop e main
  • Job full-verify: ./mvnw verify + docker build — só em main
  • concurrency com cancel-in-progress

DX

  • Makefile: up / down / clean / logs / test / verify / format / db
  • .env.example na raiz, .gitignore atualizado
  • .githooks/pre-push (mvnw verify) e .githooks/commit-msg (Conventional Commits)

Docs

  • docs/architecture.md: domínio, máquina de estados, fluxos de sequência, contratos de API, Kafka, Redis
  • docs/devops-flow.md: pipeline CI/CD + observabilidade em Mermaid

Checklist

  • ./mvnw spotless:check verde
  • ./mvnw checkstyle:check verde (0 violações)
  • ./mvnw test verde (sem Docker)
  • ./mvnw verify verde com Testcontainers (roda no CI full-verify)
  • docker compose up -d --build sobe tudo saudável

@lmoraesdev lmoraesdev merged commit d34e607 into main Jun 3, 2026
4 checks passed
@lmoraesdev lmoraesdev deleted the develop branch June 3, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant