Continuous Delivery Maturity Models provide frameworks for assessing your progress towards adopting and implementing continuous integration, delivery and deployment (CI/CD).
Maturity models typically break CI/CD down into multiple pillars, such as organizational culture, deployment process, testing, and reporting or feedback. For each pillar, the model describes the practices and behaviors associated with each level of maturity, ranging from basic or beginner to expert.
For example, if you’re new to CI/CD, the starting point is to ensure all your code is in source control, encourage everyone on the team to commit changes regularly, and start writing automated unit tests.
Although teams at this early stage in their CI/CD journey typically release changes manually after several weeks of testing, the goal of regularly releasing on a specific date creates a focus on having a reliable and predictable process that can then be refined and automated.
Once you have established the foundations, you can look towards automating the first stages of your pipeline by extending your automated tests and collaborating with operations teams on the creation of pre-production environments.
As you continue to build out the pipeline, your team will need to collaborate more closely with other functions and start taking more responsibility for delivering your software. To do that, they need visibility of how the software performs in production and for the rest of the organization to be bought into the approach.
Laying the foundations for these elements early on makes it much easier to keep progressing as you solve the technical challenges. The practices described at each level of maturity all help you work towards a fast, reliable, repeatable release process that provides rapid feedback on changes.
Depending on your organization, your end goal may be to have changes deployable within a day (an intermediate or advanced level). Or your goal may be to achieve continuous deployment, with updates being shipped if they pass all stages of the pipeline successfully. You can also use continuous feedback from production to inform hypothesis-driven development (expert level).
Using a continuous delivery maturity model can facilitate discussions on what you want to achieve with CI/CD and will help you map out a step-by-step approach to implementing the various elements. Building up your pipeline incrementally, with achievable goals along the way, makes the process more manageable and provides opportunities to take stock and learn from what you have done so far.
By plotting where you and your team sit against each of the pillars, you can also identify any areas that need more investment to bring you up to par before you start progressing to the next stage. Finally, sharing a maturity model with business stakeholders will also help to set reasonable expectations and communicate the benefits derived from CI/CD without reaching expert levels.