Erik Troan is CTO at rPath, a company that delivers enterprise applications across cloud-based environments. Erik recently spoke with Dr. Dobb's about the rapidly changing world of distributed computing.
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.