▶ Slides ← Módulo
Módulo 11 · Engenharia de Software · Computação 2

Arquitetura de Dados

Aula 5 — Material de Leitura · Prof. Afonso Brandão · 20/08/2026 · leitura estimada de 1h30

Sobre este encontro

Arquitetura de Dados · 20/08/2026 · Prof. Afonso

Objetivo de aprendizagem

Desenhar uma arquitetura de dados conectando fontes, ingestão, armazenamento, processamento, consumo, segurança e operação.

Estratégia do encontro

Abertura curta de retomada do caminho entre as bases de origem e o cubo analítico, seguida da Ponderada em Sala: atividade avaliativa individual de 120 minutos, manuscrita em folhas distribuídas pelo professor e sem consulta, que consolida a modelagem dimensional das Aulas 2, 3 e 4 e a ancora nas decisões arquiteturais desta aula.

Estrutura do encontro

  1. Abertura (15 min) — regras da atividade e retomada do caminho entre as bases de origem do parceiro e o cubo analítico do grupo
  2. Ponderada em Sala (120 min) — oito questões manuscritas, individuais e sem consulta, sobre o cubo do próprio grupo
  3. Encerramento — recolhimento das folhas e encaminhamento para a Aula 6

1. O problema que a arquitetura resolve

⏱ 6 minutos

Toda organização que opera sistemas produz dados antes de decidir o que fazer com eles. O primeiro relatório nasce de uma consulta direta ao banco de produção. O segundo nasce de uma planilha que alguém exporta toda segunda-feira. O terceiro nasce de um script que copia tabelas durante a madrugada. Nenhuma dessas decisões é irracional isoladamente: cada uma resolve um problema imediato com o menor esforço disponível naquele momento.

A dificuldade aparece na soma. Após dois anos, a organização possui dezenas de rotas de dados não documentadas, três definições incompatíveis de receita líquida, um banco de produção sobrecarregado por consultas analíticas e nenhum registro de quem depende de quê. Quando um campo muda de nome na origem, ninguém consegue prever quais relatórios param de funcionar. Entende-se por arquitetura de dados o conjunto de decisões, de reversão custosa, que impede esse desfecho.

Definição

Arquitetura de dados é a descrição estrutural de como os dados de uma organização são adquiridos, armazenados, transformados, servidos, protegidos e operados, incluindo as decisões que produziram essa estrutura e as consequências aceitas em cada decisão. A norma ISO/IEC/IEEE 42010 estabelece que uma descrição arquitetural existe para atender às preocupações de partes interessadas identificadas; sem essas partes e suas preocupações declaradas, não há critério para julgar a arquitetura como adequada ou inadequada.

Arquitetura como registro de justificativas

Um diagrama de caixas conectadas por setas comunica topologia; a arquitetura compreende também as justificativas que produziram essa topologia. Duas organizações podem produzir diagramas idênticos por motivos opostos: uma escolheu processamento em lote porque a decisão de negócio ocorre uma vez ao dia; a outra escolheu o mesmo porque não dispunha de equipe para operar processamento contínuo. As topologias coincidem, as arquiteturas divergem, e apenas o registro das justificativas permite distinguir uma da outra quando a restrição mudar.

Essa distinção tem consequência prática direta. Quando um novo integrante propõe migrar a plataforma para processamento em tempo real, a resposta adequada é: a decisão de operar em lote foi registrada no ADR-ARQ-02, cuja premissa era a inexistência de decisão de negócio, além do antifraude, sensível a latência inferior a quinze minutos; se essa premissa deixou de valer, a decisão deve ser reavaliada. Com a decisão documentada, a discussão passa a examinar a validade da premissa registrada.

O caso que acompanha este material

Estudo de caso — Rede Aurora

A Rede Aurora é uma rede varejista fictícia utilizada como fio condutor de todas as seções deste material. Os dados abaixo são sintetizados para fins didáticos e não representam organização real.

  • Operação: 180 lojas físicas e um comércio eletrônico, em quatro estados.
  • Volume: aproximadamente 2,4 milhões de itens de cupom por dia, com pico de 6 milhões em datas promocionais.
  • Sistemas de origem: ponto de venda (PDV), plataforma de comércio eletrônico, sistema de gestão empresarial, programa de fidelidade e uma planilha mantida pela área de compras.
  • Consumidores: uma equipe de inteligência de negócio que produz relatórios diários, dois cientistas de dados que treinam modelos de previsão de demanda, e a diretoria comercial.
  • Restrição declarada: a decisão de reposição de estoque ocorre uma vez por dia, às 7h; a decisão de bloqueio de fraude em pagamento ocorre em segundos.

Cada seção deste material aplica seu conteúdo a esse caso. Ao final, a Seção 10 consolida a arquitetura completa da Rede Aurora, com as decisões justificadas.

Como percorrer este material

O material está organizado em quatorze seções, com tempo estimado indicado ao início de cada uma e no sumário lateral. A leitura integral demanda aproximadamente noventa minutos. O encontro presencial desta aula é integralmente dedicado à Ponderada em Sala, atividade avaliativa individual, manuscrita e sem consulta, que pede a reconstrução do cubo do próprio grupo e do caminho das bases de origem do parceiro até ele. Este material constitui o estudo preparatório dessa atividade. As seções 2 a 7 tratam dos seis temas conceituais da arquitetura de dados e encerram-se com checklist de aplicação; as seções 8 a 11 aprofundam o tema; a Seção 12 propõe um exercício preparatório de autoverificação, não entregue; as seções 13 e 14 reúnem glossário e referências.

Quatro exercícios resolvidos estão distribuídos ao longo do texto. A resolução permanece recolhida por padrão, e recomenda-se formular a própria resposta antes de expandi-la, pois o exercício perde a função diagnóstica quando a resolução é lida primeiro. Cada diagrama introduz distinção que o texto não enuncia integralmente, e a leitura que os ignora perde parte do argumento.

Onde esta aula se encaixa no módulo

As aulas anteriores trataram da modelagem dimensional: grão, tabelas de fato, dimensões, esquemas estrela e floco de neve. Modelagem responde à pergunta como os dados devem ser organizados para serem consultados. Arquitetura responde a uma pergunta anterior e mais ampla: por onde os dados entram, onde repousam, quem os transforma, quem os consome, quem responde quando falham e o que acontece quando a estrutura precisa mudar. Um modelo dimensional correto, inserido em arquitetura sem contratos, responsáveis e plano de recuperação, continua sujeito a produzir relatórios incorretos.

Erro comum

Escolher o padrão antes de conhecer a restrição. A adoção de tecnologia motivada por difusão de mercado, sem exigência declarada que a justifique, produz custo de operação sem ganho de decisão.

2. Requisitos arquiteturais: comece pelas decisões

⏱ 9 minutos

Arquitetura responde a restrições. Enquanto as restrições permanecerem enunciadas em termos qualitativos — muitos dados, precisa ser rápido, não pode cair —, não existe critério para escolher entre alternativas, porque qualquer alternativa as satisfaz retoricamente. O primeiro trabalho arquitetural consiste em converter adjetivos em números.

As oito dimensões de restrição

DimensãoPergunta que a torna mensurávelExemplo na Rede Aurora
VolumeQuantos registros por dia, com que tamanho médio, e qual a taxa de crescimento anual?2,4 milhões de itens/dia; pico de 6 milhões; crescimento de 18% ao ano.
VelocidadeQual o intervalo máximo aceitável entre o fato ocorrer e o dado ficar disponível?15 minutos após o fechamento do caixa para o BI; 2 segundos para antifraude.
VariedadeQuantos formatos distintos e quantos sistemas de origem, com que estabilidade de esquema?Cinco origens; uma delas é planilha com esquema instável.
CriticidadeQue decisão de negócio para se o dado ficar indisponível, e qual o prejuízo por hora?A reposição diária para; a fraude deixa de ser bloqueada em tempo real.
RetençãoPor quanto tempo cada classe de dado deve ser mantida, e o que ocorre depois?Cupom fiscal por 5 anos por exigência fiscal; dado pessoal do fidelidade por 2 anos.
ConformidadeQue dados são pessoais ou sensíveis, e que base legal autoriza cada uso?CPF e histórico de compra do fidelidade, sob a LGPD.
OrçamentoQual o custo mensal aceitável de infraestrutura, licenças e pessoal de operação?Limite declarado de custo mensal e uma pessoa dedicada à operação.
ConsumidoresQuem consulta, com que ferramenta, com que competência técnica e com que frequência?BI com ferramenta visual; ciência de dados com Python e acesso a dado granular.

