Drinking the Elixir
YOW! Lambda Jam 2018
Elixir is a functional language that's growing in popularity as a stepping stone into functional programming, thanks to its strengths in areas like concurrency, fault tolerance and scalability combined with a syntax that is simple to learn, and feels very familiar for those with experience of languages like Ruby or Python. However, it is a very different beast – a functional style, new tools, and Erlang and Elixir libraries to learn, and while many people are experimenting with it, it's not quite mainstream for apps in the wild yet.
Our Elixir journey began around two years ago, when we started breaking out parts of our monolith and rebuilding it as microservices in Elixir. It was a chance to introduce boundaries, and consider performance from the ground up for an application for which performance was starting to become a concern as the customer base was growing. This talk will tell the story of a journey into a new, functional language and discuss how we approached decisions around where to start breaking the monolith apart.
The talk will also cover some of the lessons we learned, including:
- How Elixir’s functional style made us think differently about writing code in other languages
- Moving from ExUnit to Espec and back again
- Tools such as umbrella apps that helped us to work with a group of Elixir microservices
- How we planned for performance from the beginning, and Elixir features that helped us with this such as GenServer
- Deployment strategies for the Elixir applications
- How the migration impacted different team members including front end developers