During the early 2000s, just as the dot-com bubble began to finally burst, a group of software development engineers came up with a new methodology for designing software. Previously, development teams used the waterfall development concept, in which each stage of development had to be completed in its entirety before moving on. While this process had worked well in fields such as mechanical engineering, the fluidity of the world of software development made this rigid structure inefficient.
The new process they came up with was known as Agile Software Development. This new methodology focused heavily on the idea that over the course of the development cycle, requirements are likely to change, unexpected bugs may cause issues, and functional code should be made frequently. This allowed for greater flexibility during development, as well as increasing collaboration between customers and shareholders with developers. This proved to be much more efficient and successful than waterfall development, and thus has become the industry standard.
However, Agile Development did not include the operations portion of a product’s life cycle. The operations teams are tasked with maintaining the infrastructure on which the product runs on, as well as deployment and management of the product. A lack of communication between the development and operations departments in the Agile structure could lead to operations teams being tasked with managing a product they have no insight into how it was developed.
This lack of transparency is addressed in a new method of development, known as DevOps. DevOps is designed to extend the principles of Agile Development to include both development and operations teams, allowing for both groups to communicate on how to design a product that works well for either party. To achieve this, DevOps often uses the CALMS framework; culture, automation, lean, measurement, and sharing.
Culture refers to the change in general mindset for teams. The idea is to shift towards a culture in which development and operations teams work together to increase efficiency. Automation of testing and development can increase quality of work and throughput of teams. Lean refers to the idea that failure is a key component to an experimentation, which is helpful in creating new and effective code. Measure ensures that test results are recorded and progress can be monitored and assessed. Finally, sharing refers to how collaboration and communication are essential components to DevOps.
While DevOps is still a new framework, it’s likely that it will be implemented in more and more development teams and companies. DevOps builds on existing principles laid down by Agile Development, while addressing the lack of transparency between development and operations. Because this is less of a radical shift in methodology and more of a modification of existing practices, it is likely DevOps will continue to grow and develop, just as Agile did 20 years ago.
Works Cited
Atlassian. “Agile vs DevOps.” Atlassian, http://www.atlassian.com/devops/what-is-devops/agile-vs-devops.
From the blog Butler Software Construction, Design, and Architecture by Griffin Butler and used with permission of the author. All other rights reserved by the author.