|
Your software development and support teams come to you one day and say they need a configuration management person to manage infrastructure configuration and releases. But wait a minute - doesn't the software development team already have a configuration management person? And what was it again that she was hired to do? Oh yeah, software builds. So why are your teams trying to give this position a configuration management title too? What really is configuration management?
The best way to understand the difference between the two is to look at the business goals they are trying to achieve.
· A version control system (VCS) where the developers store their source code. · The IDE (Integrated Development Environment) that developers use to write code. · Tools like make, ant, and maven for automating builds and managing libraries of built code, and JUnit for running automated unit tests within builds. · A continuous integration (CI) server that automates the timing of builds to enforce that checked-in code will still build and pass unit tests.
Note that, although the buildmaster makes sure that unit tests are automatically run within builds and that reports of unit test failures are available, it is the responsibility of development leads to ensure that individual developers fix failed unit tests - the buildmaster lacks the hierarchical authority over developers to enforce quality. Some smaller sites additionally task the buildmaster to be a release manager. In that case the buildmaster oversees the promotion (movement) of builds up the ladder of testing environments and eventually into the production environment (or release to manufacturing for products). "Classic" Configuration Management But modern configuration management is a different kind of change management - I like to call it object-oriented change control. To understand why, we'll have to look at some more history ... Many in IT will remember when Change Control was a hot topic around 1990. The idea was that we'd define a narrative set of rules for identifying when a proposed change might have a broader impact, which in turn would trigger a review, and further tell us how many levels of approval it needed. This methodology failed miserably. It was doomed to failure because it depended on humans to create a limited set of rules to cover a near-infinite number of possible circumstances, and these rules were interpreted by error-prone humans who also did their best to avoid waiting for, much less sit through, monthly Change Control Board meetings. Some years later, the IT industry noticed how aerospace was doing change management based on objects. And because IT had embraced object-oriented programming, it was already comfortable mapping material objects into software objects. So instead of fuzzy rules, why not turn the old change control methodology inside-out? - Ditch the rules and track the objects instead! That way, there is no room for interpretation. ("Yes or no, is this object being changed, and, if so, is it on the list of objects we review?") Even better, the decision workflow can be automated. In practice, this means creating a list of all objects for an application or environment, e.g. configuration parameters, and putting them in a database (we'll call it a CMDB), and mark which ones are important enough that we want to do a review before we allow a change to that object. Then, provide a computer program to after-the-fact check the fielded configuration against the central CMDB; or, even better, provide a program to proactively update the fielded configuration from the central CMDB. By using lists of objects, combined with computerized cross-checking of changes, we take human judgment out of the equation while also providing scalability. The description above of CM sounds good, but does it translate to the real world? A concrete example might help. One of my past clients was having a terrible time consistently finding bugs during QA, and subsequently bugs were slipping into production. One problem was that their many instances of Websphere (a Java application server marketed by IBM) had been manually configured and didn't match each other. So I created a CMDB of their Websphere configurations. Using about 20 lines of jython, I was able to extract the complete configuration of a Websphere cluster as a text file. With 3 apps installed, each Websphere cluster had about 25,000 configuration items. The client used a sequence of 3 promotion levels for testing, plus a final promotion level for production. Likewise, there were multiple clusters at each promotion level. The configuration for each Websphere cluster was automatically fetched each day and checked-in to a VCS as a new revision. With that CMDB and a few text manipulation tools, I could:
So, we now see that classic Configuration Management is a methodology for performing Change Management. Moreover, the business goal of classic CM is to maintain consistency as change happens, raising a flag when the left hand tries to make a change that affects what the right hand is doing. The introduction of CM is also a form of business process improvement. If you want to know more about classic CM processes and practices, one place to start is CMMI (Capability Maturity Model Integrated), in which CM is one of 22 process areas. In contrast, software configuration management (SCM) is about getting software builds out the door. A buildmaster is graded on meeting the deadline to create a new build after developers request one, while at the same time ensuring that new builds reflect every developer change. David Nessl, MBA, PMP, is an IT and Business Process consultant with over 25 years hands-on experience in software development and managing IT infrastructure. His employers and clients have included universities, the US Department of Defense, and Fortune-500 companies, including a recent engagement where he authored the SCM Guide adopted enterprise-wide. He can be reached for consulting at <drn@nessl.name>.
Set as favorite
Bookmark
Email this
Hits: 4945 Trackback(0)Comments (0)
|
| Last Updated on Thursday, 23 July 2009 10:49 |


Your software development and support teams come to you one day and say they need a configuration management person to manage infrastructure configuration and releases.
