Exemplo de uma API REST desenvolvida em Java com Spring, o intuito é apresentar uma solução arquitetural para dimensionar operações de leitura com banco de dados, neste exemplo trabalharemos com duas bases de dados, uma base de dados principal e uma réplica.
A ideia é fazer com que a aplicação direcione as transações definidas como READ_ONLY
para a base de dados réplica e que as transações READ_WRITE
sejam direcionadas para a base de dados principal.
As imagens e configurações contidas no arquivo docker-compose.yaml
são específicas para lidar com a replicação de dados.
Esta arquitetura consiste em diminuir a concorrência entre transações da API com o banco de dados, isso nos permite alguns ganhos em ambientes de alta escala dado que podemos tranquilamente escalar horizontalmente mais nós de réplica quando necessário.
ℹ️ Após inicializar a aplicação, acesse a documentação clicando neste link.
⚠️ É necessário ter instaladodocker
edocker-compose
.
Inicializar:
make up
Parar:
make down
O OpenTelemetry foi incluso no projeto utilizando a estratégia de coletores como agent.
Variáveis de ambiente:
OTEL_METRICS_EXPORTER=otlp
OTEL_EXPORTER_OTLP_METRICS_COMPRESSION=gzip
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://localhost:4317
OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_TRACES_COMPRESSION=gzip
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4317
OTEL_LOGS_EXPORTER=none
OTEL_SERVICE_NAME=billionaire-api
Argumentos de VM:
-javaagent:./agents/opentelemetry-javaagent.jar