Living in an eventually consistent world
In Chapter 1, Architecting for Innovation, and Chapter 2, Defining Boundaries and Letting Go, we discussed the importance of event-first thinking and decomposing a system into an event-first topology of autonomous services and subsystems. And in Chapter 5, Turning the Cloud into the Database, we will turn our databases inside out and replicate derived data across the system. We do all this in an effort to create an architecture that enables change. We are fortifying the boundaries between services and minimizing the need for inter-team coordination so that autonomous teams can experiment, learn, and adapt more quickly.
But sooner than later, in any conversion about loosely coupled, event-driven systems, questions and concerns naturally arise regarding data consistency. These concerns stem from the days of information silos, long batch cycles, and spaghetti integrations that produced reconciliation nightmares. The relational database and real...