Backward compatibility
The key aspect of changing architecture in a running system is the necessity of always keeping backward compatibility in its interfaces and APIs.
We also talked about backward compatibility in regard to databases changes in Chapter 3, Data Modeling. Here we will talk about interfaces, but it follows the same ideas.
Backward compatibility means that systems keep their old interfaces working as expected, so any calling system won't be affected by the change. This allows them to be upgraded at any point, without interrupting the service.
Keep in mind that backward compatibility needs to apply externally, as customers rely on a stable working interface, but also internally where multiple services interact with each other. If the system is complex and has multiple parts, the APIs connecting them should be backward compatible. This is particularly important in microservices architectures to allow the independent deployment of microservices...