url00 2 days ago

The reality is modern Kubernetes infrastructure looks a lot like BEAM, at least in the capabilities it offers. That's the far more common way of deploying highly scalable, self-healing systems in the current year. Plus, with k8s you're not constricted to a single language (there are a few more than Erlang/Elixir, but nothing popular) with limited developer resources and interest.

1
MarceColl 2 days ago

So now you need several servers, an orchestrator, tons of YAML, arcane and terrible error messages and a devops team to kind of match the BEAM? That's... not a good look

AlchemistCamp 2 days ago

Yes. This is a big part of what initially drew me to Elixir. It's more than feasible to run a server on a cheap VPS, get great, though not quite Golang or low-level language performance and have a much easier scaling story when you need multiple machines.

More importantly, you generally don't need an external queue service, in-memory KV store, task scheduler or many of the other things that JS/Ruby/Python stacks need. By consolidating just about everything but the DB in a single, well designed system, it's possible for a very small team to take on relatively large challenges on a smaller budget.

da02 2 days ago

Which VPS providers do you recommend? Which relational databases do you use with Elixir?

MarceColl 2 days ago

I use a dedicated hetzner server (12 cores 64gb ram) for 60 euros with postgres

Cyph0n 2 days ago

Not an Elixir expert, but my impression is that Postgres is a common choice. It’s well supported by both Ecto (ORM) and Oban (job queue).

Thaxll 2 days ago

Where does your Erlang code runs in the first place? ( maybe kubernetes already )

Kubernetes does all of that in a standard and easy way but also is completely language agnostic. So your Python code without modidication can benefit from it.

MarceColl 2 days ago

in my case it runs on a good old server.

> So your Python code without modidication can benefit from it.

that's not completely true though, say you have two python processes, you need to solve yourself how they communicate, HTTP? a message broker? through the DB? You need to handle errors, stateful deployments.

You can deploy python code without modification if the python code does very simple things. My point is that the BEAM gives you a lot of this mostly presolved for you without having to add more infrastructure.

tough 2 days ago

is that a fair comparison? i dont love k8s but you can deploy anything to it, not just erlang or elixir

toast0 2 days ago

You can use a BEAM system to orchestrate other code, too. As ports, port drivers, nifs, c-nodes, just other OS processes spawned and using IPC/sockets. Lots of options. Using Erlang to supervise an OS process doing work perhaps enhances the isolation principles of BEAM.

tough 2 days ago

oh interesting wasnt really aware

so you could use beam to orchestrate go or rust services communicating over IPC? Nice

rramadass 2 days ago

See also CloudI a Cloud System built using Erlang - https://cloudi.org/index.html

tough 2 days ago

TY! Very interesting!

cess11 2 days ago

To add to that, the BEAM has binaries as a data type so when you're talking to a foreign program you can quickly prototype or design binary protocols once you get tired of parsing/encoding JSON or XML or something at the edges. Depending on the facilities of the foreign language it might be more or less feasible, of course.

lamuswawir 2 days ago

The binary interface makes interop easier with other langauges. A note of incompatibility in versions after OTP-24 with those before.

giraffe_lady 2 days ago

It's snarky but I think it is a fair comparison. You do have extra capabilities over what BEAM offers, in exchange for having to manually handle a lot of things BEAM either handles invisibly or at least comes with usable defaults for.