Dan Ivovich from SmartLogic - Elixir in Production - a podcast by SmartLogic LLC

from 2019-02-28T06:00

:: ::

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 @ SmartLogicLearn more about how SmartLogic uses Phoenix and Elixir. (https://smartlogic.io/phoenix-and-elixir)
00:00 - Fade In00:30 - Introductions to Eric, Dan and SmartLogic
Dan Ivovich - Director of Development Operations @ SmartLogicEric Oestrich - Developer, Elixir Lead @ SmartLogic
Justus Eapen - Full stack developer @ SmartLogicIntroduced 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?
HerokuAWS
LinodeDigital Ocean
6:20Deployment process, tools, scriptingAnsible - for underlying VPS’s, servers, and more recently deployment itself. (Similar to Capistrano).
DistilleryMix.release
7:18 - Zero Downtime DeploymentsOld 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 (https://www.youtube.com/watch?v=lCUKQnkjajo))
Pg2 (http://erlang.org/doc/man/pg2.html) - process groupsMnesia (http://erlang.org/doc/man/mnesia.html) distributed database (beware!)
“Just sending messages to pids because Erlang is great”Swarm (https://github.com/bitwalker/swarm) / Horde (https://github.com/derekkraan/horde)
12:40 - How do we handle background tasks?Started with verk (https://github.com/edgurgel/verk)
Recently becoming more comfortable with spinning up GenServers (https://hexdocs.pm/elixir/GenServer.html)“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 (https://phoenixframework.org/) - web frameworkEcto (https://hexdocs.pm/ecto/Ecto.html) - sort of an ORM
Distillery (https://github.com/bitwalker/distillery) - for releasesBamboo (https://github.com/thoughtbot/bamboo) - for sending emails
Quantum (https://github.com/c-rack/quantum-elixir) - for task schedulingTimex (https://github.com/bitwalker/timex) - for dates and times, and timezones
Cachex (https://github.com/whitfin/cachex) - for caching18:20- What third party integrations have we attempted
StripeSquare
TwilioMindbody
Always building our own clients.  Using HTTPoison (https://github.com/edgurgel/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 libIncludes supervision trees, genservers, ETS, and a lot of stuff we don’t even know about!
gen_tcp (http://erlang.org/doc/man/gen_tcp.html)Mnesia
dets (http://erlang.org/doc/man/dets.html)23:43- Tips for devs considering running elixir in production.
Jump in and read the docsUnderstand how systems boot, distillery releases, config providers, etc.
“Good server monitoring hygiene”“DIVE IN!”
19:54 OutroLearn more about how SmartLogic uses Phoenix and Elixir. (https://smr.tl/2Hyslu8) Special Guest: Dan Ivovich.

Further episodes of Elixir Wizards

Further podcasts by SmartLogic LLC

Website of SmartLogic LLC