In my last few posts, I’ve been challenging the wisdom that more frequent deployments are better. I’ve also shared what DevOps teams must consider as prerequisites and processes beyond CI/CD to enable reliable deployments. Consider reading the following posts for more details:
- CI/CD is not Enough! 5 Pre-Deployment Priorities for Agile DevOps Teams
- 7 Prerequisites on Whether to Improve Deployment Frequencies with DevOps
- 7 Required DevOps Practices Before Increasing Deployment Frequencies
Deployment Frequency ~ f(UN, TO, DBP)
- How frequently do end-users want new capabilities? Don’t make the assumption that users want the workflow, user experience, or design of their applications changed super frequently. If the improvements you are targeting will require communications, training, and just adjusting to the changes, then deploying frequent changes can frustrate people. This is especially the case for enterprise applications deployed to a large number of people doing business-critical work. If you hange the tools and process too frequently then there will likely be frequent drops in productivity.
- How much technical overhead is there in your end-to-end deployment process? Consider all the pre and post-deployment priorities and measure the applied effort. If the overhead effort is on par with the efforts invested in development activities, then you’re deploying too frequently.
- How much business process overhead is there tied to deployments? There are likely communications and marketing efforts tied to the release of customer-facing applications. Deploying internal applications also requires communications and possibly training. The duration required to execute these activities can’t exceed the time between releases, otherwise, one release’s activities will bleed into the next one!
How to Increase Deployment Frequency
If you want to deploy more frequently, then there are several options:
- Reduce the technical overhead which is why having automated CI/CD, IaC and continuous is a critical ingredient.
- Invest in feature flagging, branching, and other techniques to enable releasing critical fixes and minor improvements as a minor release while new capabilities, workflow changes, and major UX improvements are released in less frequent major releases. See my previous post on release management for more details.
- Consider alpha and beta deployments, or deployments that are released to small segments of users to reduce the risk and disruption of frequent releases.





















Leave a Reply