VapVup👤
← Voltar
📜

Event Sourcing

Event Sourcing é um padrão onde o estado da aplicação é derivado de uma sequência de eventos imutáveis. Ao invés de guardar só o estado atual, guardamos tudo que aconteceu.

🏦Analogia

O Extrato Bancário

Seu banco não guarda apenas o saldo atual — ele guarda cada depósito, saque e transferência. Se precisar saber como chegou naquele saldo, basta percorrer o extrato. Event Sourcing faz a mesma coisa com os dados da sua aplicação.

💡Conceito

Eventos Imutáveis

Eventos são fatos que já aconteceram e nunca são alterados ou deletados. 'PedidoCriado', 'PagamentoAprovado', 'ItemAdicionado' — cada um registra o que mudou e quando.

💡Conceito

Reconstrução de Estado

O estado atual é calculado aplicando todos os eventos na ordem em que aconteceram. É como rebobinar uma fita: do início até agora, cada evento transforma o estado passo a passo.

🔧Exemplo

Carrinho de Compras com Eventos

Ao invés de guardar o carrinho como um objeto estático, registramos cada ação como evento. Para saber o estado atual, reaplicamos os eventos em ordem.

// Eventos do carrinho
const eventos = [
  { tipo: 'ItemAdicionado', produto: 'Camiseta', preco: 49.90 },
  { tipo: 'ItemAdicionado', produto: 'Calça', preco: 89.90 },
  { tipo: 'ItemRemovido', produto: 'Camiseta' },
  { tipo: 'CupomAplicado', desconto: 0.1 }
];

// Reconstruir estado atual
function reconstruirCarrinho(eventos) {
  return eventos.reduce((carrinho, evento) => {
    switch (evento.tipo) {
      case 'ItemAdicionado':
        return { ...carrinho, itens: [...carrinho.itens, evento] };
      case 'ItemRemovido':
        return { ...carrinho, itens: carrinho.itens.filter(i => i.produto !== evento.produto) };
      case 'CupomAplicado':
        return { ...carrinho, desconto: evento.desconto };
    }
  }, { itens: [], desconto: 0 });
}
💡Conceito

Audit Trail Completo

Com Event Sourcing você tem um histórico completo e auditável de tudo que aconteceu no sistema. Ideal para compliance, debugging e entender exatamente como o sistema chegou em determinado estado.

📝Analogia

Histórico de Commits do Git

O Git é Event Sourcing na prática: cada commit é um evento imutável. Você pode voltar para qualquer ponto no tempo, ver o que mudou e reconstruir o estado do código em qualquer momento.