Pular para conteúdo

ADR 0007: Versionamento de Banco de Dados com Flyway

Status

Aceito

Contexto

Como escolhemos um banco de dados relacional (PostgreSQL - ADR 0004), o esquema do banco de dados evoluirá ao longo do tempo (criação de tabelas de log, membros, projetos, etc.). Em ambientes distribuídos e equipes colaborativas, alterações manuais de DDL (Data Definition Language) via scripts SQL pontuais geram inconsistências graves entre ambientes (Dev, Homologação e Produção), dificultando rastreabilidade e causando "quebras" durante o deploy da aplicação.

Decisão

Optamos por adotar o Flyway como ferramenta de migração contínua e versionamento do esquema do banco de dados.

Consequências

Positivas

  • Controle de Versão: Todos os scripts SQL ficam armazenados no próprio repositório (ex: V1__init.sql), garantindo que o esquema acompanhe exatamente a versão do código-fonte.

  • Automação controlada: O Flyway se integra ao Spring Boot, mas em produção a API inicia com SPRING_FLYWAY_ENABLED=false. A pipeline atualiza e executa um Cloud Run Job de migração antes de liberar a nova revisão da API, evitando concorrência durante o autoscaling.

  • Rastreabilidade: Cria uma tabela de histórico automática no PostgreSQL, permitindo saber exatamente quando cada migração foi aplicada.

Negativas / Riscos

  • Rigidez: Uma vez que uma migração é aplicada, ela não deve ser alterada. Erros em scripts requerem a criação de novos scripts de reparo, o que exige disciplina do time para não alterar arquivos antigos no Git.

  • Rollback complexo: Reverter versões do banco de dados com Flyway na versão comunitária exige scripts de "undo" geridos manualmente ou estratégias cuidadosas de compatibilidade retroativa.


Histórico de Versões

Versão Data Descrição Autor
1.0 04/06/2026 Criação do documento Pedro Henrique P. Santos
1.1 13/06/2026 Revisão técnica e reestruturação da documentação Pedro Henrique P. Santos
1.2 04/07/2026 Revisão profunda, correção de metadados e melhorias visuais Pedro Henrique P. Santos
1.3 11/07/2026 Adicionada nota sobre a inicialização embutida com o Cloud Run Pedro Henrique P. Santos
1.4 13/07/2026 Corrigido o fluxo: migrações executadas por Cloud Run Job antes do rollout Pedro Henrique P. Santos

Comentários