Monday, May 6, 2013

CMDB, ITIL & Version Control


CMDB, ITIL & Version Control

This discipline of IT Service Management is the management of all software configuration items within the organization.  It is responsible for the management of software development, installation and support of an organization’s software products.

Software is often not regarded as a tangible asset because of its intangible nature, which results in it not being effectively controlled.  There can be several versions of the same software within the organization, and there can also be unlicensed and illegal copies of externally provided software.

The practice of effective Software Control & Distribution involves the creation of a Definitive Software Library (DSL), into which the master copies of all software is stored and from here its control and release is managed.  The DSL consists of a physical store and a logical store.  The physical store is where the master copies of all software media are stored.  This tends to be software that has been provided from an external source.  The logical store is the index of all software and releases, versions, etc. highlighting where the physical media can be located.  The logical store may also be used for the storage of software developed within the organization.

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. 

 

Overview

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 documents 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.

  • 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 process.


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 in a "set it and forget it mode.”  However, experience and survey shows 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 another area.  The subtle interdependencies among the configuration settings usually cannot be detected by someone inspecting the environment and can only be brought to the surface through an automation solution.
  • Change Policy Control and Standardization.  These standards are used to create templates for individual elements of the application layer (for example, the standard configuration of a given application server) or for the entire application stack (a standard build for application server, Web server, data base and middleware).
  • Audit and Reporting.  The discipline of configuration management should also enable automated change reporting.  As changes are made in configuration settings, these reports can be logged with results tabulated and presented for IT audit purposes.

In short, we would need to take the following steps when considering the automation of configuration management and version control:

  • Assemble all of the component level information into a centralized repository;
  • Provide a view into the dependencies among the various configuration items;
  • Impose policy control over how changes are proposed, tested and implemented;
  • Deliver detailed tracking and reporting; and
  • Allow changes to be reversed when proposed changes have unexpected consequences.

 

Key Version Control Features and use cases


The role of version control in this setting would be to provide a critical "safety net" for the change process included in the configuration management environment outlined above.  While configuration management would explicitly regulate the change process, the entire process would be enriched with versioning features.  Generally, this would imply that all changes are recorded in such a way that earlier versions of the configuration settings could be "reconstructed" and installed.  This would have obvious value for situations where changes are made, deployed and then later found to have undesirable impact on performance or stability.  But such features would also yield value for both IT compliance audits and disaster recovery situations.  As auditors probe the integrity of systems related to revenue transactions, they may need to test the actual system environment that was in place around various sets of transactions.  A robust version control capability embedded into the configuration management would conceivably allow the IT team to reinstate an exact copy of the application infrastructure at any desired time.  Additionally, this capability would have clear benefits for reinstating infrastructure in a disaster recovery setting.  Some critical aspects of the version control capability would include:

  • "Automatic" vs. "Explicit" Versioning:  A snapshot can be taken in fundamentally two different ways: 1) automatically, every time a change is made; or, 2) explicitly after a certain set of changes has been instituted and a change set has been created.  Both approaches are valid, though the automatic approach has obvious benefits in that it records every change without requiring intervention.
  • Level of Versioning:  Versions can also be created for the individual settings or parameters or for configuration files.  Once again, the former approach is superior because it records all changes at a very fine-grained level.  With this approach, you can build up to a file-based version, but if you only record changes at the file level, you will not be able to drill down easily to find individual changes.
  • Roll-back Capability: In order to be truly useful, the configuration management solution must have the ability to isolate a version (either by level or by date and time) and then reintroduce those settings into the application infrastructure.  This is alternately referred to as "roll-back" or back-out in ITIL language.


Summary

Configuration management solutions can play a critical role in managing change for enterprise IT organizations focused on the application infrastructure level, once these solutions have been successfully implemented at the network and server layers.  With sufficient features to address the essential requirements for discovery, change modeling, change policies and IT audits, a version control capability will expand the value of the configuration management solution through its ability to rebuild the business-critical infrastructure for performance, stability, disaster recovery and compliance reasons.

The Benefits of Automated Version Control and Configuration Management


Other than avoiding mass chaos, there are so many additional benefits to implementing automated version control and configuration management that you'll want to invest the additional time, effort, and negotiate a relatively minor upfront cost to implement it.  Version control and configuration management provide the following benefits:

Improves Communication


By automating the communication process, a version control system enables the Webmaster to establish a single, consistent channel for communicating and processing change requests, ensuring that none fall through the cracks.  Employing a consistent communication mechanism also ensures that threats to quality and schedules are discovered, communication bottlenecks are eliminated, and development and test time is saved.  Most programs can be configured to automatically notify users that their requests have been received, and the team can be confident that all requests are reliably stored and easily accessible.

Protects Shared Web Source Files under Rapid Development


Version control systems use a check-in/check-out process to protect shared files from being accidentally overwritten in a team environment.  To edit a project file, a developer checks it out of the archive and puts a lock into effect.  While the file is locked, no other developer can modify the file until the first developer checks it back in.  Most systems also enable you to allow multiple developers the ability to edit copies of the same file in parallel.  Later, the version control system automatically merges the changes into a single version.

Enhances Workflow


Another benefit of implementing version control is that it encourages the establishment of good workflow practices.  A good version control system automates workflow by enabling the Webmaster to quickly prioritize and assign requests, run reports to determine the status of any request, determine whether project files are still checked out, or view a summary of the modifications made to project files.

Report summaries become available that shows the classification of job priorities, workload assignments, and job progress updates.  In addition, managerial reports that illustrate trends, number of requests, project closure rates, requests by originator categories, and department and resource allocation should be available.


Saves Time


With an integrated system, enhancements, new features, and content can be added much more quickly and at less expense.  The resulting information, products, and services provided by the extranet team can reach users, prospects, and customers faster.  This translates into the potential for increased revenues.

Reduces the Number of Defects Introduced into the System


Many of the most common defects that are introduced during the development process can be eliminated with automated version control and configuration management.  Defects caused by accidental overwriting, lack of communication, and manual merging of changes can be prevented by a good version control system.

Reduces the Costs and Time to Find Defects That Are Introduced


Most version control systems feature a severity rating system that enables team members to specify the priority level of their change requests.  A list of requests sorted by severity rating can then be generated, so that the most important defects can be addressed immediately, resulting in the rapid resolution of the most severe and revenue-critical defects.

Reduces Maintenance Costs


An important part of an automated version control and configuration management product is its ability to re-create an earlier revision, or build, of the system.  The software maintains a cumulative history of the changes made to each source file, including what has been changed, when, and by whom.  It then becomes easy to restore an earlier version of a file, reducing maintenance costs.  

Improves Productivity of the Team


When communication is streamlined and everyone has visibility into all aspects of a project, true team collaboration is possible, and productivity skyrockets.

Reduces the Costs of Content and Application Development by Eliminating


·         Unproductive meeting time and redundant e-mails

·         Rework and unnecessary changes

·         Time spent preparing manual reports

Improves the Quality of Extranet Applications by


·         Ensuring that outstanding issues get resolved

·         Enabling early and ongoing participation by non-technical staff

·         Encouraging software component reuse

 

Secondary Benefits of Version Control and Configuration Management:


  • Better corporate image
  • Improved team morale.  The team feels that their efforts are being supported.
  • Less overtime and weekends required on the part of the staff.
  • A more competitive stance in the marketplace
  • Increased client/customer satisfaction
  • Improved communications among all staff at all levels and between levels

No comments:

Post a Comment