The terms version control and configuration management are often used interchangeably, while some view them as separate disciplines. In fact, version control capabilities are a part of a well-defined configuration management process. We will explore these related disciplines and show how they can be applied successfully to problems facing IT professionals today attempting to manage their application infrastructure.
Let's start with some definitions to provide a baseline for the discussion. Here is a general definition for configuration management:
- Configuration management is a system, set of processes or tools that document all of the components comprising a larger entity. Configuration management enables those entities to be built and replicated reliably, using a list of the associated components and an understanding of any dependencies. As a discipline, configuration management has been used successfully in a wide variety of applications from software development to complex manufacturing environments.
Whereas version control is related to configuration management, it focuses specifically on change and time. Here is a general definition:
- Version control is a process that documents a baseline for a component or module and also stores all revisions or changes to that component in a database for later use. Version control capabilities typically yield the ability to reproduce the precise state of a component at any point in time.
So one could make the case that configuration management provides an overall process for how pieces of a complex system fit together. Version control provides both the ability to show how all of the pieces in that complex system have changed over time as well as the ability to restore to a state at a specific moment. As such, version control is an important part of a configuration management application.
Configuration Management for the Application Infrastructure
Most recently, configuration management and version control are being applied to managing the set of elements that comprise the application layer in enterprise IT. And the application of these disciplines is occurring for all of the right reasons. Consider the application layer in an enterprise IT data center. It usually is composed of application servers, Web servers, databases and middleware most often sourced from different software vendors. While that ‘best of breed' approach opens the door for flexibility, it also ushers in a great deal of complexity in how those various software elements are configured, updated or changed and deployed throughout the application lifecycle. Each software element in the stack has many different configuration files, each with literally hundreds of parameters to set, tune and control. There are many different elements comprising the application layer and many, many instances of these applications-multiples in production and others for development, quality assurance, support, disaster recovery, just to name a few. If you calculate the number of individual settings or configuration parameters across all elements in the application layer and all phases of the lifecycle, you will be looking at numbers in the tens of thousands. This could be reasonably managed with manual methods if the environments were configured once and then left alone-a "set it and forget it mode." However, our experience and survey research show that change occurs rapidly in these environments, with some companies using more than 15 people to make over 400 configuration changes monthly. Manual methods no longer apply.
Key Requirements for Application Configuration Management
Managing change in that environment is the kind of problem that is well suited to automation. Applying automated configuration management and version control to the IT application infrastructure environment must include:
- Discovery. Gather individual configuration parameters or settings across all of the infrastructure software elements and organize them in a database for follow-on use.
- Change Modeling . Once these settings are stored in the database, a configuration management tool could then be used to model the interactions among the various configuration parameters. Very often, business owners and IT people experience the frustrating situation where a change is introduced in one area and that change causes an unforeseen disruption in