Building blocks and How to Use Them: A MongooseIM Case Study
summary
MongooseIM is an Erlang XMPP server that shows concrete refactors: a single persistor term config replaces nested ETS, the XML parser moves to a non-yielding NIF for small messages, and a workerpool index change to persistent_term cuts lookup CPU from 15.56% to 0.22%. Load tests show 137,000 connections on a 2‑CPU C5.large and up to 2.5 million connections on large machines. Extracted libraries (base16, CSV, fast_scrypt, fast_tls, GraphQL front end) are published to Hex and used in production.
AI-written summary · about
chapters (15)
- 0:00Introduction
- 2:06MongooseIM scalability overview
- 5:18Configuration building blocks
- 9:57Event handling and telemetry
- 13:10Worker pools and API
- 15:57Open source libraries evolution
- 23:17Observability and logging
- 24:42Security with Fast TLS and SCram
- 28:17Segmented cache optimizations
- 32:54Open source contributions and testing
- 33:36Worker pool optimizations
- 36:07GraphQL and HTTP tools
- 37:13Database and ODBC adaptations
- 38:19Debugging tools
- 40:05Closing and Q&A
related talks
41mBuilding blocks & how to use them: MongooseIM case study
28mMongooseIM - The Right Tool for Scalable Messaging
41mIdioms for building fault-tolerant applications with Elixir
44mIdioms for Building Fault-tolerant Applications with Elixir
01h 06mWhat every Node.js developer needs to know about Elixir
49mAn Introduction to Erlang From behind the Trenches
03h 19mWorkshop - All Aboard The Elixir Express!
24mGoing CPU Bound