A última dimensão é a mais frequentemente omitida e a que mais determina o desenho. Uma plataforma cujos consumidores são analistas de negócio com ferramenta visual exige uma camada semântica estável, com métricas nomeadas e pré-agregadas. Uma plataforma cujos consumidores são cientistas de dados exige acesso ao dado granular, inclusive ao registro bruto anterior à limpeza, porque a limpeza descarta exatamente os desvios que interessam ao modelo. A Rede Aurora possui os dois perfis, e essa coexistência justificará o padrão adotado na Seção 4.

Do requisito à decisão: o funil arquitetural

Funil que converte restrições em decisões arquiteturais registradas Diagrama em quatro estágios: restrições qualitativas são convertidas em restrições numéricas, que geram alternativas comparáveis, das quais uma é escolhida e registrada em ADR com a alternativa descartada e a consequência aceita. 1. Enunciado vago “muitos dados” “precisa ser rápido” “não pode cair” insuficiente para decidir 2. Restrição numérica 2,4 M itens/dia pico 6 M disponível em 15 min retenção 5 anos RPO 1 h · RTO 4 h agora é verificável 3. Alternativas A. Warehouse fechado B. Data lake puro C. Lakehouse D. Data mesh comparáveis entre si 4. Decisão em ADR escolha: C descartada: A (esquema fixo) consequência: catálogo e compactação com dono reavaliável no futuro A qualidade da decisão no estágio 4 é limitada pela precisão obtida no estágio 2. Saltar do estágio 1 para o 4 produz escolha fundada em preferência.
Figura 1. O funil arquitetural. Cada estágio só é legítimo se o anterior estiver completo; a ausência do estágio 2 torna o estágio 3 uma lista de preferências e o estágio 4, uma justificativa construída após a escolha.

Requisitos não funcionais verificáveis

Um requisito não funcional exige três componentes para ser verificável: uma métrica, um limite numérico e um instrumento de medição. A ausência de qualquer um deles impede a construção de um cenário de aceite, e um requisito sem cenário de aceite não é passível de reprovação e, por isso, não restringe a implementação.

Não verificável “A plataforma deve ser rápida e confiável, com alta disponibilidade dos dados de vendas.”

Não há métrica, limite nem instrumento. Qualquer implementação pode ser declarada conforme.
Verificável “RNF-003 — O dado de venda deve estar disponível na camada de consumo em até 15 minutos após o fechamento da origem, medido pela diferença entre o carimbo de tempo do evento e o de inserção na camada gold, apurado no percentil 95 da janela diária.”

Exercício resolvido 2.1 — converter enunciado em restrição

A diretoria da Rede Aurora afirma: “precisamos saber as vendas em tempo real”. Converta esse enunciado em restrição verificável, ou demonstre que ele não se sustenta.

Ver resolução

O procedimento consiste em perguntar qual decisão muda em função da latência. Ao investigar, verifica-se que a diretoria consulta o painel de vendas uma vez ao dia, pela manhã, e que a decisão associada — ajuste de reposição — é executada às 7h, uma vez por dia.

A latência exigida pela decisão é, portanto, da ordem de horas. O enunciado original não se sustenta como requisito de tempo real. A restrição verificável correspondente é: dado de venda do dia anterior disponível até as 6h30, no percentil 95 dos dias úteis.

Observe-se que existe, na mesma organização, uma decisão genuinamente sensível a segundos: o bloqueio de transação fraudulenta. A conclusão correta é que a baixa latência é exigida por um caso de uso específico, e o custo de operá-la deve incidir apenas sobre esse caso, preservando o restante da plataforma.

Checklist de aplicação
  • Escreva as restrições em números: volume, latência, retenção, orçamento.
  • Identifique a decisão de negócio que a plataforma precisa sustentar.
  • Descarte explicitamente ao menos uma alternativa, com o motivo registrado.

3. Camadas e responsabilidades

⏱ 11 minutos

A estruturação em camadas é o mecanismo pelo qual uma plataforma de dados isola mudanças. Cada camada recebe um contrato de entrada, um contrato de saída, um responsável nomeado e uma política de qualidade declarada. Quando uma origem altera o nome de um campo, a mudança é absorvida na fronteira de ingestão e não se propaga até o relatório da diretoria — desde que as camadas tenham responsabilidades distintas.

As cinco camadas canônicas

As cinco camadas de uma plataforma de dados com contrato, dono e política de qualidade Fluxo horizontal da esquerda para a direita passando por ingestão, armazenamento bruto, dados tratados, camada de serviço e consumo. Abaixo de cada camada indicam-se contrato de saída, responsável e política de qualidade. Uma seta tracejada de baixo indica a proibição de salto de camada. Ingestão extrai da origem sem transformar Bruto cópia fiel e imutável particionada por data Tratado tipado, deduplicado regras de qualidade Serviço modelo dimensional métricas nomeadas Consumo BI, modelos, APIs nunca escreve CONTRATO DE SAÍDA arquivo bruto + metadado de carga esquema declarado imutável e datado tabela tipada chave única garantida fato e dimensão métrica versionada consulta somente leitura DONO Eng. de dados Eng. de dados Eng. analítica Eng. analítica Área de negócio POLÍTICA DE QUALIDADE carga completa nada é descartado testes de validade métrica reconciliada uso monitorado salto de camada: proibido
Figura 2. Camadas com contrato, dono e política de qualidade. A linha tracejada representa o acesso direto do consumo ao dado bruto, prática que anula o isolamento pretendido pela estruturação em camadas.

A nomenclatura bronze, prata e ouro, difundida por plataformas de lakehouse, corresponde às camadas de bruto, tratado e serviço. A escolha do vocabulário é indiferente; o que importa é a existência de contratos distintos. Uma organização que possui três esquemas de banco chamados bronze, silver e gold contendo as mesmas colunas, com as mesmas regras e o mesmo responsável, possui, na prática, uma camada e duas cópias, com o custo de armazenamento triplicado e nenhum ganho de isolamento.

Por que a camada bruta deve ser imutável

A camada de armazenamento bruto guarda a cópia fiel do que a origem entregou, sem correção, sem tipagem e sem descarte. O custo de armazenamento dessa cópia justifica-se no primeiro incidente de regra incorreta. Quando se descobre, três meses após a implantação, que a regra de conversão de moeda estava incorreta, a existência do dado bruto permite reprocessar todo o histórico com a regra corrigida. Sua ausência torna o erro permanente, porque a informação original foi destruída no momento da transformação. A imutabilidade admite uma exceção legal: o pedido de eliminação de dados pessoais por titular, previsto na LGPD, que a Seção 6 trata por descarte criptográfico da chave do titular.

Aprofundamento

A imutabilidade da camada bruta implementa, no domínio de dados, o mesmo princípio que o log de transações implementa em bancos de dados e que o histórico de commits implementa em sistemas de controle de versão: preservar a sequência de fatos permite reconstruir qualquer estado derivado. O estado atual é uma projeção do histórico; se apenas a projeção é armazenada, toda revisão da regra de projeção torna-se irrealizável.

O contrato de dados na prática

Contrato de dados é a especificação, acordada entre produtor e consumidor, do formato, da semântica e das garantias de qualidade de um conjunto de dados. Sua função é converter uma expectativa implícita em obrigação verificável: sem contrato, o produtor não sabe o que pode alterar sem causar dano, e o consumidor não sabe com o que pode contar.

O contrato deve ser artefato versionado no repositório. O exemplo abaixo especifica a saída da camada tratada para a tabela de itens de venda da Rede Aurora.

# contratos/silver.item_venda.yaml
nome: silver.item_venda
versao: "2.1.0"
dono: engenharia-de-dados
origem: bronze.cupom_item
particionamento: data_particao # diário; habilita reprocessamento idempotente

chave_unica: [id_cupom, sequencia_item]

campos:
  - nome: id_cupom
    tipo: string
    obrigatorio: true
  - nome: valor_total_com_imposto
    tipo: decimal(12,2)
    obrigatorio: true
    semantica: "valor do item incluindo tributos incidentes"
  - nome: id_cliente_substituto
    tipo: string
    obrigatorio: false
    classificacao: pseudonimizado # CPF não trafega a partir desta camada

garantias:
  - regra: unicidade(chave_unica)
    acao_se_violada: rejeitar_carga
  - regra: valor_total_com_imposto >= 0
    acao_se_violada: rejeitar_carga
  - regra: completude(id_cupom) == 100%
    acao_se_violada: rejeitar_carga
  - regra: contagem_diaria >= 0.8 * media_movel_7d
    acao_se_violada: alertar_dono # queda abrupta indica falha na origem

evolucao:
  politica: retrocompatibilidade_obrigatoria
  prazo_de_transicao_dias: 30

