10+ years of experience total but in love with Elixir for the last 7 years were I’ve built multiple projects.
Currently working at Supabase building multiple projects with Elixir but also releasing some opensource libraries with ex_tauri, openapi_generator and Francis.
Eager to learn more and happy to share about anything Elixir related!
Running Supabase Realtime - which uses Phoenix - across multiple global regions forced us to confront some of the limits of Erlang’s built-in distribution. :rpc wasn’t enough. Phoenix.PubSub’s default adapter wasn’t enough. And assert_receive definitely wasn’t enough for testing it.
This talk walks through three concrete problems and how we solved them. First, why we use gen_rpc and what you give up and gain compared to native distribution. Second, how we built a custom Phoenix.PubSub adapter with two-tier fan-out to reduce inter-region traffic from O(nodes) to O(regions). Third, how we test all of it in a distributed manner wiring them with different region configs, and writing ExUnit tests that assert actual cross-node message delivery with assert_receive.
Every slide has production context behind it so you will leave with patterns you can apply to any distributed Elixir system.
Key takeaways:
Target audience: