Nathan Herald

Persisting Object Oriented State in a Functional Language (Erlang of Course)

Building Internet Enabled Products

Persisting Object Oriented State in a Functional Language (Erlang of Course)

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.

Talk objectives:

  • One should learn about architecting distributed systems, how to be very fault tolerant, and how to be very scalable. One would learn about Halo and other examples of this type of architecture now in the wild. And I hope all would feel inspired to try out their own crazy ideas and feel confident that they could achieve anything with enough time.

Target audience:

  • Someone interested in building huge scalable distributed applications from client to server to storage. While the topic is somewhat advanced, the talk would be entertaining to any skill level. A lot of the talk is about being confident even when ignorant and pursuing a solution to a hard problem.

About Nathan

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.

Github: myobie

Twitter: @myobie

Back to conference page