Achieving zero-downtime deployments
The days of taking a system offline for maintenance are long gone. Customers expect a system to be online at any time. Even employees, particularly regional employees, use systems around the clock. There is simply no viable window to take a system offline.
We need the ability to seamlessly perform deployments without interrupting the end users. This is one of the goals of autonomous services and micro-apps. Each piece is independently deployable and supports a different actor, which means that they deploy more quickly and they impact different groups of users. Plus, in the event of a mistake, they limit the blast radius.
However, there are still dependencies between these components. For example, suppose we need to change the name of a field in the domain model. This change has a ripple effect. It impacts the interactions between the frontend and the backend, between the backend and the data store, and between the event producer and the downstream...