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 super fast jets ready and flying.
Note: Based on the CVN 77 Concept Design
The key to an aircraft carrier is to have a well running runway. This includes runway procedures, runway staff, and runway technology. A runway of an aircraft carrier has similarities to the runway 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 (a.k.a., 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 (a.k.a., 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. Then we can 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, how trained the people, how aware of the parts, can make a difference as to 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. However, when a company is building an application, they typically expect it to last as many years as possible and 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, begins the onerous task of maintaining an existing release in the field while developing a new release of the application internally. In order to stay in business, it is critical that regression of application functionality does not occur. The focus becomes establishing a good way to handle supporting multiple releases and reducing regression in the application. Configuration Management provides that solution.
Getting Started - CM Infrastructure for an Application
A big question that many new application development teams face is how soon should they start 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 a company that 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 is initially focusing 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
The first approach is spending 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