|The following is an excerpt from Reactive Microservices Architecture: Design Principles For Distributed Systems — By Jonas Bonér .|
Time: Allowing concurrency
Space: Allowing distribution and mobility—the ability to move services around
When adopting Microservices, it is also essential to eliminate shared mutable state and thereby minimize coordination, contention and coherency cost, as defined in the Universal Scalability Law by embracing a Share-Nothing Architecture.
Resilience — the ability to heal from failure — depends on compartmentalization and containment of failure, and can only be achieved by breaking free from the strong coupling of synchronous communication. Microservices communicating over a process boundary using asynchronous message-passing enable the level of indirection and decoupling necessary to capture and manage failure, orthogonally to the regular workflow, using service supervision.
Isolation also makes it easier to scale each service, as well as allowing them to be monitored, debugged and tested independently—something that is very hard if the services are all tangled up in the big bulky monolith.
|Decoupling Time, Decoupling Space and Embracing Failure are three of the Reactive Principles .|