Given the rapidly evolving global work climate, companies are focusing increasing development flow in order to aid the high performance of development teams. New development methodologies such as Agile, have become increasingly popular to develop robust and error-free software products faster and increase team efficiencies. Agile provides organizations the flexibility to respond to demanding market changes and consumer preferences. DevOps and Continuous Delivery, terms that are often used together, are two rapidly burgeoning development methodologies, that accelerate the delivery of software products by facilitating continuous builds and continuous deployments. DevOps connects development with IT operations and has evolved from being a niche strategy to become more mainstream. According to a survey conducted by PuppetLabs, companies employing DevOps are able to deploy code 30 times more and are likely to fail 50% less in doing so. A Gartner Survey estimated that in 2016 over 25% of the 2000 global IT organizations were likely to have adopted DevOps and DevOps tools owing to the rise in Cloud and open source software adoption.
Many industry leaders view DevOps and Continuous Delivery as an extension of Agile that transform the way software is delivered. However, it would not be fair to use these two terms interchangeably.
The DevOps methodology is focused on more collaboration and communication between software developers and IT professionals and relies on increasing automation in the process of software delivery and infrastructural changes. This methodology, which is more of a culture shift, believes in creating an environment where software development, testing, and releases can be facilitated more easily, frequently and in a more reliable manner. This requires a tight integration of siloed functions such as those of QA and Operations. Taking agile development a step ahead, DevOps aims to deliver software into production and does not simply hand off the code for release. The DevOps methodology pushes for poly-skilled and autonomous teams, high levels of test as well as release automation and promotes common goals between poly-skilled team members. In DevOps, the development and the operations team function as a common service and are collectively responsible for the service and maintenance of the product. DevOps engineers are responsible for a plethora of functions and assist QA and software development engineers in their development requirements. So, for example, if a particular project needs a test server to be set up and configured the software engineers can take help from their DevOps partners to do so. They might even ask DevOps engineers to automate builds to support continuous integration or even ask them to write custom scripts for a particular function.
Understanding Continuous Delivery
Continuous Delivery is more like a discipline that facilitates software building in a manner which allows software deployment throughout its lifecycle and permits software release into production at any time. Martin Fowler, a renowned author, software consultant, and speaker states that Continuous Delivery can be achieved by, “continuously integrating the software done by the development team, building executables, and running automated tests on those executables to detect problems. Furthermore, you push the executables into increasingly production-like environments to ensure the software will work in production.” Continuous Delivery is achieved by a continuous integration of software developed by the software team, building executables and then running automated tests on them to detect problems and in then pushing these executables into production environments to identify issues with the software, to ensure that the software will work as designed. A fine example of Continuous Deliver at work is Amazon. A presentation from Amazon shows how Amazon rolled out a new feature into production every 11 seconds! Not 11 days or hours, but 11 seconds!
In order to achieve Continuous Delivery teams have to ensure the following:
- Software has to be deployable throughout the lifecycle
- The focus is more on ensuring that the software is deployable and less on developing new features
- Fast and automated feedback when someone makes a change to the software code to ensure production readiness
- Ability to perform on-demand push-deployments of any version of the software irrespective of the environment
Much like DevOps, continuous Delivery too requires a collaborative relationship between the development team and all others invested and demands automation of the delivery process.
Both DevOps and Continuous delivery facilitate small and quick changes and rely on business and IT collaboration to enable faster time to market of products and services. However, DevOps is part of Continuous Delivery. Gartner states that DevOps is a “Tool-Centric philosophy that supports a Continuous Delivery value chain” and is more like a journey towards sound engineering with repeatable deployments and collaborative working and is a culture shift while Continuous Delivery is mainly the process that facilitates continuous integration by completely automating the software delivery lifecycle till the last environment before production. Put another way, DevOps is simply Dev & Ops roles combined to ensure a deliverable service/product, whereas Continuous Delivery is rolling out of that service/product. They are inter dependent, but cannot be termed as same.
That being said, it is only when organizations successfully implement DevOps, that they will find that their capacity to release cycles and changes will increase, the null-release cycle will decrease and the actual benefits of agile development efforts will flow into production. A working combination of DevOps and Continuous Delivery ensure better communication between invested parties and help create business value by optimizing the working domains by facilitating interactions and establishing processes that help people work better and more efficiently. A great software product is then a sure consequence of this implementation.