The ultimate goals of capacity planning are optimization of IT resources and minimizing infrastructure cost. An ideal capacity plan strikes the right balance between infrastructure cost and the availability/performance of the application. Cloud computing offers additional flexibility when compared with the traditional IT infrastructure such as compute and storage. Many cloud services provide on demand IT resources with pay-as-you-go pricing models with no boundaries for capacity and usage. With such services, the need for capacity planning becomes questionable. Conceptually, capacity planning still remains an important aspect in cloud computing. However, cloud application architects are working towards eliminating the need for capacity planning with the advantage of the elastic nature of cloud. Cloud elasticity allows one to cater to the unknown scale requirements of an application. Therefore the cloud paradigm switches from more static and costly capacity planning process, to a more dynamic and ongoing capacity management process.
A mature capacity management process will utilize a combination of scale-units and resource usage monitoring mechanisms. Scale-units consist of a set of resources such as virtual machines, databases, storage volumes etc. They share a common configuration and hardware baseline and don’t share a single point of failure with the other resources. The size of a scale-unit is typically defined by an IT architect. A scale-unit based approach requires a scale-out application architecture across the entire solution including persistent storage/data. The deployment time of the scale-unit in a cloud hosted application must be well understood and planned to meet the system availability/performance requirements. Therefore cloud usage monitoring becomes a critical component in an ongoing capacity management process. Most cloud providers provide services for monitoring performance and capacity as part of their service. Depending on the lead time to acquire and deploy additional scale-units to match the demand, provision or de-provision of the scale-units can be triggered at a percentage of utilization of the deployed scale-units. These thresholds need to be carefully identified through proper testing to trigger scaling solutions such as auto-scaling.
Without a detailed capacity management strategy, moving to the cloud may not realize its full benefits. Applications could outrun the resource budgeting and shoot up the IT infrastructure expenditure than budgeted. A proper capacity management strategy will stop you from paying for cloud resources that are not being used efficiently. Although it is possible to use an overly simplistic approach for capacity management in cloud, it could render your solution inefficient. Also, if the application architecture is not optimal in utilizing the flexibility of the cloud infrastructure, it might have to be redesigned.
To sum up, while cloud computing provides more flexibility in utilizing application resources, it is also crucial to monitor the resource usage and manage the capacity as an ongoing process.