Três elementos desse contrato merecem destaque. O campo semantica registra o significado por extenso, o que torna detectável a alteração descrita ao final da Seção 7 — mudar o significado mantendo nome e tipo. O par regra e acao_se_violada distingue as violações que interrompem a carga daquelas que apenas notificam: rejeitar a carga por queda de volume seria excessivo, pois um feriado produz legitimamente menos cupons, mas ignorá-la impediria detectar a falha silenciosa de uma origem. E o bloco evolucao declara antecipadamente a política, de modo que a admissibilidade de uma mudança seja discutida antes que ela ocorra.

A camada de serviço e o vocabulário do negócio

A camada de serviço é onde reside o modelo dimensional estudado nas aulas anteriores, e é também onde as métricas recebem definição única. Se receita líquida for calculada dentro de cada relatório, existirão tantas definições quantos forem os relatórios, e a divergência entre elas será descoberta em reunião de diretoria. Definir a métrica uma vez, na camada de serviço, com versionamento, é o que permite responder à pergunta por que os dois números diferem antes que ela seja feita.

Aplicação — Rede Aurora

A área de compras mantém uma planilha com o custo negociado por fornecedor. Trata-se de origem de esquema instável: colunas são renomeadas sem aviso e linhas de totalização aparecem no meio dos dados.

Decisão adotada: a planilha é ingerida sem transformação para a camada bruta, preservando inclusive as linhas de totalização. A remoção dessas linhas e a normalização dos nomes de coluna ocorrem na transição para a camada tratada, onde um teste de validade rejeita a carga caso o número de colunas divirja do esquema declarado. A área de compras é nomeada dona do contrato de entrada; a engenharia de dados é dona do contrato de saída da camada tratada.

Consequência aceita: quando a planilha muda de formato, a carga falha de maneira visível na fronteira, em vez de propagar valores incorretos silenciosamente até o relatório de margem.

Exercício resolvido 3.1 — diagnosticar camadas falsas

Uma equipe apresenta a seguinte arquitetura: raw.vendas, stg.vendas e dw.vendas, todas com as mesmas 42 colunas, carregadas pela mesma rotina, mantidas pela mesma pessoa. Qual o diagnóstico?

Ver resolução

Não existem três camadas. A identidade de colunas indica ausência de transformação entre os estágios; a identidade de rotina indica ausência de contratos independentes; a identidade de responsável indica ausência de fronteira organizacional. O arranjo constitui uma camada única replicada três vezes.

O custo é imediato: triplica-se o armazenamento e o tempo de carga, e mantém-se a propagação direta de qualquer alteração da origem até o consumo. A correção consiste em definir o que cada transição deve garantir — por exemplo, tipagem e deduplicação entre raw e stg, e conformação dimensional entre stg e dw — e em declarar o teste que verifica cada garantia. Se nenhuma garantia distinta puder ser enunciada para uma transição, a camada correspondente deve ser eliminada.

Erro comum

Camadas que só diferem no nome do esquema. Sem contrato distinto, trata-se de uma camada única com três cópias.

Checklist de aplicação
  • Dê a cada camada um contrato de entrada e de saída.
  • Nomeie o responsável por qualidade e por incidente.
  • Proíba salto de camada: o consumo não lê o dado bruto.

4. Padrões de plataforma

⏱ 8 minutos

Os padrões descritos a seguir são respostas históricas a restrições distintas. Nenhum deles é sucessor universal do anterior, ainda que a literatura comercial frequentemente os apresente em ordem cronológica sugerindo progresso. O critério de escolha é a correspondência entre o que o padrão resolve e o que a organização declarou como restrição.

Comparação estruturada

PadrãoRestrição que resolveCusto que introduzPressuposto organizacional
Data warehouse Consulta analítica rápida e consistente sobre dados estruturados, com métricas reconciliadas. Esquema definido antes da carga; dado não estruturado fica fora; alteração de modelo é lenta. Requisitos analíticos relativamente estáveis e conhecidos.
Data lake Armazenamento barato de grande volume e de qualquer formato, com esquema aplicado na leitura. Ausência de garantias transacionais e de esquema; degrada-se em repositório inexplorável sem catálogo. Equipe capaz de impor governança sem que a tecnologia a imponha.
Lakehouse Coexistência de consumo analítico estruturado e acesso granular para ciência de dados sobre o mesmo armazenamento. Dependência de catálogo, de formato tabular transacional e de rotina de compactação de arquivos. Equipe de engenharia capaz de operar o catálogo e a manutenção física.
Hub-and-spoke Necessidade de repositório central conciliado com áreas que exigem autonomia de modelagem. Risco de divergência entre o centro e as pontas; exige conformação de dimensões. Autoridade central reconhecida para arbitrar definições conflitantes.
Data mesh Gargalo de uma equipe central única atendendo muitos domínios com conhecimento que ela não possui. Duplicação de esforço; exige plataforma de autoatendimento e governança federada. Times de domínio com autonomia real, orçamento próprio e capacidade de operar seus dados.
Critério de decisão

A coluna determinante é a última. Data mesh é, antes de uma decisão tecnológica, uma decisão de estrutura organizacional: transfere a responsabilidade pelo dado aos times que o produzem. Uma organização que adota a topologia sem transferir a responsabilidade obtém os custos da descentralização somados aos gargalos da centralização.

Topologias comparadas

Comparação entre topologia centralizada, hub-and-spoke e data mesh Três esquemas lado a lado. À esquerda, quatro origens convergem para um repositório central único que serve todos os consumidores. Ao centro, um repositório central alimenta repositórios departamentais. À direita, cada domínio publica seu próprio produto de dados sobre uma plataforma comum de autoatendimento. Centralizado PDV ERP Web CRM repositório central BI DS uma equipe, um gargalo, definição única Hub-and-spoke PDV ERP hub conformado mart comercial mart logística mart finanças autonomia departamental com dimensão conformada Data mesh domínio Vendas publica produto domínio Estoque publica produto domínio Fidelidade publica produto plataforma de autoatendimento + governança federada BI DS exige times de domínio com autonomia e orçamento reais
Figura 3. Três topologias e seus pressupostos. A topologia da direita transfere a responsabilidade pelo dado ao domínio que o produz; adotá-la sem essa transferência preserva o gargalo central e acrescenta o custo da distribuição.

O custo de governança e por que ele é subestimado

A comparação entre padrões costuma restringir-se ao custo de infraestrutura, que é visível, mensurável e cotado por fornecedores. O custo de governança é invisível na proposta e dominante na operação, pois consiste majoritariamente em tempo de pessoas. Ao avaliar um padrão candidato, devem ser estimados ao menos cinco itens recorrentes.

  • Catalogação. Registro e manutenção da descrição de cada conjunto de dados publicado, incluindo significado dos campos e responsável.
  • Manutenção física. Compactação de arquivos, reorganização de partições e expurgo de versões antigas — atividades que não produzem valor visível e cuja omissão degrada a consulta progressivamente.
  • Revisão de acessos. Verificação periódica de quem detém quais privilégios, com revogação do que deixou de ser necessário.
  • Conciliação de definições. Arbitragem entre áreas que calculam a mesma métrica de modos distintos, atividade tanto mais frequente quanto mais descentralizado for o padrão.
  • Resposta a incidentes. Tempo dedicado à investigação e correção de falhas de carga e de qualidade, proporcional ao número de componentes independentes.

A relevância dessa estimativa aparece na comparação entre padrões centralizados e distribuídos. A distribuição reduz o gargalo da equipe central e aumenta os itens de conciliação e de resposta a incidentes, porque multiplica o número de produtores independentes. Uma organização com uma única equipe de dados que adota topologia distribuída mantém o gargalo e acrescenta custo de coordenação entre produtores independentes que ela não possui.

O princípio da simplicidade suficiente

Entre padrões que atendem às restrições declaradas, deve-se adotar o mais simples. A justificativa é operacional: cada elemento adicional da plataforma consome capacidade de operação, e a capacidade de operação é o recurso mais escasso em equipes pequenas. Uma arquitetura que a equipe não consegue operar em regime de incidente é, do ponto de vista da disponibilidade, pior do que uma arquitetura menos sofisticada que ela domina.

Aplicação — Rede Aurora

Alternativas consideradas. (A) Data warehouse fechado; (B) data lake puro; (C) lakehouse; (D) data mesh.

Descarte de A: a exigência de esquema fixo antes da carga é incompatível com a planilha de compras, de esquema instável, e com o acesso granular exigido pelos cientistas de dados.

Descarte de B: a ausência de garantias transacionais impede o reprocessamento seguro de partições, exigido pelo cenário de aceite da recuperação.

