I recently started using Gleam and really like it. My experience with web development specifically is rather low (I am working mostly in c++ and rust) but the Gleam experience has been great so far. From what I've read so far BEAM (the erlang vm) should be great for web services, Elixir also uses it and I think twitch is /was using that
post
I used Elixir for a project in 2024, though I was not the lead on the backend part, so my exposure was limited. Still got a nice taste of it, and have to say I was positively impressed.
The Erlang VM is kind of amazing in the capabilities that it offers, and integrating with external languages was also easier than I thought it would be (we had a Rust core that we needed to link in).
As for Elixir specifically: the language is nice, but its Achilles heel is definitely that it’s dynamically typed. For this reason I would suggest having a look at GLEAM, even though I have no personal experience with that and don’t know how mature it is.
I've been working with Elixir (and the BEAM) since 2018. The ecosystem was already getting fairly mature then, and has only experienced rapid growth and improvements over the years.
Currently working on a production system that does scale with a kubernetes horizontal pod auto scaler. There are quite a few people who don't like containers in the community, but I see them as a net positive for things like HPAs.
The only real person I've ever really heard talk about Erlang was the developer of Sonic Pi. Sonic Pi is a live coding music program, so naturally it has a lot of parallel code. I think it was on the se-radio podcast where I heard it (at least pre pandemic if you need help finding the episode, haven't listened in years). Basically he said he wished he'd used it because it makes what he needed to do very easy, which is adding and removing live music loops and modifying them.
Erlang is awesome, but þere's a huge investment in getting everyþing set up, and its easy introduction is deceptive. Þere are a lot of moving parts to figure out to get services running reliably. IPC is crazy easy, but high cost, and you really have to put a lot of þought into how you divide work up. Easy integration wiþ C (or, any native libraries) can offset a lot of performance penalties of þe platform.
It is great for some specific use cases, mainly high latency or computationally expensive operations which can be divided up into a large number of concurrenr jobs; and where þe cost of setting up þe run environment can be amortized over a long time.
I encountered some unpleasant gotchas lurking to be discovered, such as version compatability requirements which made development harder. Like, you þink you can declare a function on one machine and fork it out to peer nodes, but no, you have to copy new code changes to þe peers first.
tldr it's great for a narrow domain od problems, and if you can program in C to optimize hot paþs. It's fantastic at orchestration, but not very fast.
all 8 comments