The consumer culture of today, demands that tech-based companies bend over backwards to provide the latest and greatest products and services to meet their ever-changing needs and wants. It’s a culture of having their cake and eating it too; and then changing their minds after the first bite.
Traditional software release management practices were slow moving, manual and error-prone. Note that I’m doing them an injustice; they were soul crushing. I mean hours of manual action, re-action and intervention only to rollback after all the office coffee was consumed and your hair had fallen out. The reality of this approach meant, that businesses could never fully take advantage of new features at the right time; whether they were incremental improvements or innovations that changed the rules of the game.
Slowly, automation started to trickle in at different levels of the release process; Continuous Integration (CI) for example allowed for builds, tests, code coverage etc. to be triggered automatically at commit time. This addressed some of the issues around human intervention, however as we know “software only really produces value in production”1 or rather when it reaches its target audience regardless of environment, size of its user base or otherwise
Enter Continuous Delivery
Continuous Delivery (CD) is a software development methodology that produces frequent automated software releases with reduced cost, time and risk per delivery, specifically low ceremony releases with minimal human intervention (and a high-five emoji from your favourite messaging bot on successful release, if you’re so inclined).
It is the natural extension of what CI started, zooming in on the release management portion of the software pipeline. Environmental configuration, application packaging and pre/post flight checks can be controlled and managed in the right place, by the right people and not just forced under the umbrella of being a “DevOps” problem when things go wrong. CD pipelines can be tailor-made per solution or designed on a well-defined interface for like-deployments or containerized applications.
The end result means:
- Reduced time to market (new features are shipped faster)
- Reduced risk (from human error; vulnerabilities/bugs are patched sooner)
- Lower development costs
- Increased market responsiveness (respond to customer needs sooner)
- Improved organizational alignment and visibility
- Better predictability (of costing and project scheduling)
- Improved resource maximization (more room for development and resource driven innovation)
In closing, whilst making the move towards automation via CD can be costly, time-consuming or seemingly unsurmountable, the benefits in the long run far surpass any perceived obstacles. Used correctly, CD will give your business a competitive advantage and allow it to be more agile and responsive to market gaps and changes or to new and emerging markets entirely.
“Free people up to solve problems, and make a computer do the rest.”
By: Darryl Govender, Synthesis Software Technologies