A Version to Rule them All
The complexity of the software development process has required organizations to enforce strong version control as the basis for managing code artifacts. This provides a controlled mechanism for implementing change, and a basis for reversal when things break, which they invariably do.
With strong version control, this change is orderly and predictable. Without it, it’s chaotic—and every update creates an unpredictable cascade of conflicts and collisions. This forces developers to spend much of their time at odds with the law of unintended consequences, in a futile effort to manage something that is too complex and dynamic to be manually controlled.
For most software development organizations today, strong version control is almost taken for granted and its absence would seem careless, irresponsible—perhaps even reckless.
But for the most part, the lessons we’ve learned in software development have been scarcely applied to the world of IT operations, where control of deployed systems is manual and chaotic and most organizations remain on the wrong side of this law of unintended consequences.
Of course, strong version control is a fundamental part of the rPath approach to automated application deployment and maintenance. Here’s a recent Dr. Dobb’s article by rPath founder and CTO, Erik Troan, where he discusses the importance of version control for IT operations:
Strong version control has become a key part of the software development process because it enables developers to collaborate in the construction of large-scale, complicated projects.
Strong version control manages complex software artifacts, transforming a maze of individual files–which often change independently–into a single version number that represents the state of the entire source tree. At any time, you can query a version number and know exactly what revisions of which source files it included. You can also control changes between versions and go back in time because you have a complete representation of the version history.
It’s a controlled and automated approach to an inherently complex process.
But the techniques we’ve developed for software development have rarely been applied to the world of IT operations. Today, managing deployed systems is highly manual and often inconsistent and chaotic, which creates costs, risks and delays for businesses. A core reason for this is that there is typically no authoritative way to manage the versions of deployed systems. At any point in time, a deployed system comprises several hundred packages, which are all versioned independently. This means that managing a system actually means managing the hundreds of individual versions that comprise the system–with no single version to define the system itself.
This makes it difficult or impossible to answer–or even ask–questions like:
- What version of our validated software stack is running on this system?
- How has this system changed from our original specification?
- How old is this system compared to newer installs?
- What would happen if we upgraded this system to a later build?
Asking these questions–and getting answers which can be understood and acted upon– requires an explicit and authoritative understanding of a detailed version history over time. And this information simply doesn’t exist for most organizations today.
The reality is that IT operations are arguably more complex and more business critical than software development. But IT operations groups completely lack a comprehensive version control infrastructure for their deployed systems.
Version control systems provide the right model for capturing and utilizing the underlying version relationships between the hundreds of packages that comprise a single running system, as well as for managing system software deployments across thousands of machines.
Without strong version control for deployed systems, IT operations groups are exposed to excessive cost and risk–they’re effectively flying blind. This is particularly true as applications become increasingly diverse, interdependent and distributed in nature. In short, in today’s complex and cost-conscious IT environments, strong version control is essential for well-functioning, efficient, and compliant application delivery and systems management.
Comments
Leave a Reply

