A platform's service template produced fifty services, and it has since improved substantially. How should improvements reach the existing services?
Show the full answer Hide the answer
The problem
A template is a snapshot. Services generated from it diverge immediately, and after a year the estate contains fifty variants of an old template plus whatever each team changed. The improvement that the platform team just made reaches nothing.
This is the hardest part of the template model and it is the part most often omitted.
The propagation options
- Automated update proposals: the platform generates a change against each service and opens it for the owning team to review and merge. This is the mechanism that scales, because it puts the change in the team's normal workflow at the cost of one review rather than one project.
- A shared library or base image for the parts that can live outside the service, so improvements propagate on the next build rather than requiring a code change. The template then contains only what genuinely must be in each repository, which is much less than it initially appears.
- Convergence checks in the pipeline, which detect divergence and report it with a fix, rather than enforcing.
What does not work: asking teams to adopt improvements manually, which loses to their own delivery commitments every time.
The design decision that reduces the problem
Minimise what the template puts in the repository. Every line generated into a service is a line that must be updated fifty times. Configuration referencing a shared, versioned component is updated once.
The instinct is to generate everything so that each service is self-contained and comprehensible, and it is exactly the instinct that creates the maintenance problem.
The tension to hold
A shared library couples all services to its release cadence, and a breaking change in it affects everything — which is the coupling the template was avoiding.
The resolution is versioning with a supported window: services adopt on their own schedule within a stated period, and the platform provides automated update proposals rather than forcing a simultaneous upgrade.
What to measure
The distribution of template versions across the estate. A long tail of very old versions is the signal that propagation is not working, and it is visible long before it becomes a security problem — which is when it is usually discovered.