
Ask HN: Are you using Elixir/Phoenix in production? - SamBoogieNYC
If so, what does your site&#x2F;webapp do?<p>Did you migrate from a different architecture (which one)?<p>Pros &amp; cons of the migration.<p>General pros &amp; cons.<p>General impressions of the ecosystem&#x2F;community as a whole?
======
dpeck
Use it to manage and service connections to IoT/networking devices.

No migration, did some early prototyping of the web frontend with rails but
backend was always elixir. Phoenix matured enough and really used it from
early on in development.

Pros:

I am really a big fan and feel like its allowed me to do things that would
have been very difficult to do in other languages. As I've learned more about
the erlang/elixir and the BEAM in general I've become a big fan of it. Theres
some things its not great for, but I really like the actor model/message
oriented approach and the huge amount of things that you get "for free" by
building on the it. At this point I would need a good reason to use anything
else for a network-centric application.

The community is great and its been fun seeing it grow. I got into rails a bit
after the huge wave of growth there, I feel like elixir is seeing similar and
that I have the tide rising under me.

Cons:

There is a _lot_ to learn about the BEAM and you have to be ready to do that
for a serious application. Nothing is free and your system isn't going to be
magically fault tolerant and well designed just because you're writing it
using elixir. You have to do things the "erlang way" and lean into it or
you're going to have a bad time.

Functional programming isn't something a lot of people are familiar with. Its
going to take a bit to onboard engineers who haven't thought about problems in
that way before. Hiring is more difficult, but there is also a lot of self-
selection at play, bad/mediocre devs probably aren't interested and while
there are some good/great ones who aren't interested as well I find they're
usually much more open minded.

Devops groups are going to have to work differently than they're used to.
There could be some pushback on that.

For me the cons is vastly outweighed by the pros and 2 years in I would make
the same decisions over again.

~~~
SamBoogieNYC
Thanks for your in-depth response.

From my initial dive into Elixir/Phoenix/FP (coming from Swift-Python-JS land)
I find it a bit daunting but also exciting in a way. From a personal
standpoint I'm not very fond of OO generally, it's just never clicked
completely for whatever reason. The concepts I've learned about FP make a lot
of sense, although I don't yet have a deep understanding of them.

I'm in the early planning stages of building a web-app that will make heavy
use of media as well as have messaging capabilities. I really dislike
Javascript so I'm looking for ways to minimize its usage, but only if it makes
sense.

Could you elaborate on 'things its not great for' \- what types of things and
why?

Also - could you suggest a few of the major concepts to take a look at RE: the
BEAM.

------
stympy
We are using Elixir/Cowboy at
[https://www.honeybadger.io](https://www.honeybadger.io) to receive log drain
data from our customers' Heroku apps. It's reliable and fast, but deployment
has been a sort point (we're spoiled by Capistrano). I recently changed the
deployment to elasticbeanstalk with the multiple docker image approach, and
that has been much nicer.

The ecosystem is still young -- a lot like Rails was in the early days -- so
there are rough edges, but I'm betting they will get sorted out, just like
they did in Rails land.

~~~
SamBoogieNYC
Thanks for the input - how were you deploying before elastic/docker?

~~~
stympy
We used exrm

