“I feel the need – the need for speed.” Pete “Maverick” Mitchell’s words in Top Gun in 1986 rang true for fighter pilots and race car drivers back then.
In 2020, the words stand true for the dynamic software product development world, where it is becoming a necessity to deliver code faster, safer, and with better quality.
For instance, in the year 2018, Google revealed at the JFrog SwampUp conference in Napa that over 500 million tests are being run per day inside Google’s systems. That’s to accommodate over 4 million builds/day.
To make the dream of continuous releases to production reality, organizations are leveraging a blend of various delivery approaches that bring together different layers of technology—DevOps, Continuous Delivery (CD), and Continuous Integration (CI)—developing at different speeds, to deliver business outcomes.
The concept of a modern-day faster software release is driven by lean software practices. However, despite the obvious benefits, according to Forrester’s Global DevOps Benchmark Online Survey, just 45% of organizations automate release to production.
The Business Need for Faster Software Release
Taking into consideration the cut-throat business environment, businesses cannot afford to wait for several months to release their new features into the hands of ever-demanding customers.
Thus, software deployment frequency is constantly under pressure to increase.
The success behind Candy Crush, one of the favorite games of 270 million people (including me) since 2012, lies in its continuous updates as per the demands of their users. King, the Swedish developer behind Candy Crush Saga, adds new content to the game weekly and updates the back-end client at least every fortnight.
The Statistics that Back the Need to Release Software Faster, Safer, and with Better Quality
The State of DevOps 2019 report highlights that high performers overtook low performing organizations in both throughput and stability.
- Code throughput
Throughput is estimated by how frequently a team is able to deploy code, and how fast it can move from committing the code to deploying it.
- System Stability
Stability is estimated by how quickly the system can recover from downtime, and how many changes succeed, as compared to how many failed.
High performers did significantly better than low performers in the following ways:
- The deployment frequency of high performers is approximately 4% higher than low performers.
- The lead time for changes in the case of high performers is approximately 3.33% higher than low performers.
- In the case of unplanned outages, the high performers’ time to restore service is 3.33% more than low performers.
- The change failure rate of high performing companies is 7 times lower as compared to low performers.
The Software Release Process and the Technology Involved
“I want it all and I want it now…”
sang Freddie Mercury (lead singer of the band Queen). His words stand true today for all those organizations that strive to survive and wish to accelerate their release frequency.
To streamline the process of software release, Jez Humble designed a graphic for his book Lean Enterprise. It highlights the process of a production release, outlining the range of changes that organizations need to make to move from releasing once every 100 days to hundreds of times a day.
To streamline your software release process, it is advised to follow the best practices with a blend of various technologies and tools, working together to align your business strategy with your customers’ needs.
So, here is a list of tools and technologies used for the faster software release.
Leading tech companies were the early adopters of DevOps. Facebook, for instance, releases 100 million lines of code daily. By 2015, Amazon developers were doing a production deployment every 1 second.
Imagine the speed that Amazon might have achieved by 2019.
However, the State of DevOps 2019 report mentions that the industry has “crossed the chasm” with regards to DevOps. The report highlights that the industry velocity is increasing and speed and stability are both possible, with shifts to cloud technologies fueling this acceleration.
However, shifting to cloud technology without security-first approach will put your product in danger. Thus, taking DevOps to the next level, many organizations have started to embed security as a key parameter in their DevOps pipelines. This new approach is one of the latest digital technology trends, named as DevSecOps.
If deployed strategically, DevSecOps can boost compliance maturity levels of a company’s DevOps pipeline, thereby ensuring a faster and safer release of the software.
The pillars of successful DevOps include – Continuous Integration (CI) and Continuous Delivery (CD), which helps companies in building products of the utmost quality.
2. Continuous Delivery (CD)
Continuous Delivery is mainly associated with the DevOps methodology and the practice of continuous deployment. Continuous Delivery is the process of making changes of all types, including new features, bug fixes, and tests, configuration changes, etc., ensuring production runs faster, more securely, and sustainably.
Continuous Delivery offers the following benefits:
- Low-risk releases: By making on-time and error-free product deployments
- Higher quality of products and services: By building deployment pipelines from the beginning
- Lower costs: By putting resources in for building, testing, deployment, and environment automation, and releasing software to production
- Superior products: By getting users feedback throughout the delivery lifecycle, based on working software.
Despite the benefits of Continuous Delivery, there just a few organizations that regularly perform advanced continuous delivery practices.
Research on Continuous Delivery mentions that:
- Only 15% of organizations can afford to implement CD with no barriers.
- 82% of organizations believe that their budgets could prevent the implementation of CD.
- 88% of organizations said that a lack of technical knowledge or skill could be a prohibiting factor in implementing CD practices.
HP’s Laserjet Firmware Case Study: Transforming Application Development and Deployment
Although an old case study that dates back to 2011, however, it is still a relevant example of how Continuous Delivery managed to improve the efficiency of HP’s LaserJet Firmware division: a division, which builds the firmware running all their scanners, printers, and multifunction devices.
a) The Problem: They were moving too slowly. They had been on the critical path for all new product releases for years and were unable to deliver new features.
b) The Goal: To improve developer productivity by a factor of 10
c) The Solution: To achieve this goal, they started to implement Continuous Delivery with a major focus on Continuous Integration and Test Automation.
d) Achievement: After 3 years of work, the HP LaserJet Firmware division improved the software delivery process in the following ways:
- Overall development costs were reduced by ~40%.
- Programs under development increased by ~140%.
- Development costs per program went down 78%.
- Resources driving innovation increased eightfold.
3. Continuous Integration (CI)
Continuous integration automates the building and testing of source code, every time a developer checks in their code. This means that each time a developer makes a change, a time-automated system enables them to identify problems early.
The State of DevOps 2019 report mentions that creating a continuous integration platform that makes it easy for teams to get fast feedback on their automated tests can be a significant force-multiplier when used across several teams in an organization.
Listed below are the benefits of using CI:
- It helps developers by providing methods to fulfill your business needs
- It offers quality code to make the software development for your business run easily.
- It helps reduce errors or risks, delays in delivery, and poor productivity.
- It helps developers ensure quality and value-added, by spending minimal time on debugging, merging, deployment, etc.
The same report highlights that automated testing impacts CI positively. With automated testing, developers gain confidence that a failure in a test suite denotes an actual failure just as much as a test suite passing successfully means it can be successfully deployed. The ability to reproduce and fix failures, gather feedback from tests, improve test quality and iterate test runs quickly also ties into automated testing.
The reality of today’s product development world is that the idea of the perfect software release is now obsolete. The factors that matters the most are: usability, fast turnaround, and overall development efficiency.
Speed and innovation are the two factors that separate the winners from losers in today’s digital age. To reach there, businesses should start to adopt an agile methodology with a focus on blend of technologies–DevOps, CI, and CD–to increase the software release frequency.