Resolving is not learning
A service fails, the team fixes it, everybody breathes and goes back to what they were doing. Three months later, the same failure, in another service, with another person on call who did not know what happened the first time.
Resolving an incident is necessary. But if at the end of the incident the platform is exactly as it was before, the only thing gained was time.
The full cycle
- Recover the service, with the procedure designed for it (we covered this in designing for failure).
- Analyse without looking for culprits. The question is not who got it wrong, but what allowed the error to reach production.
- Find the root cause, which is almost never the obvious one. 'Somebody pushed a bad configuration' is the symptom; 'nothing was checking that configuration before deploying it' is the cause.
- Turn it into something permanent.
What counts as 'permanent'
'Being more careful' does not count. What counts is something that keeps working once everybody has forgotten the incident:
- A test that would have caught the failure.
- An automatic validation in the build, like the ones in the article on letting the build fail.
- A rule in the organisation's standard, with its check.
- A decision record if the failure revealed that a design decision no longer holds.
Measuring it
A platform that learns shows it in two numbers: repeat incidents go down and more and more failures stop at the build instead of reaching production.
Many of those rules and validations are applied today by AI assistants working inside the platform. How that is governed is the last block of the series.
How we apply it: Platform Engineering.