Learning module-based architecture
In this section, by modules, we mean software components that can be loaded and unloaded in runtime, thereby enhancing a system's flexibility. This is different from C++20 modules, which are designed to resolve macro conflicts and double inclusion, improve compilation speed and enhance encapsulation. For C++20's modules, refer to Chapter 9, The Future of C++ Code Reuse: Using Modules.
If you've ever needed to run a component with as little downtime as possible, but for any reason couldn't apply the usual fault-tolerance patterns, such as redundant copies of your service, making this component module-based can come to save your day. Or you may just be attracted by a vision of a modular system with versioning of all the modules, with an easy lookup of all the available services. Other advantages could be decoupling, testability, and team collaboration. These benefits are the reason why Open Service Gateway Initiative (OSGi) modules...