4 years ago
It’s cool to learn Elixir.
However if you have to quickly scale web backends to millions of users, you are going to shoot yourself in the food with elixir as any other language.
Scaling anything is not easy and there are a lot of things to consider besides just depending on the Beam to do heavy lifting. Sure it makes it easy to spawn off many requests easily. But…
#1 - Performant database queries
Elixir/Ecto is not going to help you. If you’re just using Ecto without proper indexes or even limiting just the number of columns you need, then you’re just swamping your database quicker.
#2 - Paying attention to your plugs
Think of the life cycle of your requests as just a series of plugs or functions that you’re passing the conn through. If you’re not paying attention to each one in the chain and profiling each one, you’re in for a world of hurt.
#3 - Third-Party Libraries
Some third party libraries are a huge coding time saver, but a huge time waster too. That library that’s saving you some coding time might not be worth it because it’s eating up 100ms in each request.
In the end, you have to be aware of every little thing. Even the latency between your app servers and your database server is going to be a big factor and if you don’t have experience with huge amounts of traffic then Elixir is not going to help you.