In this, the final blog of the series, I’ll discuss some of the advantages of adopting agile continuous integration & delivery.
So far in this series of posts, I’ve talked about continuous integration, the practice in software engineering of merging all developer working copies with a shared trunk frequently. This enables fast feed-back loops and resolution of bugs at source, quickly and early, to prevent issues being introduced into the live system later down-stream.
We discussed that developing software involves teams of people working together and the synergies of adopting a DevOps model. Automating testing, integration and provisioning of environments saves a lot of time, so that “we work smarter, not harder”. Cloud hosted environments enable us to spin up, and automatically provision, pay-as-you-go, on-demand project development environments with a just a few mouse clicks.
Cloud hosting allows us to replicate our entire website and infrastructure in a parallel global release pipe-line, that can safely and effectively prove that the code or product is fit for purpose and quality assured before release to production. Then, through a seamless blue/green switch, we can safely deploy new code, updates or functionality to the website with virtually zero outage to the customer. . Agile Dev teams and Sprints are aligned to our weekly deployment heart-beat and plan ahead, with change & release teams to ensure successful, on-time deployments.
Collaboration and knowledge transfer are also extremely important so that the dev team collectively work as one – so we use code reviews to engage the whole team and ensure that the all Dev’s grow along with the code, stimulating conversations, and cross-pollination of standards. Sounds easy, but it’s a complex, high discipline conveyor belt, and sometimes the pace can be relentless, though the rewards are well worth the effort and it gets easier as more tasks are automated.
Let’s consider some of the benefits
- Virtually zero outage because the customer is always connected to a fully working environment.
- Small, incremental releases means there are fewer surprises when a release goes into production
- The ability to instantly rollback if problems are discovered means any issues are in the wild for a significantly shorter time.
- Ability to recreate a whole, working environment in an automated fashion for development/testing and/or disaster recovery
- Reduced manual intervention(s), so working smarter, not harder.
- Shorter feedback cycles means improved feedback at source, not later down-stream when bugs are harder to fix – so bottlenecks can be identified, optimized, and removed early
- Improved bug detection as continuous integration enables us to detect and remove errors early.
- DevOps teams and projects work together better, because by integrating continuously, we quickly know if the build is successful, thereby mitigating integration surprises at the end of the lifecycle.
- Reduced number of parallel changesthat need to be merged and tested.
- All conflicts are resolved before making new change sets available, (by the Developer in the best position to resolve them), consequently reducing the number of errorsdiscovered during subsequent system testing.
- Reduced technical risk as we always have an up-to-date system to test against.
- Reduced technical debt, as our global release pipe-line does not use shared infrastructure.
- Reduced business risk, as we always know exactly how much functionality that we have successfully built, thereby improving our ability to predict when/if we are actually going to be able to deliver the product/feature.
We are still learning, gaining hands-on experience and evolving as we grow and develop with agile continuous delivery. So we are using a phased approach, which makes it more manageable, and even with some manual steps, we have successfully increased the frequency and confidence in our deployments.
In the future, we aim to make it even more slick by enabling more automation in our continuous integration, release and deployment process. In the mean-time, we’ll continue to release weekly, so we’ll always be updating, improving and adding new features & functionality to the website.
“We’ve seen the last of big bang upgrades to tfl.gov.uk“