Software development and IT operations, known together as DevOps, play a crucial role in modern application development. DevOps is based on a set of continuous delivery principles for creating a repeatable, reliable process for releasing software.
The concept of DevOps has been around for the better part of a decade. However, it's only been the past few years that it's gained traction broadly. There are still many companies that have not embraced it, primarily because change is hard and can be risky, but the benefits generally turn out to be worth it. I've talked to companies that have seen software deployment times cut by a factor of 10 while the lead time for changes is faster by multiple orders of magnitude. Appdev groups who do not embrace DevOps are holding their companies back and will eventually fall behind their peers.
There are DevOps best practices organizations can follow to ensure that they're releasing software with quality and speed, which can de-risk adoption. Deepty Chauhan, site general manager of Keysight's Atlanta Software Design Center, shared some of those best practices and the company's own experience with DevOps in a recent webinar, which was part of a larger one, "Optimizing DevOps with Keysight's Continuous Testing Bootcamp".
Nearly everything about software development is changing due to the need to innovate quickly while reducing risk and delivering a perfect customer experience. DevOps is an opportunity for organizations to deliver value to the customers constantly, Chauhan said. The key to successful DevOps is to get ideas into production fast, get feedback from customers frequently, and then repeat the process.
DevOps requires continuous integration and delivery/deployment (CI/CD), typically involving ongoing automation and continuous monitoring throughout the software lifecycle. CI is the automation process for developers, while CD refers to changes developers make in further stages of the pipeline. Continuous testing (CT) is also an important part of DevOps to ensure that bugs and issues can be fixed quickly.
According to Chauhan, developers should have tests running each time a build is happening, including unit tests and integration tests. Organizations that still have manual processes in place struggle with rapid software delivery and cannot keep up with the pace of modern app development. Today, software has to be scaled out to hundreds of customers, not just a single customer at once.
Chauhan gave an example of Keysight implementing DevOps in its software products to address problems with integration, testing, and building elasticity. One of the products had 15 million lines of code and nearly 400 components. Through DevOps, Keysight was able to automate 85% of tests. It reduced build time and cycle time by 30% and 40%, respectively. Additionally, more than 160 components were migrated to CI/CD pipelines.
The perfect recipe is combining DevOps with agile methods, Chauhan said. Agile is a comprehensive approach to various phases of the DevOps lifecycle, including planning, development, delivery, and operations. DevOps evolved from agile and other disciplines such as waterfall, a traditional approach to developing software in stages. When effectively executed, DevOps results in faster, more dependable software releases.
"DevOps is a journey, not a destination," Chauhan concluded. "The main focus point has to be the customers. While company leadership must be committed to making this happen, it's a shared responsibility. Every developer and every team should feel like they have a stake in the DevOps transformation."