Is Elixir / Phoenix ready for production?

Hi,

Elixir and Phoenix are fine for your application.

I run a consulting company that builds applications for early stage companies (Cogini). When I first saw Elixir, we had been developing standard websites (CRUD, e-commerce, etc) with Ruby on Rails, Python, and PHP. We were using Erlang for the “tricky bits”, e.g. IoT and real time web, and liked it a lot. 10 years ago, we tried to use Erlang for web development, but the web development stack was not mature, and basic productivity was lacking.

When I saw Chris McCord’s post comparing Rails and Phoenix three years ago, I was really excited. The metaprogramming capabilities of Elixir let them build a web framework that combines the power of Erlang with the ease of use of Rails.

I wanted to make sure that it would be ok to bet the company on Elixir and Phoenix. The basic productivity was great, and the the Elixir and Phoenix teams focus a lot on developer experience and getting started. So I knew we would be able to deliver custom development projects without too much work.

My next question was whether we would have the libraries we need for various project requirements, e.g. interfacing with credit card payment systems. It is fine to develop a few things, but it’s hard for a startup project budget and timeline to cover development of basic libraries. As a safety valve, I looked at calling Python and Ruby from Elixir using tools like Elixir Snake and Erlport. They worked fine, and I knew that I would be ok. In practice, we haven’t needed to do that much, all the libraries we have needed have been available or we could write them. We mainly use it for things like Pandas for data analysis.

In addition to standard web development tasks, Elixir and Phoenix support the next-generation “stateful web” applications like chat that are really hard to build any way else. One thing that I really like is that a single platform can do it all, i.e. public web, back end CRUD for admin, mobile APIs, interfaces to 3rd party APIs, and real time messaging. It actually simplifies development a lot, because we don’t need to use multiple languages, multiple servers, background job queues, etc.

In the last three years, we have done all our new projects in Elixir, and it’s worked fine. You don’t have to worry about OTP at this point, you can build apps with just Phenix. You will want to learn it in the future, though, as it is where the platform gets a lot of its power. As for difficulty finding developers, we haven’t found it hard for devs to get up to speed on Elixir and Phoenix. Within two weeks they are fully productive, particularly if they have experienced people available to help.

There is some learning curve associated with functional development. It’s similar to learning object oriented programming. You can be programming immediately, but it takes six months before you are really thinking functionally. Then you find it difficult to use barbaric languages with mutation and miss pattern matching dearly :grinning:.

17 Likes