Designing for remediation
So far, we've talked about coding the software, implementing the required infrastructure, automating it all through CI/CD pipelines, testing the environments, detecting issues, and, if needed, fixing the problems. But there's something that we haven't been discussing yet and that's the speed of software development and DevOps itself.
DevOps is about learning. As the team and projects grow, they learn how to improve. They learn from the product itself and how it's used, and they learn from looking at other projects, technologies, and methodologies. These lessons are adopted and injected into their own project. The team doesn't need to start over, though – they can adopt and adapt as they proceed. We call this remediation, which is the process of improving an existing situation.
Remediation can take place on three levels, as follows:
- Infrastructure: Assuming that we build everyone according to the "...