Service Refactoring (Erl)
How can a service be evolved without impacting existing consumers?
The logic or implementation technology of a service may become outdated or inadequate over time, but the service has become too entrenched to be replaced.
The service contract is preserved to maintain existing consumer dependencies, but the underlying service logic and/or implementation are refactored.
Service logic and implementation technology are gradually improved or upgraded but must undergo additional testing.
This pattern introduces governance effort as well as risk associated with potentially negative side-effects introduced by new logic or technology.
All parts of a service architecture abstracted by its contract can potentially be refactored without compromising existing consumer relationships. The service contract and the remaining, externally facing message processing agents (red) are not affected by the refactoring effort.