Misael Pérez Chamorro is a software architect with over 18 years of experience designing and building distributed systems, mobile apps, and backend platforms across Elixir, Erlang, Go, and Ruby. He currently leads development at Tich, an Elixir-powered virtual classroom platform focused on real-time collaboration and media streaming.
He’s the former host of the virtual Elixir Meetup in Mexico and a passionate advocate for using OTP to solve real-world coordination and scalability problems. When he’s not coding, you’ll probably find him on a bike ride or exploring open-world video games. Misael enjoys systems that are clean, resilient, and fun to build — which is why he keeps coming back to the BEAM.
At Tich, our online teaching platform, we needed to record live sessions. This included real-time WebRTC media and interactions like whiteboard drawing, slide navigation, and student tools. Initially, we used a Node.js/Puppeteer setup to capture everything from a browser. It worked until we tried to scale. We ran into orchestration issues, communication overhead, and difficulties supporting elastic growth.
Since our backend was already written in Elixir, we chose to migrate the entire recording infrastructure to an Elixir-native solution.
Elixir provides lightweight process supervision, built-in fault tolerance, and a native way to handle distributed workloads. We built a distributed worker pool where each worker runs in a Kubernetes pod and supervises a Python-based ChromeDriver process. Node communication happens through BEAM messaging—not HTTP—making coordination fast, fault-tolerant, and fully integrated into the runtime. With native distribution, we built a system that’s clean, reliable, and aligned with what the BEAM was built for.
In this talk, I’ll share how we made that transition—from architecture to small insights that shaped a robust and scalable recording system.
Key Takeaways:
Target Audience: