Identifying Tools for Cloud-Based Application Development
This work is not trivial, but there are technologies that can help users model the assemblage of virtual machines and the deployment of software onto those machines. In some cases, these tools can even generate scripts to automate deployment from the models. There are also prebuilt frameworks that can simplify the configuration of middleware components.
These technologies are the building blocks of cloud-based automated application deployment through the lifecycle. The process of deploying a test environment now can be reduced to a self-service request through the cloud’s web portal. The virtual machines are automatically provisioned after obtaining necessary approvals, and the dependent components are then deployed from the software library. The application, testing, or operation teams can then deploy the applications, leveraging a set of automation scripts that are tested and configuration-managed together with the application. A highly error-prone and manual process that used to take weeks can be reduced to hours or minutes through this continuous delivery process.
Once a standard set of environments is defined, the developer and tester practitioner tools can be directly integrated with the cloud catalog. Developers can then deploy applications from the desktop onto dynamically provisioned cloud servers and teams can automatically deploy applications directly from their build servers. Giving all teams easy access to the same set of environments and automations ensures that everyone is using applications with the same configuration, reducing the likelihood of defects due to misconfiguration and ensuring that defects are more easily reproduced.
The benefits outlined above can extend into the operations team as well. While not all operations teams will be able to take advantage of the same environments as the development and test teams, having access to the same definitive software library of components and the same automation scripts as the development and test organizations will help ensure the applications get deployed and configured correctly, despite differences in the underlying environments.
Automating Application Deployment and Configuration
There are many benefits to automating application deployment and configurations. Application cycle times are improved because of the ease with which test environments can be made available. Development and test teams are less inclined to “hoard” servers if they know that they can get properly configured environments on demand, thus improving utilization. Quality is also improved, as the estimated 30 percent of all defects due to misconfigured environments is greatly reduced, freeing testers and developers to focus on real quality issues. The time to set up and configure test environments often dominates the test lifecycle. By reducing deployment time from days to hours or minutes, testers can spend more time testing. Maintenance costs are also decreased, because having a standard set of virtual machine images reduces the labor required to keep all of the test servers at the appropriate operating system and middleware patch levels.
When used correctly, cloud computing can help reduce cost by consolidating servers through virtualization and increasing utilization while reducing installation, configuration, and maintenance time. It also improves quality by automating error-prone, manual tasks and speeds time to market through continuous delivery cycles. At a time when enterprises are demanding that their IT organizations deliver more value to the business with less expense, a carefully planned cloud implementation, starting with the development lifecycle, must be considered.
1. "Industry Developments and Models—Global Testing Services: Coming of Age,” IDC, 2008 and IBM internal reports http://www.marketresearch.com/map/prod/1939797.html
About the Author
Dr. Steve Abrams is an IBM Distinguished Engineer at IBM Rational Software where he is chief architect for cloud computing.