Pages

Monday, January 24, 2011

Using the Cloud for Improved Project Management

Cloud computing streamlines several areas in project management that have traditionally caused delays in a project while the synergies between the business’s needs and finances are weighed against the objectives laid out in the project’s requirements and scope.  In addition, the utilization of a cloud environment assists agile based projects by improving the results of earlier increments that traditionally do not result in shippable content.

Project Strategy and Planning

Developing a business case and strategy that can entice an organization’s leadership to commit resources is a difficult part of any project.  Many times projects are carried out with existing human capital; however, capital expenditures at the project onset and in operations can cause a project to lose attractiveness in its pitch.  Project sponsors and leaders are forced to spend significant effort balancing the objectives of the project and the quality of the final delivery against needed capital outlays.  If too much capital funding is requested the Return on Investment and Payback Period for the project will be scrutinized, if too little is requested then the project risks developing something that cannot be useful to its customers.  For most IT projects, this difficult planning process can now be reduced.  If a project is built in the cloud it significantly reduces or eliminates the difficult planning process in two areas:
  • Capital planning for infrastructure
  • Trade-off planning for infrastructure peak capacity vs. design cost
By moving the project into the cloud, all of the processes around planning for physical IT infrastructure are mostly eliminated - the project outsources its infrastructure needs.   In addition, the elasticity of compute resources in the cloud ensures a streamlined analysis for evaluating design trade-offs between capacity and cost.  Most services built in a cloud can be setup to ensure a consistent cost / income scenario (the marginal returns for using the service can be made near constant as the demand for the service increases).  The exception to this rule is for organizations adopting a private cloud service that lacks burst ability for handling peak loads.  In those cases capacity could be limited to the private cloud's overall capacity limit.

Using a cloud environment for a project also helps reduce total lifecycle costs and to reduce or eliminate the work required in the development of asset disposition and reuse procedures. While this may not always be a major concern for most projects, mature organizations will understand the value of this as their physical assets age and reach end of life.  Depending on the laws for the organization’s geography, recycling of e-waste can cost an organization additional funds they had not expected to incur.  Eliminating physical assets using a cloud environment therefore saves money both in planning for asset disposition, and in disposal costs.

Development Stages and Improved Sprint Iterations

The earliest design phases of any IT or software development project are the most difficult.  When making use of agile based project implementations this is no different.  Initial sprints are focused on determining approaches to the various user stories and a variety of brainstorming methods are used to prioritize and develop finite tasks along with a good technical foundation for the project (what languages will the project use, will we use some variant of Linux or Windows to run the service, etc).   Developing a project in the cloud helps to expedite the early stages of the project by allowing for rapid prototyping in the early stages of the project.  To help facilitate more effective brainstorming, multiple virtual machines with different characteristics can be started and stopped at convenience (to get an idea of the brainstorming involved with agile projects review Agile Estimating and Planning by Mike Cohn).  Doing this allows the design team to quickly evaluate initial design factors with actual production ready assets.  This helps agile projects also increase the likelihood of producing potentially shippable increments in the earliest sprints of a project – an issue that many agile projects face at onset.

Cloud vendors also provide a variety of other services to complement their infrastructure.  Amazon Web Services is an excellent example of this.  Messaging tools like Amazon Simple Queue Service allow developers to make use of asynchronous messaging without building their own Enterprise Service Bus.  Monitoring tools like Amazon CloudWatch provide monitoring tools which require little work to utilize.  Combine this with the many other services available for most public clouds like Amazon and developers can save time by using existing tools supplied by cloud vendors.

Another area in IT project management that receives substantial benefit from cloud computing usage is System Integration and Deployment.  A challenge in any project is integrating the various parts of the project created separately in a development environment and moving them to the target production environment.  Problems occur from integration when these elements are placed into a staging environment closely resembling the final production infrastructure.  The development team can work through these issues, but it adds extra time to the overall project for troubleshooting. Using a cloud environment, the development team can replicate the final production environment easily.  This helps with integrating a project application which will operate on an existing application server.  Creating a copy of the existing production instance supports more frequent integration testing during development reducing the amount of final integration issues that could occur - issues become apparent sooner.