3 ms·
As usual, it depends on the use case. Enterprise vs hobbyist, for example. I greatly admire the principles, but in practice, the Erlang platform underdelivers
by cangeroo 3y ago
As usual, it depends on the use case. Enterprise vs hobbyist, for example.
I greatly admire the principles, but in practice, the Erlang platform underdelivers in a modern context, because applications are usually not deployed by hot-swapping, but by rollout on Kubernetes. High availability is achieved by load balancing over horizontal scale-out of pods. Distributed systems today use external systems for state, like databases, keyvalue/caching stores, message queues, etc.
Elixir is a convenient language, like Python, with lots of convenience tools.
But for a long list of reasons, I wouldn't use it for anything other than prototyping/hobby projects.
- petrocrat 3y agoWhatsApp, famously launched and served millions of users with a small team using Elixir. Seems to me that speaks to the language's production capability, or enterprise capability, if you will. Considering that, can you go more into detail about your assertion here? > But for a long list of reasons, I wouldn't use it for anything other than prototyping/hobby projects.
- cangeroo 3y agoIt's an interesting topic, but it seems that presenting an opposing viewpoint is generally downvoted on Hackernews (and likely other social media), so I'm not sure it's worth spending the time. My position is pragmatic, from a managerial economics perspective, of maximizing value and reducing risk. I suspect that Elixir attracts a fair amount of language enthusiasts, who are somewhat biased when they evaluated the business value of a language choice. WhatsApp/Discord is a very specific use case, of needing a high number of concurrent users that expect real-time messages when to the same session (e.g. chat/chatroom, "Bob is typing..."). AFAIK, BEAM excels at immutability (lots of reads, like readers in a chatroom) and concurrency (vertical scalability). So those are not appropriate reference use cases for the typical user. BEAM is notoriously slow, and has been bottom-ranking in Techempower benchmarks. Although that seems to have improved in recent years. https://www.techempower.com/benchmarks/#hw=ph&test=json§ion=data-r22&l=yw2xv3-cn3 https://www.techempower.com/benchmarks/#hw=ph&test=json§...
- lolinder 3y ago> I greatly admire the principles, but in practice, the Erlang platform underdelivers in a modern context, because applications are usually not deployed by hot-swapping, but by rollout on Kubernetes. High availability is achieved by load balancing over horizontal scale-out of pods. Distributed systems today use external systems for state, like databases, keyvalue/caching stores, message queues, etc. I can believe that there are reasons to avoid BEAM in production, but "all the other ecosystems solve the same problems differently" isn't a good reason. One reason to choose the BEAM is because it offers solutions to all of these problems as part of a single coherent ecosystem. Yeah, you'll be confused if you try to take the BEAM and then roll it out on K8S, so maybe just... don't do that? If you want to compare and contrast BEAM's solutions with the more typical modern suite, that would be more persuasive. Just saying "it's bad because it's different" isn't, because the differences are why people are interested in it.
- cangeroo 3y agoFor the question of "which language should I use, should I use Elixir?", I think it's valid to evaluate it against "all the other ecosystems that solve the same problems differently". If you want to design a bespoke solution from scratch, then it could make sense to use a single ecosystem, that avoids the complexity of Kubernetes et al. So it really depends on your use case. If you're designing independent software, like RabbitMQ, it might make sense. It's not bad, it's just that other solutions are often better.
- cangeroo 3y agoBut it seems that I misread the original question. I see now that it reads "should I be using Elixir for new projects or Erlang?". There was a linebreak after "new projects", so it only read to me as "should I be using Elixir for new projects". Apologies.
- lolinder 3y agoBut you haven't justified why the "normal" solutions are better. That's all that I'm asking for—if k8s deployment is better than hot swapping on a distributed BEAM VM, then explain why, don't just say that the BEAM is worse because it is different.