ADR-0003 — Manter buckets e projeto de staging no processo de dados¶
Contexto¶
Com a adoção do fluxo integrado com ambiente de dev (ver ADR-0002), passamos a refletir sobre se faz sentido continuar mantendo:
- o bucket
basedosdados-staging, e - o projeto
basedosdados-stagingno BigQuery
como integrantes do processo de dados das pipelines. A princípio, essa arquitetura é uma herança da forma como tabelas eram criadas no BQ no início da BD: usando Views conectadas ao Storage. Isso exigia um bucket com as tabelas para que o BQ fizesse a conexão e criasse as views.
Hoje só usamos tabelas materializadas — então o uso do storage para esse motivo específico não é mais necessário. Mantê-lo implica:
- maior consumo de recursos (CPU/networking nos pods do k8s, storage, processamento BQ);
- aumento da complexidade das pipelines (mais etapas).
Fluxo sem interação com staging (alternativa avaliada)¶
flowchart TD
Start([Início]) --> UploadDev[Flow sobe dados para o<br/>bucket basedosdados-dev]
UploadDev --> CriaDev[Cria tabela no BigQuery em<br/>basedosdados-dev_staging]
CriaDev --> MatDev[Materializa dados em<br/>basedosdados-dev]
MatDev --> Testes{Realiza os testes em<br/>basedosdados-dev}
Testes -- Se falha --> Quebra[Pipeline quebra em dev]
Quebra --> UploadDev
Testes -- OK --> Prod[Levar os dados para<br/>produção]
Decisão¶
Manter o bucket basedosdados-staging e o projeto basedosdados-staging do BigQuery como parte do processo de dados.
A decisão se baseia na avaliação de que dois benefícios da arquitetura atual superam os ganhos de redução de custo e complexidade que viriam da remoção.
Consequências¶
Positivas¶
- Produção funciona como backup informal — não temos política de backup ativa. A replicação completa de dev para produção via staging dá um nível de tolerância a falhas hoje inexistente em outros lugares.
- Governança simples e barata — manter staging como ambiente intermediário evita a obrigação de implementar um cronograma de backup formal sobre
basedosdados-dev, que se tornaria o único repositório de dados brutos e semi-brutos da BD se staging fosse removido. - Dev permanece descartável — com produção como réplica completa, dev pode ser usado para testagem extensiva sem preocupação com impactos downstream.
Negativas¶
- Mantemos o aumento de etapas no processo de dados — além de criar tabelas e materializar em dev para testar, o flow precisa repetir o processo em produção (via staging).
- Custos extras de CPU/networking (pods k8s), storage e processamento BQ associados à transferência e replicação.
- A complexidade adicional permanece nas pipelines.
Neutras¶
- A decisão pode ser revisitada se passarmos a ter uma política de backup formal — nesse caso, o argumento de "backup informal via produção" deixa de pesar.
Alternativas consideradas¶
- Eliminar staging do processo de dados — descartada. Removeria a redundância de armazenamento que hoje funciona como backup, e exigiria uma política de governança/backup muito mais rígida e onerosa sobre
basedosdados-dev.
Status¶
Aceito. Substituível se uma política de backup formal for adotada e tornar a redundância via staging desnecessária.