ADR 0019 tsuru migracao na inicializacao - BrunodosSantosVaz/big-bang GitHub Wiki

ADR-0019: Migração na inicialização para SQLite no Tsuru

  • Situação: aceita (banco leve e entrega completa autorizados pelo dono; #187).
  • Data: 2026-10-06.

Contexto e problema

O dono recusou PostgreSQL para o ranking do Snake. SQLite usa arquivo persistente local, que um job Tsuru independente não monta automaticamente. A entrega por job da ADR-0018 continua adequada para bancos externos.

Decisão e justificativa

Adicionar TSURU_MIGRACAO=inicializacao por ambiente, com job como padrão compatível. A pré-checagem de migração confirma identidade da app e no máximo uma unidade, registrando migration=pending. Não inventar resultado de migração. A imagem imutável executa migração transacional/idempotente no volume montado antes de ouvir a porta; falha encerra a unidade. Publicação continua por digest e evento verificável, seguida de saúde que consulta o banco, smoke e scanners. O volume e os recursos pertencem à instalação explícita do projeto.

Consequências

Não há servidor de banco nem job separado para SQLite. O sistema testa inicialização, falha, arquivo durável e migrações; o framework testa estratégia, pré-checagem, proveniência e rejeições. Uma réplica permanente admite sobreposição temporária no rollout do mesmo nó/volume, exigindo transações, timeout de lock e esquema compatível. Rollback não desfaz esquema: o inicializador antigo confere migrações já aplicadas. Disponibilidade da versão anterior depende da estratégia de rollout, e a entrega não é considerada saudável antes das verificações.

Veja o runbook. A plataforma Node.js pode ser instalada para outros sistemas; esta versão promove imagens OCI da CI e não afirma oferecer upload de fontes pelo alvo Tsuru.