Descarte de D: a organização possui uma única equipe de dados, sem times de domínio com orçamento próprio; o pressuposto organizacional do padrão não se verifica.

Escolha: C, lakehouse. Atende à coexistência dos dois perfis de consumo sobre o mesmo armazenamento. Consequência aceita: dependência de catálogo e de rotina periódica de compactação de arquivos pequenos, cuja responsabilidade deve ser atribuída nominalmente.

Erro comum

Adotar data mesh sem times de domínio com autonomia real. O padrão pressupõe estrutura organizacional compatível, além da tecnologia.

Checklist de aplicação
  • Liste a restrição concreta que cada padrão candidato resolve.
  • Estime o custo de governança, não apenas o de infraestrutura.
  • Prefira o padrão mais simples que atenda às restrições.

5. Batch e streaming

⏱ 11 minutos

O processamento em lote agrupa registros por intervalo de tempo e os processa em conjunto. O processamento contínuo trata cada evento à medida que ocorre. A diferença aparente é de latência; a diferença substantiva é de complexidade operacional, e é esta que determina o custo total.

O que cada modelo simplifica e o que complica

AspectoLoteContínuo
Latência típicaDe minutos a horas.De milissegundos a segundos.
Correção de erroReexecuta-se a janela inteira; o estado final é determinístico.Exige reprocessamento do fluxo com controle de posição e tratamento de estado parcial.
Dado atrasadoEntra na próxima execução sem tratamento especial.Exige política explícita de janela e de tolerância a atraso.
Custo de infraestruturaRecursos alocados apenas durante a execução.Recursos permanentemente alocados, mesmo em períodos ociosos.
Custo de operaçãoFalha é detectada e corrigida na janela seguinte.Falha exige resposta imediata; exige plantão e observabilidade contínua.
DepuraçãoEntrada reproduzível: a mesma janela pode ser reexecutada.Estado efêmero: reproduzir a condição exige registro do fluxo.

O teste da decisão

A pergunta que determina a escolha é qual decisão muda por saber o dado mais cedo. Se nenhuma ação humana ou automática ocorre entre a chegada do dado às 7h e a sua chegada às 7h15, os quinze minutos de diferença não possuem valor econômico, e o custo de obtê-los é integralmente desperdiçado.

Relação entre latência exigida e custo operacional, com faixa de valor real da decisão Gráfico de linha decrescente da esquerda para a direita mostrando que o custo operacional cresce acentuadamente à medida que a latência exigida diminui. Marcam-se três casos de uso da Rede Aurora: relatório diário em lote, painel de reposição em micro-lote e antifraude em processamento contínuo. Latência exigida (menor para a direita) Custo operacional 24 h 1 h 15 min 1 min 1 s custo operacional lote micro-lote contínuo Relatório fiscal diário decisão ocorre 1×/dia Painel de reposição decisão ocorre às 7h Antifraude no pagamento decisão ocorre em segundos
Figura 4. Custo operacional em função da latência exigida. A adoção de processamento contínuo justifica-se apenas para os casos de uso situados na faixa da direita; aplicá-lo a toda a plataforma desloca todos os casos para essa faixa de custo sem alterar as decisões que eles sustentam.

Como dimensionar a janela do lote

Definida a opção pelo processamento em lote, resta escolher a frequência de execução. A escolha é frequentemente arbitrada por hábito — toda madrugada —, quando decorre de três restrições verificáveis.

A primeira é o momento da decisão. Se a reposição de estoque é decidida às 7h, a carga deve concluir antes desse horário, com margem suficiente para uma reexecução em caso de falha. Uma carga que termina às 6h55 e falha uma vez por mês descumpre o requisito em todos os meses.

A segunda é a disponibilidade da origem. O sistema de ponto de venda encerra o movimento das lojas em horários distintos, e extrair antes do fechamento da última loja produz dados incompletos que serão silenciosamente tratados como completos. A janela precisa iniciar após a garantia de fechamento, não após o horário nominal.

A terceira é a duração da execução somada à margem de recuperação. Se a carga leva 40 minutos e o RTO declarado é de 4 horas, iniciar às 3h oferece margem para duas tentativas antes das 7h. Iniciar às 6h não oferece nenhuma, e o RTO declarado torna-se inatingível por construção — independentemente da qualidade da implementação.

Regra derivada

O horário de início da janela deve satisfazer: início ≥ fechamento da origem e início + (duração × tentativas previstas) ≤ momento da decisão. Quando as duas condições são incompatíveis, a restrição precisa ser renegociada explicitamente — antecipar o fechamento da origem, reduzir a duração ou postergar a decisão. Nenhuma das três é escolha da engenharia isoladamente.

Adoção por caso de uso

A conclusão prática é que lote e processamento contínuo coexistem na mesma arquitetura. A escolha do regime de processamento é feita para cada caso de uso, de modo que a mesma plataforma pode abrigar os dois. A Rede Aurora opera o antifraude em fluxo contínuo, com uma janela de estado de poucos minutos, e mantém todo o restante em lote horário e diário. O evento de pagamento é gravado no barramento uma única vez e consumido por dois caminhos independentes: o consumidor contínuo, que decide o bloqueio, e o consumidor em lote, que alimenta a camada bruta.

Aprofundamento — arquiteturas lambda e kappa

A arquitetura lambda mantém dois caminhos de processamento sobre os mesmos dados: um caminho em lote, que produz o resultado correto com atraso, e um caminho contínuo, que produz resultado aproximado imediatamente; o consumo combina ambos. Seu custo característico é a manutenção de duas implementações da mesma regra de negócio, com risco permanente de divergência entre elas.

A arquitetura kappa elimina o caminho em lote e trata o histórico como reprodução do fluxo desde o início, mantendo uma única implementação. Exige que o barramento retenha o histórico por período suficiente e que o processamento seja capaz de reprocessar em velocidade muito superior à de produção. A escolha entre ambas depende de a organização conseguir sustentar duas implementações ou um barramento com retenção longa.

Exercício resolvido 5.1 — justificar ou recusar a migração

A área de tecnologia propõe migrar toda a ingestão da Rede Aurora para processamento contínuo, argumentando que a plataforma se tornará tempo real. Elabore a resposta arquitetural.

Ver resolução

A resposta deve identificar, para cada consumidor, a decisão sustentada e a latência que ela exige. Para o relatório fiscal, a decisão é diária, uma vez ao dia; para o painel de reposição, diária às 7h; para o antifraude, imediata.

Apenas o terceiro consumidor exige latência de segundos, e ele já opera em fluxo contínuo. A migração dos dois primeiros elevaria o custo de infraestrutura, por manter recursos permanentemente alocados, e o custo de operação, por exigir resposta imediata a falhas que hoje são corrigidas na janela seguinte — sem alterar nenhuma decisão de negócio.

A proposta deve, portanto, ser recusada em sua forma geral. A formulação aceitável seria: migrar para processamento contínuo os casos de uso cuja decisão associada ocorra em intervalo inferior a X, com X derivado das restrições declaradas na Seção 2. Registra-se a recusa em ADR, com a premissa explícita, de modo que a decisão possa ser reaberta caso surja um caso de uso sensível a latência.

Erro comum

Migrar toda a plataforma para processamento contínuo por uma latência que nenhum consumidor utiliza. A complexidade operacional aumenta sem ganho de decisão.

Checklist de aplicação
  • Pergunte se alguma decisão muda por saber o dado em segundos.
  • Compare o custo operacional, não apenas o de processamento.
  • Adote processamento contínuo por caso de uso, não para a plataforma inteira.

6. Governança e segurança

⏱ 10 minutos

Governança de dados é o conjunto de processos que estabelece quem decide o quê a respeito dos dados, sob quais regras e com qual responsabilidade. O DAMA-DMBOK a posiciona no centro das demais funções de gestão de dados, e não como atividade posterior, porque cada função — qualidade, segurança, metadados, arquitetura — depende de uma atribuição de autoridade previamente definida.

Os componentes exigidos desde o desenho

ComponenteFunçãoConsequência da ausência
CatálogoRegistrar quais conjuntos de dados existem, o que significam e onde residem.Recriação de conjuntos já existentes e consultas sobre tabelas obsoletas.
PropriedadeNomear quem responde pela qualidade e pelos incidentes de cada conjunto.Incidente sem responsável designado permanece aberto indefinidamente.
ClassificaçãoRotular o dado quanto à sensibilidade antes de qualquer movimentação.Dado pessoal replicado para ambientes sem controle de acesso adequado.
LinhagemRegistrar a origem de cada campo e as transformações aplicadas.Impossibilidade de avaliar o impacto de uma alteração na origem.
RetençãoDefinir por quanto tempo cada classe é mantida e como é descartada.Acúmulo indefinido, com custo crescente e exposição desnecessária.
MascaramentoReduzir a identificabilidade em ambientes que não exigem o dado original.Base de desenvolvimento contendo dados pessoais reais.
Controle de acessoConceder o privilégio mínimo necessário, por perfil e por finalidade.Acesso amplo concedido por conveniência e nunca revisto.
Resposta a incidenteDefinir o procedimento de detecção, contenção, notificação e correção.Improvisação sob pressão, com prazos legais descumpridos.

