Porquê camadas e não um único passo
A tentação é escrever uma única transformação que leia a exportação do fornecedor e entregue o relatório final. Funciona até ao primeiro erro: quando um número não bate certo, não há forma de saber em que ponto se desviou.
Um pipeline por camadas resolve isso. Cada camada tem uma única responsabilidade, guarda o seu resultado e pode ser revista em separado. Se algo falhar, sabe-se em que camada, e reprocessa-se a partir daí sem mexer no que vem antes.
As seis camadas
1. Em bruto. A exportação do fornecedor tal como chega, sem mexer. Guarda-se sempre, porque é a evidência: se amanhã se descobrir um erro de interpretação, volta-se a processar a partir daqui.
2. Normalizado. O dado traduzido para FOCUS. Cada fornecedor tem a sua própria tradução, mas todas produzem o mesmo formato. A partir desta camada, o pipeline já não sabe, nem lhe interessa, de que fornecedor vem cada linha.
3. Corrigido. Aqui corrige-se o que o dado de origem traz mal ou de forma ambígua: linhas duplicadas, compromissos que não refletem bem a que utilização se aplicaram, encargos mal classificados. Cada correção é uma regra escrita e com a sua razão, não um ajuste à mão.
4. Atómico. O dado levado à sua unidade mínima útil: uma linha por recurso, por período e por tipo de encargo, com custo de tabela, faturado e efetivo. É a camada da qual deriva tudo o resto e a que se usa para conciliar com a fatura.
5. Atribuído. Cada custo atribuído a um responsável: equipa, aplicação, produto. Inclui as regras para repartir o que é partilhado e o que não tem etiqueta.
6. Consumo. Tabelas largas e preparadas para responder a perguntas concretas: custo por produto e mês, custo por unidade de negócio, desvio face ao orçamento. É o que leem os painéis e os relatórios.
Princípios de desenho
- O que está em bruto nunca se modifica. Tudo o resto pode ser regenerado a partir daí.
- Uma responsabilidade por camada. Se uma camada normaliza e atribui, quando falhar não se saberá qual das duas coisas falhou.
- Regras escritas, não ajustes manuais. Cada correção e cada regra de atribuição vive no código ou na configuração, com a razão ao lado.
- Conciliação em cada volta. O total do período na camada atómica tem de bater certo com a fatura. Se não bater, o pipeline para antes de publicar.
- Reprocessável. Qualquer período pode ser recalculado de ponta a ponta e deve dar o mesmo resultado.
Com essa disciplina, o pipeline deixa de ser a caixa negra de uma pessoa e passa a ser um sistema que qualquer pessoa da equipa consegue auditar seis meses depois.
Como o aplicamos: Engenharia FinOps.