In the software development industry, the term DevOps has become increasingly popular. It may not be immediately clear what this buzzword actually means, but the concept is not difficult. Many organisations might already practice DevOps without realising it. Those who emphasise the importance and value of DevOps often compare it to Agile. But what is DevOps and how does it relate to Agile software development?
What is Agile?
To best understand DevOps, it is important to understand what Agile is. Agile software development is a set of values and principles that attempts to make the development process as efficient and responsive as possible.
Teams that practice Agile accomplish this by creating software products in small bits, so that customers receive the software earlier, and can offer feedback more quickly. In contrast, traditional waterfall or cascading software development is very sluggish and slow paced. The product takes more time to reach customers, and the delay before teams can incorporate feedback is significantly longer. If software goes to customers with bugs, if often takes longer for the development team to fix the errors and deliver a fix to customers.
Agile improves on waterfall development by implementing small, continuous releases with incremental improvements. Instead of large and sweeping changes, Agile teams make small changes that require less time and overhead. These small changes ultimately allow the Agile team to put a product on the market faster.
What is DevOps?
What Agile accomplishes for specifically the development portion of a product’s life cycle, DevOps handles for all stages of the duration. DevOps or Development/Operations is an extension of Agile, and attempts to unify all parts of the software organisation behind the same goal.
Traditionally, software development had a firm break between the development stage and the deployment or “operations” stage. Releasing a product to customers is often described as “passing it over the wall.” The development team hands off the product to the operations team, which is then responsible for installing and maintaining the product for customers. Because of this disconnect, the development and operations departments are often seen as silos, very contained and concentrated. Often, this results in teams that oppose each other, rather than working together. Development members blame operations members for failure to properly install or maintain, where operations members are quick to point out that product bugs are the fault of developers and somehow bypassed testers.
DevOps breaks down these silos and instead encourages a culture of responsibility and ownership. In a DevOps organisation, development and operations teams recognise that they are part of the same group, and share the same goals. Each segment upholds their own duties for the process, and seeks to facilitate the work of other segments as much as possible.
When development and operations work together more effectively, they create a more efficient workflow. More efficiency tightens the feedback loop between the development team, the operations team, and the customer. A tighter feedback loop means faster resolution to customer problems, and results in a better product overall.
Practices of DevOps
DevOps is more than just abstract policies about an ideal software organisation. There are definite practices in place that teams can implement when following DevOps.
Continuous integration means that code is regularly merged into a central repository. Instead of having a scattered source code with versions that might not be compatible, code with continuous integration is always collected into a single, definite version.