clear why you couldn’t just drop today’s agile methodology on the development tools of the early 1990’s. We needed better automation, not just better ideas.
So how does all that apply to DevOps?
Agile Automation for DevOps
Now that the DevOps pioneers have blazed the trail, it’s time to pave the DevOps highway for the rest of us, and the lessons of agile development are relevant.
Automatic Build and Test
Here’s another way to look at DevOps: At heart, DevOps is about reducing stress. Life is just too short to sweat maintenance windows where one mistake could kill millions in revenue for your company. DevOps emphasizes repeatable automation, and that’s where automatic build and test comes in.
Automatic build and test is clear in a software development context. But what does it mean in the context of maintaining Exchange servers on Windows 2008 or Oracle 11g servers on Linux? That’s where automation is evolving fastest. DevOps needs automation that extends the continuous integration pipeline to continuous deployment.
Simple scripts are too brittle and take too long to build. The right answer, which we’ve seen from a recent spate of automation startups, is model-driven system construction. Automatic build and test becomes straightforward when there’s a machine-readable model for a complete system. Without a model, it’s anyone’s guess whether two deployments will come out the same way.
Modular Components from Shared Repositories
Thanks to the rise of open-source Linux repositories, the Unix world’s situation has improved. But that’s just for software binaries, and only for certain platforms. To really stop reinventing the wheel, Ops needs repositories that span the entire stack — from configuration down to OS patches — for multiple platforms. Modern automation vendors are creating and filling these repositories quickly.
Automatic Dependency Management
Just as automatic dependency management is an enabler (not just an accelerator) for agile software development, DevOps requires dependency management for distributed software systems and system components. Automatic dependency makes it possible to change your base system components without stopping the assembly line just like agile software development.
Traditionally, updating or swapping out system components (such as a middleware library or even an OS security patch) required weeks of manual effort. With the rise of modern, dependency-aware system automation, that task becomes pushbutton easy.
Distributed Version Control
Version control is the last development learning to hit operations. Agile change in any context requires the confidence and safety of multiple individuals trying things out, capturing the results, and combining them into high-quality deployments at the end of a change cycle.
Without flexible version control — or worse, without any version control, as IT operations is accustomed to running — parallel rapid change is simply impossible. Model-driven system construction must enable not only automatic build and test, but also deep version tracking, merging, and rollback for complete systems.
These changes in automation and process pair up identically for DevOps and for agile development:
Process Value Automation
Rapid change cycle Build and test
Recycling of existing data Shared component repositories
Rapid architecture assembly Automatic dependency management
Individual self-direction Distributed version control
Cloud and Mainstream DevOps
How does cloud fit into this story? DevOps solves a nasty problem, but it’s one that many IT departments still manage to live with on an everyday basis.
Cloud is the compelling event that makes the old processes untenable.
Cloud can sound complicated, but every exposition of cloud value comes down to agility. Agility is the key benefit of cloud, and thus it is a direct response to the challenge of DevOps. The rise of cloud is the rise