The diagram below depicts the maturity level of a "bounded context" (or self-contained component) in the Open edX platform.
The model begins with No Boundaries (Monolith), where we develop and execute inside a monolithic ball-of-mud and there are minimal to no boundaries. With maturity, we move towards having explicit Logical Boundaries, where we develop and maintain separate plugins, but still deployed with the monolith. Ideally, however, we want to have Physical Boundaries with self-contained and independently coded/deployed/executed micro-services and micro-frontends. The micro-frontends would communicate via (REST/GraphQL/Eventing) APIs with the micro-services and interconnect via HTTP hyperlinks. The micro-services would communicate via an event stream/batch pub/sub framework.
Abridged version with impact analysis on cognitive load, risk, lead time, and autonomy
Detailed version with dependency analysis