From Legacy To Event Sourcing

A practical overview of the move from a legacy RDBMS system as source of truth; to storing core data with event sourcing supported by the Erlang runtime system.

Elixir comes with a great tool set to support actor like aggregations and command processing based on Erlang's lightweight processes and stable supervision. All the ingredients for a great setup.

In reality, it's not as easy as turning all mutations into an event and pushing them through a GenServer. Many practical hurdles were encountered. Obstacles like [long term] storage, scaling, regulations, but also conceptional changes. Changes like handling the disconnect between mutating => mutated.

We'll go through all of these, together with a very basic what's-what and setup overview. The goal is not to show that event sourcing on BEAM is possible as a concept. (Many great talks have already shown this to be the case and have highlighted how to get started.) This is all about what you might run into after you get things started.

OBJECTIVES

Sharing the setup, headaches, design considerations, and homebrew solutions that come with the move to event sourcing. Creating/sharing interest for ES/CQRS solutions and hopefully community feedback. 

AUDIENCE

Developers interested in Event Sourcing and practical views on long term storage; those running into issues combining GDPR and persistence/immutability.