Skip to content

Instantly share code, notes, and snippets.

@renatoapcosta
Last active June 15, 2020 12:20
Show Gist options
  • Save renatoapcosta/e3d774fff49ce88c790abe22e4e6045f to your computer and use it in GitHub Desktop.
Save renatoapcosta/e3d774fff49ce88c790abe22e4e6045f to your computer and use it in GitHub Desktop.
Event Source

Event Source

É comum processadores executarem bilhões de instruções por segundos e tenham bilões de bytes de RAM. Quanto maior isso menos precisamos de um estado mutável.

Imagine uma aplicação bancária que indique os saldos em conta dos clientes. Os programas alteram estes saldos quando transações de depositos ou saques são executados.

Agora imagine que ao invés dos saldos, apenas as transações são armazenadas. Quando alguém quiser consultar os saldos , basta somar as transações dessa conta. Esse esquema não requer variáveis mutáveis.

Essa é a ídea por trás do event sourcing. É uma estratégia em que armazenamos as transações, mas não o estado. Quando o estado for solicitado, simplesmente aplicamos todas as transações do inicio.

o mais importante, nunca nada é deletado ou atualizado neste modelo de armazenamento de dados. Como consequencia, nossas aplicações não são CRUD; são apenas CR. Assim nenhum problema de atualização concorrente pode ocorrer.

Se temos armazenamento e poder de processamento suficientes, podemos tornar nossas aplicações inteiramene imutáveis, e portanto inteiramente funcionais.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment