Estágio 2 — Landing → Bronze
- Michel Souza Santana

- 10 de jul.
- 5 min de leitura

Objetivo da camada
A etapa Landing → Bronze transforma uma entrada temporária em um histórico bruto padronizado, rastreável e reprocessável.
A Bronze não é uma camada de negócio. Ela é a primeira camada persistente da arquitetura.
A função dela é preservar o dado recebido, com o mínimo de alteração possível, mas já com padronização técnica suficiente para permitir leitura, auditoria, reprocessamento e evolução controlada.
Definição do estágio
O que
Persistir dados brutos aprovados da Landing em uma camada histórica padronizada.
Quando
Depois que a ingestão inicial foi concluída e o lote recebeu status:
READY_FOR_BRONZEOnde
Na camada Bronze / Raw Padronizada / Lakehouse bruto histórico.
Como
Com append-only, metadados técnicos, particionamento, manifesto, validação estrutural e controle de idempotência.
1. Papel da Bronze na arquitetura
A Bronze deve ser a fonte histórica bruta confiável.
Ela responde:
o que chegou;
quando chegou;
de onde veio;
qual lote trouxe;
qual arquivo/API/janela originou;
qual schema foi recebido;
qual execução processou;
se o dado foi reprocessado;
se houve duplicidade técnica;
se o dado pode ser reconstruído.
A regra principal:
Landing é transitória. Bronze é histórica.
2. O que entra na Bronze
Só deve entrar na Bronze aquilo que passou pela validação inicial da Landing.
Entradas válidas:
arquivos aprovados;
payloads de APIs persistidos;
extrações de banco finalizadas;
eventos com checkpoint/offset registrado;
lotes com manifesto válido;
cargas com status operacional controlado.
Entradas bloqueadas:
arquivo vazio;
schema inválido;
arquivo corrompido;
lote sem manifesto;
carga sem batch_id;
origem desconhecida;
extração sem controle de janela;
dados sem rastreabilidade mínima.
3. Característica principal: append-only
A Bronze deve ser preferencialmente append-only.
Isso significa:
não atualizar silenciosamente
não sobrescrever sem controle
não apagar histórico bruto
não corrigir dado original sem rastrearMesmo quando houver reprocessamento, o ideal é manter rastreabilidade entre lote original e lote reprocessado.
Exemplo de controle:
batch_id_original
batch_id_reprocessado
parent_batch_id
reprocess_reason
is_reprocessed4. Estrutura recomendada da Bronze
Modelo genérico:
bronze/
domain=<dominio>/
entity=<entidade>/
ingestion_date=YYYY-MM-DD/
source_system=<sistema_origem>/
batch_id=<id_lote>/
data.parquet
metadata.jsonOu, em formato de tabela:
bronze.<dominio>.<entidade>Exemplo:
bronze.financeiro.clientes
bronze.comercial.vendas
bronze.operacional.contratos5. Formato dos dados
Sempre que possível, a Bronze deve converter os dados recebidos para formato colunar.
Preferência:
Parquet
Delta
Iceberg
HudiDepende da plataforma, mas o princípio é o mesmo:
evitar manter CSV, Excel ou JSON como formato principal de consulta histórica.
O arquivo original pode ser mantido temporariamente na Landing ou armazenado em área de auditoria, mas a Bronze deve priorizar formato eficiente para leitura e reprocessamento.
6. Metadados obrigatórios na Bronze
Toda tabela Bronze deveria ter colunas técnicas padronizadas.
Exemplo:
_metadata_batch_id
_metadata_execution_id
_metadata_source_system
_metadata_source_type
_metadata_source_entity
_metadata_source_file
_metadata_source_path
_metadata_ingestion_at
_metadata_landing_path
_metadata_file_hash
_metadata_schema_hash
_metadata_record_hash
_metadata_watermark_start
_metadata_watermark_end
_metadata_load_type
_metadata_is_reprocess
_metadata_parent_batch_id
_metadata_created_atEsses campos garantem:
auditoria;
rastreabilidade;
idempotência;
reprocessamento;
troubleshooting;
lineage operacional.
7. Validações antes de gravar na Bronze
Antes de persistir na Bronze, o pipeline deve validar:
batch_id existe
manifesto existe
status = READY_FOR_BRONZE
arquivo/payload existe na Landing
schema mínimo foi validado
hash do arquivo confere
quantidade de registros confere
lote ainda não foi processado
origem está cadastrada
destino bronze está configuradoSe falhar, o lote não deve avançar.
Destino:
QUARENTENA_TÉCNICA
ou
FAILED_BRONZE_LOAD8. Esteira de execução Landing → Bronze
Fluxo ideal:
1. Ler tabela de controle da ingestão
2. Identificar lotes READY_FOR_BRONZE
3. Ler contrato da entidade
4. Ler dados da Landing
5. Validar manifesto e metadados
6. Aplicar padronização técnica mínima
7. Adicionar colunas de metadados
8. Converter para formato colunar
9. Gravar na Bronze em append-only
10. Atualizar controle operacional
11. Marcar lote como BRONZE_PROCESSED
12. Acionar próximo estágio: Bronze → Silver TécnicaVisualmente:
Landing
↓
Manifesto + contrato
↓
Validação estrutural
↓
Padronização técnica mínima
↓
Metadados técnicos
↓
Bronze append-only
↓
BRONZE_PROCESSED9. Padronização permitida na Bronze
A Bronze pode padronizar tecnicamente, mas não deve aplicar regra de negócio pesada.
Pode fazer:
normalizar nomes técnicos de colunas;
remover caracteres problemáticos dos nomes;
converter formato físico;
adicionar metadados;
registrar schema recebido;
particionar dados;
preservar payload bruto;
controlar duplicidade de lote;
padronizar encoding;
persistir JSON como struct ou string, conforme contrato.
Não deve fazer:
criar KPIs;
aplicar regra complexa de negócio;
deduplicar entidade final;
corrigir valores de domínio;
fazer joins analíticos;
aplicar SCD;
criar dimensões ou fatos.
10. Controle de schema
A Bronze precisa registrar o schema recebido.
Possibilidades:
schema_hash
schema_snapshot
schema_version
schema_drift_statusRegras recomendadas:
Situação | Ação |
Schema igual ao esperado | Processa normalmente |
Coluna nova permitida | Processa com evolução controlada |
Coluna obrigatória ausente | Quarentena técnica |
Tipo incompatível | Quarentena técnica |
Ordem de colunas diferente | Corrige se contrato permitir |
Arquivo sem header esperado | Quarentena técnica |
Schema totalmente divergente | Bloqueia carga |
11. Idempotência na Bronze
A Bronze precisa evitar duplicidade técnica.
Chaves de controle:
source_system
entity
source_file
file_hash
batch_id
watermark_start
watermark_endRegra prática:
Mesmo batch_id já processado = não processar novamente
Mesmo arquivo + mesmo hash = não duplicar
Mesmo intervalo incremental = exigir reprocessamento controladoSe for reprocessamento autorizado:
_metadata_is_reprocess = true
_metadata_parent_batch_id = batch original12. Reprocessamento Landing → Bronze
O reprocessamento pode acontecer por:
batch_id;
arquivo;
entidade;
domínio;
data de ingestão;
janela incremental;
falha técnica;
correção de schema;
solicitação de negócio;
reprocessamento de quarentena.
Tipos principais:
Reprocessamento por lote
Reprocessar batch_id específico da Landing para BronzeReprocessamento por arquivo
Reprocessar arquivo corrigido ou reenviadoReprocessamento por janela
Reprocessar período incrementalReprocessamento de quarentena
Reprocessar lote corrigido após falha técnicaReplay controlado
Reexecutar uma carga preservando vínculo com o lote original13. Tabela de controle Bronze
Além da tabela de ingestão, pode existir uma tabela operacional específica da Bronze.
Exemplo:
control_bronze_loadsCampos recomendados:
bronze_load_id
batch_id
parent_batch_id
source_system
domain
entity
landing_path
bronze_table
load_type
status
record_count_landing
record_count_bronze
schema_hash
file_hash
started_at
finished_at
duration_seconds
is_reprocess
reprocess_reason
error_message
created_atStatus possíveis:
PENDING_BRONZE
BRONZE_RUNNING
BRONZE_PROCESSED
BRONZE_FAILED
BRONZE_QUARANTINED
BRONZE_REPROCESS_REQUESTED
BRONZE_REPROCESSED14. Quarentena técnica da Bronze
A quarentena técnica também atua nesse estágio.
Motivos comuns:
manifesto ausente
batch_id inválido
arquivo não localizado
schema divergente
falha na conversão para formato colunar
registro corrompido
erro de leitura
lote duplicado não autorizado
record_count divergenteA quarentena precisa guardar:
lote;
origem;
erro;
dados afetados;
schema recebido;
schema esperado;
data da falha;
possibilidade de reprocessamento;
motivo técnico;
responsável/domínio.
15. Particionamento recomendado
Particionamento depende do volume, mas padrões úteis são:
ingestion_date
source_system
domain
entityEvitar particionar por campos de alta cardinalidade.
Boas opções:
ano_mes
data_ingestao
dominio
origemMás opções:
cpf
id_cliente
numero_contrato
timestamp exatoRegra prática:
Particione para reduzir custo de leitura, não para reproduzir cada coluna de filtro possível.
16. Qualidade na Bronze
A qualidade na Bronze é técnica, não analítica.
Validar:
leitura do arquivo;
formato;
schema mínimo;
colunas obrigatórias técnicas;
quantidade de registros;
duplicidade de lote;
hash;
metadados;
integridade do manifesto;
sucesso da escrita.
Não validar ainda:
regra de negócio complexa;
domínio comercial;
relacionamento entre entidades;
KPIs;
granularidade analítica.
Essas validações entram principalmente na Silver Técnica e Silver Analítica.
17. Saída esperada da Bronze
Ao final do estágio, devemos ter:
dados persistidos em camada histórica
formato físico otimizado
metadados técnicos adicionados
append-only garantido
manifesto vinculado
controle operacional atualizado
status BRONZE_PROCESSED
base pronta para Silver TécnicaA entrega da Bronze é:
histórico bruto padronizado, auditável, reprocessável e tecnicamente confiável.
18. Resumo visual do estágio
LANDING
↓
MANIFESTO + CONTRATO
↓
VALIDAÇÃO ESTRUTURAL
↓
PADRONIZAÇÃO TÉCNICA MÍNIMA
↓
METADADOS TÉCNICOS
↓
BRONZE APPEND-ONLY
↓
BRONZE_PROCESSED
↓
SILVER TÉCNICAEm caso de falha:
VALIDAÇÃO / ESCRITA BRONZE
↓
QUARENTENA TÉCNICA
↓
CORREÇÃO
↓
REPROCESSAMENTO CONTROLADO
↓
BRONZEDefinição final do estágio
A camada Landing → Bronze é responsável por transformar uma recepção temporária em um histórico bruto persistente, padronizado e rastreável.
Ela deve garantir que todo dado aprovado da Landing seja gravado de forma append-only, com metadados técnicos, controle de schema, manifesto, idempotência e possibilidade real de replay/reprocessamento.
A Bronze não é onde o dado vira confiável para negócio.A Bronze é onde o dado vira confiável para processamento técnico e histórico auditável.



Comentários