Reactive Manifesto (RM) & Self-Contained Systems (SCS)
How can we achieve low latency when responding to end-user requests?
How can we scale the communications between services in our architecture?
What should be the communication relationship between backend services?
What should be the separation of concerns between backend and frontend?
The Reactive Manifesto recommends asynchronous (non-blocking) communication channels between services wherever possible in order to create a scalable loosely coupled architecture. This then results in a system that is responsive, resilient, and elastic.
The principles of Self-Contained Systems take the Reactive Manifesto one step further and advocate for highly decoupled verticals in the system, with each vertical owning its own frontends and data. Each SCS is highly cohesive and completely independent of other SCS's. This may lead to data duplication across SCS's, but results in a highly loosely coupled architecture. This is consistent with DDD's recommendation for data ownership within each context.
Credentials service uses async non-blocking communications with LMS
Micro-frontend relationship with their backends
Micro-frontend coordinates responses across multiple backends (i.e., async integration at the UI)
Multiple endpoints making blocking connections to the discovery service.
Connecting to other services within a web-worker response to the end-user.