There is a lot of buzz in the IT industry around cloud computing and its impact on driving greater efficiency across an IT organization. But when considering adoption of cloud computing infrastructure, where should an organization begin? The application development lifecycle can be a good starting point. Infrastructure utilization is low, labor costs are high, and the lifecycle is ripe for automation. Cloud computing can dramatically streamline the lifecycle by reducing the need to acquire dedicated infrastructure, providing preconfigured application lifecycle management environments, and providing needed resources on demand. All of this reduces cost and time to market while improving quality.
Studies  have shown that 30 to 50 percent of all servers in a typical IT organization are dedicated to test, with most of the servers running at 10 percent utilization or less. Paradoxically, one of the top challenges in moving applications into production is the limited availability of servers on which to test the app. Test backlog is often the single largest factor delaying new deployments. Generally, the root cause is the difficulty in properly deploying and configuring test environments on the available servers.
How Cloud Computing Helps Automate Processes
When assessing how to begin implementing a plan for transitioning their IT applications to the cloud, organizations should first identify a small number of common application infrastructure and middleware patterns on which to standardize. This effort may require buy-in from the infrastructure, development, and operations teams in order to ensure that the standard patterns meet the criteria for the bulk of the application requirements. Aiming for 100 percent coverage of the organization’s applications is not realistic. It might be good to start with applications that are not the company’s critical IT assets, both in order to achieve buy-in across the organization and to make sure that any potential issues around usability, access, and security have been worked out. An ideal starting point would be to identify applications for which conforming to one of the identified standard middleware is a reasonable price to pay in order to achieve reduced management costs and improved speed of deployment.
The next step is to capture the platform and its configuration in a set of virtual machine images and then load them into the cloud management system. These images can then be deployed in minutes. Cloud management systems that let an organization orchestrate the deployment of multiple virtual machines together are particularly well suited for this option. Next, automation scripts to configure the environments are created, typically by the deployment engineer, and linked into the catalog. The environments can then be automatically provisioned on demand from a self-service interface.
It helps to think of the construction of the virtual machines in three stages. At the lowest level are the components that are “baked into” the image. These are typically the operating system and some middleware components, such as the application server, and they change relatively infrequently. Next, are the common components that are laid down on top of the images that often have different governance processes and rates of change. These images typically include software components delivered by other teams or third-party libraries. It is useful to govern the catalog of components using a definitive software library—a secure repository that contains the master copies of all controlled software—in order to ensure only approved versions are used in production and make sure that the automation scripts link to the approved versions from the catalog.
At the highest level are the most quickly changing pieces: the applications. Cloud computing enables development organizations to rapidly deploy applications into these images, which in turn helps to facilitate and manage rapid build and test cycles, due to the short provisioning times (which can be on the order of minutes). These components, as well as the automation scripts needed for their installation and configuration, are governed by development processes, including daily integration builds, release candidates, etc. For the first time, cloud computing ensures that software, the scripts to deploy and configure the software, and the software infrastructure are deployed, tested, and kept in sync with each other.