Jake Sorofman works for rPath, a provider of automated application deployment tools. You can contact Jake at firstname.lastname@example.org.
The late, great Jim Croce shared a few truisms most of us can easily recite:
You don't tug on Superman's cape
You don't spit into the wind
You don't pull the mask off the old Lone Ranger
And you never -- ever -- automate IT without version control
Okay, maybe that's just how I remember it. But the point is clear (to me, at least): Failing to version control IT systems is right up there with the all-time ill-advised ideas against which Croce so famously advocates. So burn that on your brain along with the rest of the verse.
The notion that IT would continue to deploy and manage software and configurations without version control is somewhat perplexing. In the world of application development, version control is pretty much taken for granted.
In a recent post, Theo Schlossnagle puts it bluntly:
Version control systems are nothing new to the world of software development. I'll take the time now to unapologetically call you an idiot if you don't already have all your code and configurations in a version control system."
Why? Because version control enables velocity and change -- it enables innovation. It allows development projects to safely consume change. Something broke with the latest build? Roll it back. Or find the difference between the builds and bisect until you home in on the offending culprit. Change is a welcomed part of the process.
Without version control, developers would be tentative -- no, debilitated. They'd be paralyzed with fear of change and unable to move at the pace of business like so many enterprise IT organizations today.
The good news is that, for the most part, IT knows they have this problem, but it's too difficult to reproduce systems across release lifecycle phases. To understand what versions of software are deployed. To understand current patch levels. To roll back changes and troubleshoot system outages.
The bad news is that IT also knows that the problem is only getting worse. As virtualization and cloud computing take hold, IT will see geometric growth in the number of systems that need to be managed. The answer, of course, is automation. Adding resources to address system scale is not part of our "new normal."
But, automation can make the wrong things happen -- faster. I think Glenn O'Donnell at Forrester puts it best:
"Fast and flawed and you fail. Prompt and precise and you prevail."
What IT needs is a way to model systems so they're deeply understood and a version control foundation to manage them over time. Once this is in place, system provisioning and change becomes fast, predictable, transparent -- and reversible.
Automation that isn't model-driven and version controlled? As Croce may or may not have said, it's like tugging on Superman's cape. And you don't mess around with Jim.
So what do you think? Am I on the right path? Leave me a comment -- or two.