DevOps is an approach to software development that enables teams to build, test, and release software faster and more reliably by incorporating agile principles and practices, such as increased automation and improved collaboration between development and operations teams. Development, testing, and deployment occur in both agile and DevOps. Yet traditional agile stops short of operations, which is an integral part of DevOps.
The goal of DevOps is to help bring together developers who write application software and operations who run the software in production. Also, to build and maintain the infrastructure where it runs. DevOps replaces the old approach of development teams writing applications then throwing them over the wall to an operations team who deploys and manages the software with minimal visibility into how it was developed. In a DevOps environment, developers and operations teams work side by side throughout the entire process of developing, deploying, and managing applications.
Two common frameworks for understanding DevOps are “Three Ways” and “CALMS”, an acronym for Culture, Automation, Lean, Measurement, and Sharing. Culture refers to the cultural shift where development and operations work more cohesively. Automation increases velocity and ensures higher quality. The lean principles of continuous improvement and embracing failure are the foundation of an experimental mindset. Measure refers to the practice of measuring results to improve processes. Sharing emphasizes the importance of DevOps as a group effort and adopting best practices.
When do agile and DevOps work together?
DevOps can be thought of as an evolution of agile practices, or as a missing piece of agile. It’s an effort to take the innovations of the agile approach and apply them to operations processes. At the same time, it’s a missing piece of agile, because certain principles of agile are only realized in their most complete form when DevOps practices are employed. For example, there are multiple references to continuous delivery of software in agile documents, but because delivery pipelines encompass operations concerns, continuous delivery is usually regarded as a DevOps practice. Amplifying feedback loops requires improved communication across and between teams. Agile, specifically scrum, helps facilitate this communication through its various ceremonies such as daily standups, planning meetings, and retrospectives.
What are the similarities/differences between agile and DevOps?
- Agile emphasizes collaboration between developers and product management — DevOps includes the operations team
- Agile centers the flow of software from ideation to code completion — DevOps extends the focus to delivery and maintenance
- Agile emphasizes iterative development and small batches — DevOps focuses more on test and delivery automation
- Agile adds structure to planned work for developers — DevOps incorporates unplanned work common to operations teams
The Agile Manifesto explicitly prioritizes individuals and interactions, working software, customer collaboration, and responding to change. These are clearly the same priorities of DevOps but extended beyond the development process and into the management of systems and running applications.
In addition, the Twelve Principles of Agile Software includes references to DevOps principles. For example, the emphasis on continuous integration and delivery, working in small batches with frequent releases, and using automation are all referenced in the Twelve Principles of Agile Software.
In conclusion... agile AND DevOps
Ultimately the goals of agile and DevOps are the same: to improve the speed and quality of software development, and it makes very little sense to talk about one without the other. Many teams have found agile methodologies help them tremendously, while others have struggled to realize the benefits promised by an agile approach. This might be for any number of reasons, including teams not fully understanding or correctly implementing agile practices. It may also be that incorporating a DevOps approach will help fill the gaps for organizations that struggle with agile and help them have the success they were hoping for.
Atlassian connects development, IT operations, and agile teams with automation that spans Atlassian products and third-party tools. To learn more visit Atlassian DevOps.