Dan Ivovich from SmartLogic - Elixir in Production

About this Episode

Published February 28, 2019 | Duration: 28:28 | RSS Feed | Direct download | Transcript

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?

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: