Continuous Delivery 3.0 Maturity Model
Continuous Delivery 3.0 Maturity Model (CD3M)
NISI has recently released the Continuous Delivery 3.0 maturity model, or CD3M. The Maturity Model guides the improvements of Continuous Delivery pipelines and/or software development processes in software organizations. The CD3M maturity model has five levels from Foundation level (1) towards Expert level (5). In each maturity level a number of practices needs to be implemented to advance the CD 3.0 pipeline.
The model consists of five distinct categories.
Most companies already have some data gathering in place or have a customer feedback loop to track how their software is perceived by users. Continuous Intelligence is the automation of this software user tracking process, to enable software companies in developing software features that add the most value. One practical example is gather such at is with A/B testing.
An Agile team should have organized backlog items with perfect prioritization. Continuous Planning is the automation of the Agile planning process, to enable backlog item prioritization, refinement, allocation and reporting for Agile ecosystems. That automation is enhanced with Machine Learning. AI aids automatic backlog creation and backlog prioritization. Continuous Planning is heavily supported by Continuous Intelligence
Continuous Integration integrates the new/changed code into the current system after each check-in without any manual steps. This can be realized by using a workflow orchestrator such as Jenkins or VSTS where you can configure a pipeline to do that for you. Best practices for Continuous Integration are having a build that can be used for all environments and using a microservice architecture. In the most ideal situation you want to automatically up- and down-scale the continuous integration services based on how much you are using them.
Continuous Testing (CT) is the process of executing automated tests as part of the software delivery pipeline. The goal of CT is to obtain immediate feedback about the business risks associated with a software release candidate. Basically, an ideal end-to-end pipeline should automatically run all tests created by the team automatically, including regression tests to check the quality of the new software as a whole. CT includes unit testing, acceptance testing, security testing and performance testing, and any other necessary tests for validation and verification purposes.
With Continuous Deployment we imply a software development practice, for which environments are setup and target objects are deployed in an automatic way. In a basic pipeline the build should be automatically deployed to the test environment. At a more advanced level successful deployments are also automated in a acceptance and production environment. Ultimately this would be achieved with zero downtime end-to-end deployments.