Linhagem: por que ela é condição de avaliação de impacto

Linhagem é o registro verificável do percurso de um dado desde a origem até o consumo, incluindo as transformações intermediárias. Sua utilidade concentra-se em dois momentos. No primeiro, quando uma origem anuncia alteração de esquema, a linhagem responde a quais tabelas e relatórios essa alteração atinge. No segundo, quando um número é contestado, a linhagem permite percorrer o caminho inverso até o registro de origem e identificar em que transformação a divergência foi introduzida.

flowchart LR PDV[("PDV
cupom_item")] --> BR["bronze.cupom_item
cópia fiel"] ERP[("ERP
produto")] --> BP["bronze.produto"] PL[("Planilha
custo negociado")] --> BC["bronze.custo"] BR --> SI["silver.item_venda
tipado, deduplicado"] BP --> SP["silver.produto"] BC --> SC["silver.custo"] SI --> FV["gold.fato_venda"] SP --> DP["gold.dim_produto"] SC --> FV FV --> M1["métrica
receita_liquida"] FV --> M2["métrica
margem_bruta"] DP --> M2 M1 --> BI["Painel comercial"] M2 --> BI SI --> DS["Modelo de previsão
de demanda"] classDef org fill:#fee2e2,stroke:#dc2626,color:#7f1d1d; classDef brz fill:#ffedd5,stroke:#f59e0b,color:#7c2d12; classDef slv fill:#dbeafe,stroke:#3b82f6,color:#1e3a8a; classDef gld fill:#ede9fe,stroke:#8b5cf6,color:#4c1d95; classDef con fill:#dcfce7,stroke:#22c55e,color:#14532d; class PDV,ERP,PL org; class BR,BP,BC brz; class SI,SP,SC slv; class FV,DP,M1,M2 gld; class BI,DS con;

O grafo acima permite responder, sem inspeção manual de código, a duas perguntas de operação. Primeira: se a planilha de custo deixar de ser entregue, quais consumidores são afetados? O caminho indica que margem_bruta e o painel comercial degradam, enquanto o modelo de previsão de demanda permanece íntegro, pois deriva de silver.item_venda. Segunda: o modelo de previsão consome a camada tratada e não a de serviço, o que constitui exceção deliberada à regra de proibição de salto de camada — deve, portanto, estar registrada em ADR, com a justificativa de que o modelo exige granularidade anterior à agregação dimensional.

Proteção de dados pessoais

A Lei Geral de Proteção de Dados Pessoais (Lei nº 13.709/2018) impõe à arquitetura exigências que não podem ser satisfeitas posteriormente sem reconstrução. Entre elas, a finalidade declarada para cada tratamento, a minimização — coletar e reter apenas o necessário à finalidade —, e a capacidade de localizar e eliminar os dados de um titular mediante solicitação. Esta última exigência é decisiva: uma plataforma que replica identificadores pessoais por dezenas de tabelas derivadas, sem linhagem, não consegue atender a um pedido de eliminação sem varredura manual.

Aplicação — Rede Aurora

Classificação. O CPF e o histórico individual de compra do programa de fidelidade são classificados como dados pessoais; o cupom fiscal sem vínculo com titular é classificado como dado operacional.

Decisão de desenho. Na ingestão, antes da gravação na camada bruta, o CPF e os demais campos pessoais são cifrados com uma chave própria de cada titular, mantida em cofre de chaves com acesso restrito e registro de consulta. Na transição da camada bruta para a tratada, o CPF é substituído por um identificador substituto, e a correspondência entre ambos é mantida em uma única tabela, também restrita. As tabelas derivadas passam a referenciar apenas o identificador substituto.

Consequência. A eliminação dos dados de um titular exige o descarte da chave do titular (crypto-shredding), que torna ilegíveis as cópias cifradas preservadas na camada bruta sem regravar seus arquivos, a remoção da linha na tabela de correspondência e a reexecução das rotinas de agregação afetadas, em vez de varredura por dezenas de tabelas. Essa é a exceção legal à imutabilidade da camada bruta: o arquivo permanece inalterado, mas o dado pessoal nele contido deixa de ser recuperável. O ambiente de desenvolvimento recebe apenas o identificador substituto, o que elimina a presença de dado pessoal fora de produção.

Exercício resolvido 6.1 — atender a um pedido de eliminação

Um cliente do programa de fidelidade solicita a eliminação de seus dados pessoais. Descreva o que a arquitetura da Rede Aurora precisa oferecer para que o pedido seja atendido, e o que ocorreria em uma plataforma sem essas propriedades.

Ver resolução

São necessárias quatro propriedades. A classificação identifica quais conjuntos contêm dados pessoais, evitando varredura exaustiva. A linhagem indica quais tabelas derivadas incorporaram esses dados. A cifragem por titular na ingestão permite eliminar o dado pessoal da camada bruta imutável pelo descarte da chave. A pseudonimização na fronteira concentra a correspondência entre pessoa e identificador em uma única tabela.

Com elas, o procedimento reduz-se a descartar a chave do titular no cofre, remover a linha correspondente na tabela de correspondência e reexecutar as agregações afetadas, indicadas pela linhagem. Os registros de venda permanecem, agora definitivamente desvinculados do titular, o que preserva a obrigação fiscal de retenção por cinco anos sem manter o vínculo pessoal.

Sem essas propriedades, seria necessário inspecionar o conteúdo de todas as tabelas em busca de identificadores, sem garantia de completude, e o resultado não seria demonstrável perante uma fiscalização. Observe-se que a exigência de eliminação convive com a de retenção fiscal: a arquitetura precisa separar o dado da transação do vínculo com a pessoa, pois eliminar a transação violaria outra obrigação legal.

Erro comum

Governança tratada como fase posterior. Catalogar mil tabelas já existentes custa mais do que catalogar a primeira no momento de sua criação, e a classificação retroativa exige inspeção de conteúdo que a classificação prévia dispensa.

Checklist de aplicação
  • Classifique os dados sensíveis antes de mover qualquer byte.
  • Garanta linhagem verificável da origem ao consumo.
  • Defina retenção e descarte, não apenas acumulação.

7. Resiliência e evolução

⏱ 13 minutos

Plataformas de dados estão sujeitas a falhas: origens ficam indisponíveis, cargas são interrompidas pela metade, registros chegam duplicados, esquemas mudam sem aviso. A qualidade arquitetural mede-se pela previsibilidade do comportamento quando as falhas ocorrem.

Idempotência como pré-condição do reprocessamento

Uma operação é idempotente quando sua aplicação repetida produz o mesmo resultado de uma única aplicação. Em ingestão de dados, isso significa que reexecutar a carga do dia 12 deve deixar o sistema no mesmo estado em que ficaria se ela tivesse executado uma única vez com sucesso. A propriedade não é automática: uma rotina que insere registros incondicionalmente duplica-os a cada reexecução.

Não idempotente INSERT INTO fato_venda SELECT * FROM staging;

A reexecução após falha parcial duplica os registros já inseridos. O total de vendas passa a divergir da origem, e a correção exige identificar manualmente o que foi inserido duas vezes.
Idempotente DELETE FROM fato_venda WHERE data_particao = '2026-08-12'; INSERT INTO fato_venda SELECT * FROM staging WHERE data_particao = '2026-08-12';

A substituição da partição inteira produz sempre o mesmo estado final, independentemente do número de execuções.

A estratégia de substituição de partição é a mais simples e deve ser preferida quando a janela de reprocessamento é delimitável por data. Quando não é — por exemplo, em correções que afetam registros arbitrários —, a alternativa é a operação de mesclagem com chave de negócio declarada, que atualiza o registro existente em vez de inserir um novo. Em ambos os casos, a condição necessária é a existência de uma chave que identifique inequivocamente o registro na origem.

A operação de mesclagem exige a declaração explícita da chave de negócio. O exemplo a seguir aplica-se à camada tratada da Rede Aurora e é idempotente por construção: executá-la duas vezes com a mesma entrada produz o mesmo conjunto de registros e valores, com exceção da coluna de auditoria atualizado_em.

-- Carga idempotente por mesclagem, com chave de negócio declarada.
-- Reexecutar esta instrução não duplica registros; apenas atualizado_em muda.
MERGE INTO silver.item_venda AS destino
USING (
    -- A deduplicação na origem é obrigatória: MERGE falha ou produz
    -- resultado não determinístico se a fonte trouxer a chave repetida.
    -- QUALIFY não é ANSI; em PostgreSQL, filtrar ordem = 1 em subconsulta.
    SELECT id_cupom, sequencia_item, valor_total_com_imposto, data_particao,
           ROW_NUMBER() OVER (
             PARTITION BY id_cupom, sequencia_item
             ORDER BY extraido_em DESC
           ) AS ordem
    FROM bronze.cupom_item
    WHERE data_particao = '2026-08-12'
    QUALIFY ordem = 1
) AS origem
ON  destino.id_cupom      = origem.id_cupom
AND destino.sequencia_item = origem.sequencia_item

WHEN MATCHED THEN UPDATE SET
    valor_total_com_imposto = origem.valor_total_com_imposto,
    atualizado_em           = CURRENT_TIMESTAMP

WHEN NOT MATCHED THEN INSERT
    (id_cupom, sequencia_item, valor_total_com_imposto, data_particao)
VALUES
    (origem.id_cupom, origem.sequencia_item,
     origem.valor_total_com_imposto, origem.data_particao);

Duas condições sustentam a idempotência dessa instrução. A primeira é a existência de uma chave que identifique o registro na origem — sem ela, não há critério para distinguir atualização de inserção, e a operação degenera em acréscimo. A segunda é a deduplicação prévia da fonte: quando a mesma chave aparece duas vezes no conjunto de origem, o padrão SQL exige erro de cardinalidade, e os mecanismos que não o aplicam produzem resultado dependente da ordem de leitura, o que anula a propriedade que se pretendia obter.

Ordem de implantação

A idempotência deve ser garantida antes de habilitar qualquer mecanismo de reprocessamento automático. Um mecanismo de nova tentativa aplicado sobre uma rotina não idempotente converte uma falha transitória em corrupção de dados, e a corrupção é descoberta muito depois, quando o número já foi utilizado em decisão.

Fila de mensagens não processáveis

Registros que falham repetidamente no processamento não devem interromper o fluxo nem ser descartados. O destino adequado é uma fila de mensagens não processáveis, na qual permanecem íntegros, com o registro do erro que os impediu de prosseguir, disponíveis para inspeção e reprocessamento após a correção. Descartá-los produz perda silenciosa; mantê-los na fila principal produz bloqueio indefinido do fluxo.

RPO e RTO: dois números distintos

O objetivo de ponto de recuperação (RPO) declara quanto dado a organização aceita perder, medido em tempo: um RPO de uma hora significa que, após um incidente, admite-se a perda de até uma hora de dados anteriores à falha. O objetivo de tempo de recuperação (RTO) declara em quanto tempo o serviço deve voltar a operar. São grandezas independentes: uma organização pode exigir RPO baixo e tolerar RTO alto, e a recíproca.

Linha do tempo de um incidente indicando RPO antes da falha e RTO após a falha Linha do tempo horizontal com o último ponto de recuperação à esquerda, o instante da falha ao centro e a retomada da operação à direita. O intervalo entre o último ponto de recuperação e a falha corresponde ao RPO, ou seja, ao dado perdido. O intervalo entre a falha e a retomada corresponde ao RTO, ou seja, ao tempo indisponível. tempo RPO — dado perdido meta declarada: 1 hora RTO — serviço indisponível meta declarada: 4 horas último ponto de recuperação 03h00 — cópia íntegra falha 04h00 — corrupção detectada operação retomada 08h00 — dentro da meta Um RPO declarado sem teste de restauração é estimativa; o valor real só é conhecido após a primeira recuperação executada.
Figura 5. RPO e RTO em uma linha do tempo de incidente. O RPO é determinado pela frequência das cópias de segurança; o RTO, pela velocidade do procedimento de restauração. Reduzir um deles não reduz o outro.

Do diagrama decorre uma consequência de projeto frequentemente ignorada: o RPO é função da frequência com que se produzem pontos de recuperação, ao passo que o RTO é função da velocidade do procedimento de restauração. Exigir RPO de cinco minutos implica produzir pontos de recuperação a cada cinco minutos; exigir RTO de trinta minutos implica dispor de um procedimento testado que conclua nesse prazo. São investimentos distintos, e declará-los conjuntamente sem distinguir suas causas leva a dimensionamento incorreto.

Erro comum

Cópia de segurança que nunca foi restaurada. Sem teste de recuperação executado, o RTO declarado é estimativa não verificada, e a primeira verificação ocorrerá durante o incidente.

Evolução de esquema e compatibilidade

Esquemas mudam. A política de evolução deve declarar, antes da primeira mudança, quais alterações são admitidas sem coordenação com os consumidores e quais exigem versionamento e prazo de transição. A distinção baseia-se em dois conceitos: uma alteração é retrocompatível quando consumidores escritos para o esquema antigo continuam operando sobre o novo; é compatível para frente quando consumidores escritos para o esquema novo operam sobre dados no formato antigo.

AlteraçãoRetrocompatívelProcedimento exigido
Acrescentar campo opcional com valor padrãoSimImplantação direta; comunicar no catálogo.
Acrescentar campo obrigatório sem padrãoNãoIntroduzir como opcional, preencher o histórico e só então torná-lo obrigatório.
Remover campoNãoMarcar como obsoleto, verificar a linhagem, notificar consumidores e remover após o prazo declarado.
Renomear campoNãoEquivale a acrescentar e remover: manter ambos durante a transição.
Ampliar tipo (inteiro para longo)SimImplantação direta; verificar limites nos consumidores.
Restringir tipo (texto para inteiro)NãoExige nova versão da tabela e migração coordenada.
Alterar semântica sem alterar o tipoNãoMudança mais perigosa: não é detectável por validação automática. Exige novo nome de campo.
A alteração mais perigosa

A última linha da tabela merece atenção particular. Alterar o significado de valor_total de valor com imposto para valor sem imposto, mantendo nome e tipo, não é detectado por nenhuma validação de esquema. Todos os consumidores continuam operando, e todos passam a produzir números incorretos. A regra decorrente é: quando a semântica muda, o nome deve mudar.

Exercício resolvido 7.1 — projetar o reprocessamento

A carga da camada tratada da Rede Aurora falhou no dia 12, após inserir aproximadamente metade dos registros. Descreva o procedimento de correção e a propriedade arquitetural que o torna possível.

Ver resolução

O procedimento consiste em reexecutar a carga da partição correspondente ao dia 12 a partir da camada bruta, que preserva a cópia fiel da origem. Como a rotina substitui a partição inteira em vez de inserir incrementalmente, o estado final é idêntico ao de uma execução única bem-sucedida, e os registros parcialmente inseridos são eliminados pela própria substituição.

Em seguida, as tabelas da camada de serviço derivadas dessa partição são reconstruídas. A linhagem indica quais são, o que evita reconstruir a camada inteira.

Três propriedades tornam o procedimento possível: a imutabilidade da camada bruta, que preserva a entrada original; a idempotência da rotina, que garante ausência de duplicação; e o particionamento por data, que delimita o escopo do reprocessamento. A ausência de qualquer uma delas converte a correção em intervenção manual de resultado incerto.

Checklist de aplicação
  • Defina RPO e RTO por domínio e execute o teste de recuperação.
  • Garanta idempotência antes de habilitar reprocessamento.
  • Estabeleça a política de evolução de esquema e o que quebra compatibilidade.

8. RM-ODP: cinco pontos de vista sobre a mesma arquitetura

⏱ 4 minutos

O Reference Model of Open Distributed Processing (RM-ODP), normalizado como ISO/IEC 10746, estabelece que um sistema distribuído deve ser descrito por cinco pontos de vista complementares. Cada ponto de vista responde a preocupações de partes interessadas distintas, e nenhum deles é redutível aos demais. Sua utilidade em arquitetura de dados é diagnóstica: permite identificar qual aspecto do sistema permaneceu não especificado.

Ponto de vistaPergunta que respondeAplicação à plataforma da Rede Aurora
EmpresaQual o propósito, o escopo e as políticas que regem o sistema?Sustentar as decisões de reposição diária e de bloqueio de fraude; políticas de retenção fiscal de cinco anos e de tratamento de dado pessoal sob a LGPD.
InformaçãoQue informação existe, com que significado e sob que regras de integridade?Modelo dimensional da camada de serviço: fato de venda no grão de item de cupom, dimensões de produto, loja, tempo e cliente; definição única de receita líquida.
ComputaçãoEm que componentes o sistema se decompõe e quais interfaces os conectam?Rotinas de ingestão, transformação, publicação de métricas e consumidores; contratos de saída de cada camada, conforme a Seção 3.
EngenhariaQue mecanismos de infraestrutura suportam a distribuição e a comunicação?Armazenamento de objetos particionado, formato tabular transacional, barramento de eventos para o antifraude, catálogo e orquestrador.
TecnologiaQue produtos concretos implementam os mecanismos escolhidos?Escolhas específicas de produto, substituíveis sem alterar os demais pontos de vista, desde que os contratos sejam preservados.

A separação entre os dois últimos pontos de vista é a que produz maior efeito prático. Decisões de engenharia — particionar por data, exigir formato transacional, adotar barramento de eventos — condicionam a arquitetura de modo duradouro. Decisões de tecnologia — qual produto específico implementa o armazenamento — devem ser substituíveis. Uma arquitetura descrita exclusivamente por nomes de produtos não permite avaliar o que se perde ao trocá-los, porque o requisito que cada produto atendia nunca foi enunciado.

Uso diagnóstico

Ao revisar uma descrição arquitetural, verifique se os cinco pontos de vista estão contemplados. A omissão mais frequente é a do ponto de vista de empresa: descreve-se com precisão o que o sistema faz e como é construído, sem enunciar qual decisão organizacional ele existe para sustentar. Nessa condição, não há critério para avaliar se a arquitetura é adequada.

9. Ponte com a Aula 1: como este tema vira especificação

⏱ 3 minutos

Os conceitos desta aula entram no projeto pelo vocabulário estabelecido na Aula 1. Uma decisão arquitetural orienta a implementação quando se converte em requisito, decisão registrada e cenário verificável. A seguir, a tradução completa do tema para os quatro artefatos do desenvolvimento orientado a especificação.

Requisito funcional

RF-003

Servir dados de vendas tratados ao BI e ao time de ciência de dados a partir de uma origem única.

Requisito não funcional

RNF-003

Dado disponível na camada de consumo em até 15 minutos após o fechamento da origem; RPO de 1 hora e RTO de 4 horas, comprovados em teste de recuperação.

Decisão registrada

ADR-ARQ-01

Decisão. Adotar lakehouse com camadas bronze, prata e ouro, em vez de data warehouse fechado.

Contexto. Esquema evolutivo, com origem de esquema instável, e dois perfis de consumo com necessidades distintas: consulta dimensional estável para o BI e acesso granular para ciência de dados.

Alternativa descartada. Data warehouse fechado, por exigir esquema fixo antes da carga e não atender ao acesso granular.

Consequência aceita. Dependência de catálogo e de rotina de compactação; o custo de governança aumenta e exige responsável nominalmente declarado.

Cenário de aceite

# Cenário que deve falhar antes da implementação
Funcionalidade: Reprocessamento de partição sem duplicação

  Cenário: Recuperar carga interrompida da camada prata
    Dado que a carga da camada prata falhou no dia 12
      E que a camada bronze preserva a cópia íntegra da origem
    Quando eu reprocesso a partição desse dia
    Então a camada ouro é reconstruída sem duplicar registros
      E a contagem de itens coincide com a da origem
      E a linhagem aponta a nova execução

O cenário acima possui a propriedade exigida de um critério de aceite: ele falha antes da implementação. Uma rotina de carga que insere incondicionalmente reprova na asserção de contagem, e a reprovação é automática, dispensando inspeção humana. Um requisito de resiliência enunciado apenas como o sistema deve ser resiliente não produz reprovação alguma e, por consequência, não impõe restrição ao implementador.

10. Estudo de caso integrado: a arquitetura da Rede Aurora

⏱ 9 minutos

As seções anteriores produziram decisões isoladas. Esta seção as consolida em uma descrição arquitetural única, no formato que o exercício preparatório da Seção 12 solicita para o projeto do grupo. O objetivo é demonstrar que cada elemento do diagrama corresponde a uma restrição declarada.

Fluxo ponta a ponta

flowchart LR subgraph OR["Origens"] PDV[/"PDV — 180 lojas
2,4 M itens/dia"/] ECM[/"Comércio eletrônico"/] ERP[/"ERP — produto e fiscal"/] FID[/"Fidelidade — dado pessoal"/] PLA[/"Planilha de compras
esquema instável"/] end subgraph IN["Ingestão"] BUS{{"Barramento
de eventos"}} LOT["Extração em lote
horária e diária"] end subgraph AR["Armazenamento"] BRZ[("Bronze
bruto imutável
CPF cifrado por titular")] SLV[("Prata
tipado, sem CPF")] GLD[("Ouro
fato e dimensão")] end subgraph CO["Consumo"] ANF["Antifraude
decisão em segundos"] BI["Painel comercial
decisão às 7h"] DS["Previsão de demanda
granularidade fina"] FIS["Relatório fiscal
retenção 5 anos"] end PDV --> BUS PDV --> LOT ECM --> BUS ECM --> LOT ERP --> LOT FID --> LOT PLA --> LOT BUS --> ANF BUS --> BRZ LOT --> BRZ BRZ --> SLV SLV --> GLD GLD --> BI GLD --> FIS SLV -.->|"exceção registrada
em ADR-ARQ-07"| DS classDef org fill:#fee2e2,stroke:#dc2626,color:#7f1d1d; classDef ing fill:#ffedd5,stroke:#f59e0b,color:#7c2d12; classDef arm fill:#dbeafe,stroke:#3b82f6,color:#1e3a8a; classDef con fill:#dcfce7,stroke:#22c55e,color:#14532d; class PDV,ECM,ERP,FID,PLA org; class BUS,LOT ing; class BRZ,SLV,GLD arm; class ANF,BI,DS,FIS con; style OR fill:#ffffff,stroke:#cbd5e1,color:#334155; style IN fill:#ffffff,stroke:#cbd5e1,color:#334155; style AR fill:#ffffff,stroke:#cbd5e1,color:#334155; style CO fill:#ffffff,stroke:#cbd5e1,color:#334155;

Três elementos do diagrama merecem justificativa explícita, pois sem ela pareceriam arbitrários.

O barramento alimenta dois destinos. O evento de pagamento é publicado uma única vez e consumido por dois caminhos independentes: o antifraude, que decide em segundos, e a camada bruta, que preserva o registro para o histórico. A duplicação ocorre no consumo, com publicação única, e permite atender à latência exigida por um caso de uso sem impor processamento contínuo aos demais.

A ciência de dados consome a camada prata. A linha tracejada representa uma exceção deliberada à proibição de salto de camada, estabelecida na Seção 3. A justificativa é que os modelos de previsão exigem granularidade anterior à agregação dimensional, e a camada ouro já a perdeu. Por constituir exceção a uma regra declarada, a decisão exige registro próprio em ADR — caso contrário, tornar-se-ia precedente informal para novos saltos, e a regra deixaria de existir na prática.

A substituição do CPF ocorre na transição para a camada prata. A camada bruta preserva o registro original, com os campos pessoais cifrados por chave de titular, porque a imutabilidade é condição do reprocessamento; o descarte da chave atende ao pedido de eliminação sem regravar a camada. A partir da camada prata, apenas o identificador substituto circula, o que limita a superfície de exposição sem impedir a correção retroativa de regras.

Quadro de decisões registradas

IdentificadorDecisãoRestrição que a motivaConsequência aceita
ADR-ARQ-01Adotar lakehouse com três camadas.Dois perfis de consumo e uma origem de esquema instável.Dependência de catálogo e de rotina de compactação, com responsável nomeado.
ADR-ARQ-02Manter processamento em lote para toda a plataforma, exceto o antifraude.Somente o bloqueio de fraude possui decisão sensível a segundos.O painel comercial não reflete vendas do dia corrente antes da janela seguinte.
ADR-ARQ-03Cifrar o CPF por titular na ingestão e substituí-lo por identificador na transição para a camada prata.LGPD: minimização e capacidade de eliminação por titular, inclusive na camada bruta imutável.Dependência de cofre de chaves; consultas que exijam o CPF original dependem de acesso restrito e auditado.
ADR-ARQ-04Particionar por data e reprocessar por substituição de partição.RPO de 1 hora e RTO de 4 horas, com reprocessamento sem duplicação.Correções que não se delimitam por data exigem operação de mesclagem específica.
ADR-ARQ-07Permitir que a ciência de dados consuma a camada prata.Modelos exigem granularidade anterior à agregação.Alterações na camada prata passam a ter dois grupos de consumidores a notificar.

Riscos declarados e plano de evolução

RiscoSinal observávelResposta planejada
Planilha de compras muda de formato sem aviso.Teste de esquema rejeita a carga na fronteira.Carga falha de modo visível; a área de compras é acionada como dona do contrato de entrada.
Acúmulo de arquivos pequenos degrada a consulta.Tempo de resposta do painel cresce sem aumento de volume.Rotina periódica de compactação, com responsável e frequência declarados.
Crescimento de 18% ao ano ultrapassa o orçamento.Custo mensal aproxima-se do limite declarado.Política de retenção diferenciada por camada; dado bruto além de dois anos migra para armazenamento de acesso infrequente.
Surgimento de novo caso de uso sensível a latência.Demanda de decisão em intervalo inferior a 15 minutos.Reabertura do ADR-ARQ-02; a premissa registrada torna a reavaliação objetiva.
Observação sobre a descrição arquitetural

O quadro de riscos integra a descrição arquitetural. A declaração de cada risco com sinal observável e resposta planejada converte o evento futuro em procedimento conhecido.

11. Catálogo de anti-padrões

⏱ 2 minutos

Os arranjos a seguir reaparecem com frequência em plataformas de dados. Cada um deles é localmente razoável e globalmente prejudicial, o que explica sua persistência.

Camadas nominais

Três esquemas com nomes distintos, mesmas colunas, mesma rotina e mesmo responsável. Diagnóstico e correção foram tratados no Exercício 3.1. O sinal característico é a impossibilidade de enunciar qual garantia distinta cada transição oferece.

Consulta analítica sobre o banco de produção

Relatórios executados diretamente sobre a base transacional. O arranjo funciona enquanto o volume é pequeno e falha de modo correlacionado: a consulta pesada degrada o sistema que atende ao cliente, e a degradação ocorre justamente nos períodos de maior movimento, quando ambos são mais exigidos.

Transformação na ferramenta de visualização

Regras de negócio implementadas dentro do painel. A regra passa a existir em um artefato que não é versionado, não é testado e não é reutilizável; quando um segundo painel precisa da mesma métrica, ela é reimplementada, e as duas implementações divergem sem que ninguém seja notificado.

Retenção indefinida por omissão

Ausência de política de descarte. O custo cresce de modo monotônico e a exposição a dados pessoais permanece muito além da finalidade que autorizou a coleta. Em matéria de dado pessoal, a retenção sem finalidade declarada constitui tratamento sem base legal.

Acesso concedido por conveniência

Privilégios amplos atribuídos para resolver um bloqueio pontual e nunca revistos. A revisão periódica de acessos deve constar do desenho, com frequência declarada, pois a tendência natural do conjunto de privilégios é crescer.

Traço comum

Todos os anti-padrões acima decorrem da mesma origem: uma decisão tomada sob pressão de prazo, que resolve o problema imediato e não é registrada como provisória. A ausência de registro impede que ela seja reavaliada quando a pressão cessa, e a solução temporária torna-se estrutura permanente.

12. Exercício preparatório para a Ponderada em Sala

⏱ 2 minutos
Exercício de estudo — não entregue e não avaliado

Aplicar a estrutura da Seção 10 a um cubo do projeto do grupo: fluxo ponta a ponta das bases de origem do parceiro até a camada de serviço, decisões registradas em ADR, requisitos não funcionais, riscos e plano de evolução. O exercício prepara as Questões 4 a 8 da Ponderada em Sala, que exige reconstruir essas decisões à mão e sem consulta.

Critérios de autoverificação

  1. A descrição declara o requisito funcional e ao menos um requisito não funcional mensurável.
  2. A decisão estrutural está registrada em ADR, com alternativa descartada e consequência aceita.
  3. Existe ao menos um cenário de aceite que falha antes da implementação.
  4. Há responsável nomeado, forma de operação e caminho de reprocessamento.

Lista de verificação do exercício

Percorra a lista abaixo aplicando cada item à descrição produzida para o projeto do grupo. Os itens podem ser marcados diretamente nesta página.

  • As restrições estão escritas em números, não em adjetivos.
  • Está declarada a decisão de negócio que a plataforma sustenta.
  • Ao menos uma alternativa foi descartada, com o motivo registrado.
  • Cada camada possui contrato de entrada, contrato de saída e responsável nomeado.
  • Nenhum consumidor lê a camada bruta, ou a exceção está registrada em ADR.
  • A escolha do padrão de plataforma cita a restrição concreta que ele resolve.
  • O custo de governança do padrão adotado foi estimado, e não apenas o de infraestrutura.
  • Existe justificativa por caso de uso para cada trecho em processamento contínuo.
  • Os dados sensíveis estão classificados antes de qualquer movimentação.
  • A linhagem permite responder quem é afetado por uma alteração na origem.
  • Há política de retenção e de descarte declarada por classe de dado.
  • RPO e RTO estão declarados por domínio, com teste de recuperação previsto.
  • As rotinas de carga são idempotentes antes de qualquer reprocessamento automático.
  • A política de evolução de esquema declara o que quebra compatibilidade.
  • Os riscos possuem sinal observável e resposta planejada.
  • Existe ao menos um cenário de aceite que reprova a implementação atual.
Critério final

A pergunta que encerra o trabalho: qual decisão fica mais segura depois deste artefato? Se nenhuma decisão da organização se torna mais segura, o artefato descreveu uma infraestrutura sem enunciar a sua finalidade.

13. Glossário

⏱ 1 minuto
ADR Registro de decisão arquitetural. Documento breve que enuncia contexto, decisão, alternativas descartadas e consequências aceitas.
Camada bruta Armazenamento da cópia fiel e imutável do que a origem entregou, sem correção nem descarte, ressalvada a eliminação de dado pessoal por descarte criptográfico.
Camada de serviço Camada que expõe o modelo dimensional e as métricas com definição única e versionada.
Compatibilidade retroativa Propriedade de uma alteração de esquema que permite a consumidores escritos para a versão anterior continuarem operando.
Contrato de dados Especificação do formato, da semântica e das garantias de qualidade acordadas entre produtor e consumidor.
Descarte criptográfico Eliminação de dado cifrado pela destruição da chave que o decifra (crypto-shredding); permite atender a pedido de eliminação sem regravar armazenamento imutável.
Fila de não processáveis Destino de registros que falharam repetidamente, preservados com o erro associado para inspeção posterior.
Idempotência Propriedade segundo a qual a aplicação repetida de uma operação produz o mesmo resultado de uma única aplicação.
Lakehouse Padrão que combina armazenamento de objetos de baixo custo com garantias transacionais e catálogo, atendendo a consumo estruturado e granular.
Linhagem Registro verificável do percurso de um dado da origem ao consumo, incluindo as transformações aplicadas.
Minimização Princípio segundo o qual apenas os dados necessários à finalidade declarada devem ser coletados e retidos.
RPO Objetivo de ponto de recuperação: quantidade máxima de dados, medida em tempo, cuja perda é admitida após um incidente.
RTO Objetivo de tempo de recuperação: prazo máximo admitido entre a falha e o retorno da operação.
Salto de camada Acesso direto de uma camada a outra não adjacente, que anula o isolamento pretendido pela estruturação.
Substituição de partição Estratégia de carga que remove e reescreve integralmente a partição alvo, conferindo idempotência à rotina.

14. Referências

⏱ 1 minuto
  • TOGAF — Architecture Development Method. Método iterativo de desenvolvimento de arquitetura corporativa, com ênfase na rastreabilidade entre requisitos e decisões.
  • DAMA-DMBOK2 — Data Management Body of Knowledge. Corpo de conhecimento em gestão de dados; posiciona a governança como função central e não posterior.
  • ISO/IEC/IEEE 42010 — Architecture description. Norma que estabelece partes interessadas, preocupações e pontos de vista como elementos obrigatórios de uma descrição arquitetural.
  • ISO/IEC 10746 — RM-ODP. Modelo de referência para processamento distribuído aberto; origem dos cinco pontos de vista tratados na Seção 8.
  • AWS Well-Architected Framework. Conjunto de pilares e questões de avaliação aplicáveis à revisão de arquiteturas, incluindo excelência operacional e confiabilidade.
  • Lei nº 13.709/2018 — Lei Geral de Proteção de Dados Pessoais. Base normativa das exigências de finalidade, minimização e eliminação tratadas na Seção 6.
Continuidade no módulo

A Aula 6 retoma a camada de serviço desta arquitetura para integrar as estrelas por processo em arquitetura dimensional corporativa, com Bus Matrix e dimensões conformadas; a Aula 7 trata da otimização física das consultas; as aulas de coleta, transformação e carga e de métricas e telemetria em ETLs tratam das rotinas que a alimentam. A arquitetura desenhada aqui é o contexto no qual esses temas se aplicam.