In the past, I had a window view of the Boston Harbor from my office. I could see boats coming in an out, including numerous tour boats, whale watch boats, and sail boats. Occasionally, I got the chance to see the large ships including the tankers, battleships, tall ships (e.g., elegant large sailing ships), and the rare site of an aircraft carrier. The aircraft carrier is a floating runway for jets. Imagine the infrastructure needed to get those incredibly fast jets ready and flying.
Note: Based on the CVN 77 Concept Design
The key to a successful aircraft carrier is to have a properly operating runway, including procedures, staff, and technology. The runway of an aircraft carrier has similarities to what is needed to get the releases of an application deployed. When the runway of an aircraft carrier is built effectively, project releases can “take off” into production, much like jets can take off from the runway of an aircraft carrier.
Configuration management (CM) acts as that runway for applications. It provides the procedures and technology to control and migrate the code off the runway and into the customers’ realm (production). CM also provides a mechanism to ensure all pieces of an application release are accounted for to ensure a successful take-off. A good CM runway can enable quick releases and allow the pilots (the developers/ engineers) to focus on building the jets.
CM Support of the Application Lifecycle
When we look across an application lifecycle, it is important to determine what infrastructure is needed to ensure that the application stays afloat and can be readily deployed (or released). The base level infrastructure should include hardware (e.g., servers and desktops), the network, and the system or network administration to setup and maintain each. This may be considered the hull and engine of the aircraft carrier. We can then focus on the software engineering disciplines such as project planning, requirements engineering, architecture, testing, and CM. What is the role that CM plays and how important is it? As mentioned, one analogy is that CM can be the runway for an application. How well structured, trained, and aware of the parts we are can make a difference in the success of the application release. If you are only looking to prototype an application without formally releasing it, then having little or no CM process and technology is worth the risk. When a company is building an application, however, they typically expect it to last as many years as possible and to also contribute to the profitability of the company. This implies that if they can sell it, they hope to have numerous releases of the product. Immediately after the first release, the onerous task of maintaining an existing release in the field while developing a new release of the application internally begins. In order to stay in business, it is critical that the regression of application functionality does not occur. The focus becomes establishing a good way to handle supporting multiple releases while reducing regression in the application. CM provides that solution.
Getting Started: CM Infrastructure for an Application
A question that many new application development teams face is how soon they should begin establishing their CM infrastructure and how robust does their CM have to be? The ideal scenario is being allowed to share an existing CM infrastructure. This implies that a company has been in operation for a while. However, a full CM infrastructure may not be feasible for most startup companies who do not have the resources to do this work and, initially, is focused on getting an application to market. To answer the question on how quickly the CM infrastructure should get set up, let us examine two scenarios: setting up CM at the beginning and setting CM up after release 1.
Building CM infrastructure prior to (and during) release 1 involves investing effort to establish an effective CM infrastructure before beginning an application lifecycle. This has many advantages. The CM processes can be tailored specifically to the application needs and all CM controls can be available during the first