Architecting Cloud Native Applications
上QQ阅读APP看书,第一时间看更新

Reactive Manifesto

The Reactive Manifesto embodies a concise description of the system properties we are striving for. There are just four, seemingly straightforward, properties. A system should be responsive, resilient, elastic, and message-driven. We all certainly want our systems to be responsive, and if you are building a cloud-based system then elasticity is definitely a goal. But the magic lies in how we achieve resilience, because the responsiveness and elasticity of a system are a function of how it achieves its resilience. It is important to recognize that the message-driven property is the means to achieve the other properties.

These properties will manifest themselves in our cloud-native systems. Our objective is to use asynchronous, message-driven, inter-component communication to build resilient components that are responsive and elastic. We want to accomplish this in the context of our cloud-native definition such that the architecture is approachable by everyday companies. We will leverage value-added cloud services to empower self-sufficient, full-stack teams to create bounded isolated components that scale globally. Event streaming will be the mechanism for inter-component communication. We will effectively turn the database inside out to achieve cost-effective resilience through data replication in the form of materialized views. These materialized views act as a cache to make components responsive and provide proper bulkheads between components. They also make the system more elastic as the database load is spread across many independent data stores.

Let's continue to dive deeper into how we turn the database inside out and ultimately turn the cloud into the database.