In a recent survey by Coleman Parkes Research (commissioned by CA Technologies), 1,770 senior business and IT executives were asked a variety of questions regarding the relationship between agile, DevOps, and business performance.
The findings were extremely telling:
- 81 percent believe that agile and DevOps are critical to successful digital transformation.
- More than four in five businesses are using each of these practices to some degree.
- A ‘maturity gap’ remains in organizations’ use of agile and DevOps, with only around a third having deployed either practice widely across the organization.
- Advanced agile users see a 40 percent improvement in time-to-decision (that is, the time to act on new opportunities), compared to 33 percent for basic users.
- Advanced DevOps users see a 42 percent improvement in speed to market, compared to 24 percent for basic users.
- There are also huge advantages to adding DevOps practices to an agile environment. This improves new business growth by 63 percent more than using agile alone–and operational efficiency by 41 percent more.
I want to be very clear. This survey does not guarantee that adopting DevOps will be a smooth transition with successful implementation. While these survey results suggest that those organizations who don’t adopt DevOps will fall behind, it is important to fully grasp the components of DevOps before deciding to adopt it.
Understanding the Difference between Continuous Delivery, Integration, and Deployment
All three of these continuous processes are ubiquitous terms in DevOps, so understating the unique characteristics of each process is imperative in order to implement them correctly.
Continuous integration is a development process requiring developers to integrate code into a shared repository or environment multiple times each day. Regular, frequent integration allows for rapid error detection and easy error location detecting to streamline the development process for safer, more rapid deployment of changes. In the continuous integration process, code is verified using automated build functionality on each check-in. Frequent integration combined with ongoing verification and rapid error detection means less back-tracking to figure out where things went wrong, shortening the time between integrations and offering substantial cost-savings in development.
Continuous delivery is a method that promotes the adoption of an automated deployment pipeline to quickly and reliably release software into production. Its goal is to establish an optimized end-to-end process, enhance the development to production cycles, lower the risk of release problems, and provide a quicker time to market.
Continuous Deployment takes automation one step further, releasing code as soon as its deemed ready. In other words, instead of holding on to the build, its directly sent out to all users. Sounds a bit risky, doesn’t it? Not to worry, the code has already been tested through continuous delivery, before the automated merging of the changes. While the business requirements dictate the release of the code, continuous deployment allows for the code to always be ready.
How to measure the success of DevOps
It can be argued that DevOps success cannot be measured. However, I believe there are certain metrics that clearly measure if the implementation of DevOps is successful. Mike Fields, Chief Architect at IBM, and Tendai Chinoda DevOps Architect at IBM, point to 9 indicators that measure the current conditions and forecast trends. They are deployment frequency, failed deployment percentage, change volume, lead time, response time, availability, mean time to recovery, user volume, and user ticket volume. The three common denominators among these metrics are speed, safety, and scalability, which dictate the success of DevOps in the organization.
The Database is the catalyst of successful implementation of DevOps
While it might pose the biggest challenge in the adoption of DevOps and the implementation of continuous processes, the database is arguably the most important factor. There are many tools that exist that incorporate the database into the DevOps tool chain. They help contribute to safely automating database branches and merges, consolidating changes into an integration environment, safely deploying changes to production with a fully automated, and ensuring bullet-proof deployment process. This ensures safe deployment to production, eliminating the possibility of overriding critical changes implemented in the target environment. DevOps for the database saves hours and hours of valuable development time, otherwise spent on manual processes. The circumventing human errors, that can lead to costly and potentially devastating crashes, eliminates the fear of many of the doubters that implementing DevOps for the database is dangerous.
We know that the goal of DevOps and continuous processes is to ultimately provide a quicker time to market. It is important to thoroughly understand the demands in the transition from a traditional waterfall process to DevOps before fully embracing it. It critical to be ready for the potential bottlenecking and delays caused by the rapid increase in application releases, and the limitations and dangers posed by manual processes in DevOps, making it impossible to maximize efficiency. Rich statistics can be a misrepresentation of the truth, as adopting DevOps is not as easy of a process as some organizations make it seem.