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: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.
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:
- Going Multi-Node
- PG2
- mnesia
- Swarm
- Horde
- Verk
- Bamboo
- Quantum
- Cachex