In the midst of Digital Transformation, speed is the most important metric technology departments should focus on. With the right speed, you can deliver features and fix problems in production systems at a moment’s notice, several times a day.
Aim for continuous deployment to production
Continuous integration and continuous deployment (CI/CD) are well-known automation practices which have become widely used to deliver software quickly and safely. Quite often, however, these automaton pipelines only go as far as a testing or ‘staging’ environment, where code changes and infrastructure changes build until such a time as a decision maker says it’s time to push the button to go live.
While this is great for the development process, you’ll then most likely hit the same issues you’re trying to avoid during development in your deployment into production. Continuous deployment to production essentially takes these practices one step further – all the way to production.
Make small changes, often
Continuous deployment to production means every feature is “done” when it’s running in production. The process generally starts when a feature or a part of a feature has been written by (a pair of) engineers, reviewed, and merged into the master branch of a repository. The automation then kicks in to run all the tests and any other automated quality checks, eventually ending with a deployment to the production environment, in front of customers, with no further manual gates.
Making small changes often has been proven to help de-risk software delivery. Small changes made in the morning and deployed in the afternoon allow for any small issues after deployment to be easily tracked down, debugged, and fixed quickly – even if your automated checks didn’t catch them (which, over time, becomes pretty rare).
Experience the benefits
The benefits of constantly shipping small changes to production aren’t limited to quality and reliability. Product, user experience, visual design and ultimately your customers also benefit from these changes as the time through the deployment loop is the lower bound on how quickly things can change and adapt. With continuous delivery, it can be significantly reduced. This allows a full change in how you go about product delivery, enabling a shift to a continuous build, measure and learn cycle.