BEAM There, Done That with Chris Beck - Why ETS and a single Rust NIF beat Go, Rust, and Node for a BlueSky-scale workload

Sharing a recent BEAM There, Done That episode that’s directly relevant to anyone weighing BEAM languages against Go, Rust, or Node for high-throughput systems under real production constraints.

Chris Beck of Bitcrowd (Berlin) discusses building an open-source implementation of BlueSky’s data plane, the component responsible for compiling the AT Protocol firehose into a renderable user timeline. The target load: millions of users, roughly 10,000 messages a second, with sharp spikes during real events (the team cites the November 2024 US election, where the network saw roughly six million active users).

From an Erlang/BEAM perspective, a few things worth discussing:

ETS did most of the heavy lifting here. The team describes it as already solving the raw-compute problem for storage and follow-graph lookups, since it’s a C-implemented BIF, without requiring a NIF for the bulk of the workload.

The one place pure Elixir/Erlang genuinely fell short was bitmap-heavy computation for the “social proof” feature (mutual follows at scale). The team addressed this with a Rust NIF via Rustler, implementing roaring bitmaps, accepting the tradeoff that a NIF crash can take down the whole VM rather than being isolated like a regular process failure under supervision.

The fan-out design pushes messages directly into user mailboxes on arrival, which gave them backpressure and burst absorption natively, something the team notes would have required an external queue and a serialization boundary in Go, Rust, or Node.

Chris’s closing advice for anyone picking a stack: start from a requirements list, not from what wins on paper or what a given framework already does well, and look specifically at which requirements cannot be solved any other way.

5 Likes