How the microservice vs. monolith debate became meaningless




The problem of distributing systems is the problem of sharing data between multiple computers without having to think too hard about the implications of this. Databases do a lot of heavy lifting to safeguard data-sharing between processes by providing consistency guarantees. Even though these guarantees are often poorly understood by developers, these are what protect them from having to write much more complicated software when relying on a single database. Databases keep our code simple and are therefore immensely valuable. Much of the literature around microservices deals with demarcating boundaries around services for this reason.Microservices are defined by their ability to serve the same client or API. This already implies some shared knowledge about the end-user between its constituent parts, but there is more. Since each component serves some specific purpose, and since these must work in some predetermined order to serve the requests mentioned above, there’s a process connecting the components running through the whole system. How to manage this process is what the orchestration vs. choreography debate and the various distributed workflow tooling is all about. Again, we’re not here to have opinions on these, so we’ll just say that this demonstrates that the hard problems being discussed around microservices are about how to manage data that affects multiple components and that there is no way to completely eliminate this problem.