Elixir Wizards is an interview-format podcast, focused on engineers who use the Elixir programming language. Initially launched in early 2019, each season focuses on a specific topic or topics, with each interview focusing on the guest's experience and opinions on the topic. Elixir Wizards is hosted by Eric Oestrich and Sundi Myint of SmartLogic, a dev shop that’s been building custom software since 2005 and running Elixir applications in production since 2015. Learn more about how SmartLogic uses Phoenix and Elixir. (https://smartlogic.io/phoenix-and-elixir?utm_source=podcast)
Dan Ivovich from SmartLogic - Elixir in Production
We talk with developers from the team here at SmartLogic about our current practices on deploying Elixir and Phoenix in production.
Dan Ivovich - Director of Development Operations @ SmartLogic
Learn more about how SmartLogic uses Phoenix and Elixir.
00:00 - Fade In
00:30 - Introductions to Eric, Dan and SmartLogic
Dan Ivovich - Director of Development Operations @ SmartLogic
Eric Oestrich - Developer, Elixir Lead @ SmartLogic
Justus Eapen - Full stack developer @ SmartLogic
Introduced to Elixir by an old colleague.
1:20 - What Elixir projects do you have in production?
Several client projects in production. Several Mobile Apps with APIs powered by Phoenix and Elixir.
Baltimore Water Taxi.
A digital marketplace.
And more!
1:57 - Advantages and disadvantages to using Elixir.
We made the switch when a colleague was stoked about Functional Programming and introduced us to Elixir. We were won over by the performance and rich feature sets, OTP, etc.
2:43 - Where are we hosting our Elixir Apps?
- Heroku
- AWS
- Linode
- Digital Ocean
6:20Deployment process, tools, scripting
- Ansible - for underlying VPS’s, servers, and more recently deployment itself. (Similar to Capistrano).
- Distillery
- Mix.release
7:18 - Zero Downtime Deployments
- Old school load balancers and rolling restarts
7:46 - What are the performance metrics like? Comparatively.
- Ruby ends up with memory leaks. That doesn’t happen with Elixir.
- Memory utilization is flat and low no matter what.
- “Phenomenal response times”
8:54 - How does Eric think about clustered applications in Elixir?
- Going Multi Node (https://www.youtube.com/watch?v=lCUKQnkjajo)
- Pg2 - process groups
- Mnesia distributed database (beware!)
- “Just sending messages to pids because Erlang is great”
- Swarm / Horde
12:40 - How do we handle background tasks?
- Started with verk
- Recently becoming more comfortable with spinning up GenServers
- “The language itself is built to be concurrent.”
15:06 What libraries are we using in prod?
- First thing: You don’t need a whole lot because the language is so well designed.
- Phoenix - web framework
- Ecto - sort of an ORM
- Distillery - for releases
- Bamboo - for sending emails
- Quantum - for task scheduling
- Timex - for dates and times, and timezones
- Cachex - for caching
18:20- What third party integrations have we attempted
- Stripe
- Square
- Twilio
- Mindbody
Always building our own clients. Using HTTPoison
19:58Has Elixir ever saved the day in production?
It’s saved many days by PREVENTING ISSUES. Systems are architected for reliability and fault-tolerance.
21:48 - Where do supervision trees come from? What is OTP?
- OTP is an Erlang standard lib
- Includes supervision trees, genservers, ETS, and a lot of stuff we don’t even know about!
- gen_tcp
- Mnesia
- dets
23:43- Tips for devs considering running elixir in production.
- Jump in and read the docs
- Understand how systems boot, distillery releases, config providers, etc.
- “Good server monitoring hygiene”
- “DIVE IN!” 19:54 Outro
Learn more about how SmartLogic uses Phoenix and Elixir.
Special Guest: Dan Ivovich.
Links: