I have always believed that operations, which is DevOps’ domain, should be built on Agile values. By this, I mean making small releases and adapting your deployment and release process by following how the system behaves and taking corrective actions where needed. Small iterations and feedback are key here.
Moreover, you need to have Agile operations in order to enable feedback loops from end-users and the environments you use. This is the concept of DevOps being ‘Agile infrastructure’.
So, in my opinion, the Agile Manifesto has always been the main driving force of the DevOps movement! And that might sound strange coming from a DevOps architect.
So why use a different term than Agile? Why use the term DevOps at all?
The origins of Agile and DevOps
When the Agile Manifesto was conceived in February 2001, I don’t believe IT operations just wasn’t ready for the change. That's why, seven years later in 2008, the term DevOps was born to address this rigid operations problem and the cultural chasm between development and operations. Creating software through a managed service ticket wall is just not Agile!
The Agile Manifesto had laid the foundation for DevOps all those years before. It introduced the term Continuous Delivery in its first principle: “Satisfying customers through early and continuous delivery of valuable work.” During the seven years that followed, technological and ideological innovations helped to form a new software delivery practice called Continuous Delivery (CD).
Continuous Delivery as an idea created at long last a foundation for DevOps practices and tools to work their magic. These DevOps practices would help bridge the technical, psychological and organizational chasms between development and operations, and later other groups that make software happen too.
In conclusion: the phenomenon that is DevOps began to grow out of Agile soil!
DevOps is an extension of Agile
DevOps is an umbrella term for all of the enablers – like test automation, infrastructure as code (IaC) and Application Performance Monitoring (APM) – which help deliver valuable software to end-users in an Agile way. These enablers at best sit on top of a CD pipeline for creating that software. DevOps supplements Agile software development methodology regardless of the type of Agile your team is putting to use.
I would even go as far as to say that, today, you cannot be Agile without implementing DevOps methods and practices in your software development process.
Without implementing the culture, processes and practices of DevOps, you’re creating parts of your software in an Agile way, such as your features, without thinking about the whole solution as one system. If you don’t take the whole system into account, you reach a cliff edge when it comes to deploying and running the software you made so efficiently.
Remember, in today’s IT world, everything is code, including your infrastructure and your business requirements.
DevOps places Agile in IT
Another thing to remember touches on the cultural aspects of creating software. You should actually ‘be’ Agile. I really believe you don’t just ‘do’ Agile! It is not a process or methodology by itself. It’s more of a way of thinking and adjusting your actions based on feedback.
Emphasizing this point, I like to tell people that you can bake cinnamon buns using an Agile software development methodology (like Scrum), but with DevOps, you are actually talking about IT and product/service development practices!
DevOps is what gives Agile software development methods a working framework for the complex IT world.
Agile and DevOps are complementary value systems
Creating software successfully comes down to the beliefs you hold about what is the right way to develop software. The beliefs underpinning Agile overlap with the beliefs underpinning DevOps entirely:
- Individuals and interactions
- Working software
- Customer collaboration
- Responding to change
Hence DevOps is an extension of Agile. It’s also a powerful enabler of Agile, especially in large corporate settings such as the Telco industry, through cross-team collaboration and automation such as end-to-end acceptance tests, performance testing, automatic regression dashboards, IaC.
Ultimately DevOps makes these large corporations a lot more Agile in an uncertain business environment.