Stateless functional code is great and easy to test. One will eventually need to manage state and, then eventually, persist that state. Objects are great at keeping state in memory, updating it in response to messages, and reporting back. However, persisting state becomes hard because there’s a mismatch between the state in our objects and the tables in our efficient persistence stores.
Elixir is a great functional language and it’s backed by the BEAM which is fantastic at managing distributed state. All we need now is persistence for our object’s state! We’ll talk about a database implementation built on top of BEAM. Microsoft uses a similar technique for Halo with Orleans. We can have it on BEAM as well and we’ll walk through an example.
Nathan has been building internet enabled applications and distributed systems for a while now. Most recently, he worked on Wunderlist's real-time data sync and backend deployment.