Give me CMDB before I die
Rather more than just a trendy new acronym
If there's a fashionable topic in the enterprise at the moment, it's ITIL (the IT Infrastructure Library, a collection of best practices for managing IT operations) and its contribution to IT Governance. For developers, it's all about designing holistic systems, with operational resilience, upgrade, maintenance and even change management processes built in.
The Configuration Management Database, or CMDB, is fundamental to ITIL (see page 17 in the Introduction to ITIL here). This is an interesting little database design exercise in itself, and there's a lot of hype around CMDB at the moment, with lots of claimed CMDB products and precious few real-world practical implementations of the concept.
The CMDB concept also has a potentially rich future, since one could envisage it storing metadata relating to the quality of the information in it (how up-to-date, how reliable) and not only managing the operational infrastructure as it is now but also providing the basis of “what if” impact analysis of future changes. Ultimately, it could power a risk management process, identifying areas that are poorly managed now and forewarning of potential operational issues in the future. Now, there's a chance for developers to write some interesting applications!
So I was keen to meet with Jim White and Dustin McNabb of Managed Objects, to talk about the general design issues behind its fully-functional CMDB 360 product (it's had a CMDB for a while, but its earlier model wasn’t exactly “live” – the information in it had to be exported to other tools). This looks like a welcome addition to the current crop of CMDBs, typified by BMC's Atrium, but I don’t want to review CMDBs just now, I want to talk about some of the database design issues.
For a start, you probably already have all the information needed for your CMDB already, although the CMDB is more than an asset list, it stores the relationships between configuration items too. You really ought to have an automatically-maintained asset management database these days (surely you didn’t just through away all that expensive effort you put in for Y2k – that’s irony, by the way) and every bit of infrastructure technology has its own configuration file. However, Jim White points out, just applying “extract, transform and load” (ETL) to all this stuff and dumping it a relational database doesn’t give you a real CMDB (and the ETL process is probably going to be harder than you expect anyway).
ETL gives you duplicate data, collected in batch somewhat after the event – so which is the authoritative version of the data? The original data, wherever it is, of course, which means that the CMDB will first stop being trusted and then become neglected. However, before then it will become very big and deliver a classic “single point of failure” – if all configuration changes are made through the CMDB (as they must be, if it is to mean anything), if it fills up or fails, or slows to a crawl, operational systems slow down and stop. Not a good idea and probably the final nail in this kind of CMDB’s coffin.
So, let's start again and look at the CMDB requirements. These come from analysis of ITIL processes, of course, but Jim and Dustin directed me to research white papers from Ronni J. Colville of Gartner (ID Number: G00136977, 3 February 2006) and Thomas Mendel & Jean-Pierre Garbani (with Peter O’Neill and Reedwan Iqbal) of Forrester (Best Practices: The “Just Enough” CMDB, April 12, 2006, available here – free registration required), which provide usefully independent summaries.
Colville points out that configuration management and the CMDB are separate things - the CMDB is the data and metadata repository underlying configuration management, but it doesn't deliver configuration management of or by itself. Gartner seems to identity 3 key CMDB requirements:
- Federation, the ability to link to and logically integrate multiple existing, physical, sources of configuration data without moving them;
- Reconciliation, to rationalize conflicting instances of configuration items or components from different sources;
- Visualization, to provide users of the CMDB with logical and/or physical illustrations of the peer-to-peer and hierarchical relationships between configuration items.