Modularizing a Monolith with Elixir's Hot Code Reloading
2025-07-12
Alzo, an Elixir monolith deployed as one instance per client, leverages Elixir and Erlang VM's hot code loading for client-specific features. This avoids microservices' cascading failures and complex testing. Client-specific LiveView apps reside in `/alzo/lib/clients/apps`, dynamically loaded at startup. Client code is removed during the build process, preventing the main app from depending on runtime apps. Hot code upgrades are avoided for simplicity. This approach provides efficient development, maintainability, scalability, and the ability to easily refactor common functionalities from dynamic apps into the main codebase.
Read more