
Capacity planning is an exercise undertaken in all the industries. There are plenty of models on how to perform capacity planning. But somehow application of these models in the software industry is too cumbersome, tedious and at times completely useless. These models work best when you have a standardized product and process. In software, every release changes the dynamics of the software product. The code base changes, the code performance changes, the usage pattern might change leading to the failure of the previous capacity planning exercises.
Amazon.com released a one day promotion- Lady Gaga album for 99 cents and the site went down. Lots of customers could not buy the offered album songs. Leaving lot of customers angry and loosing potential business
Looking at the problem, following question comes to mind, when to do capacity planning :
Remember, capacity planning is something that starts, when you conceive the application and it continues till the application is sun set.
Capacity planning is not an end in itself but a journey.
- Should I wait for disaster to stuck?
- Should I start capacity planning from day one?
- How to go about doing capacity planning?
- Determine your capacity planning goals - For any capacity planning exercise, it is very important to determine the goals in mind. e.g. for an internet application, managing the ever increasing number of users might be a goal. Similarly, for an intranet application, the number of users might be constant, availability and response time might be the drivers for the capacity planning. Once we understand the nature of the application, and what is the end objective, we can plan the goals. These goals will determine what the measuring points that are required from application. More the measuring points, better will the forecasts.
- Collect data and metrics that map to those goals - Once the goals and the measuring points are determined, we need to collect data that maps to the state goals. e.g. if 99.9% availability of the application is the goal, we need to be able to track the application up-time. We need to track and measure all the links in the applications (be it load balancers, application servers, web servers, data base servers, network, storage, routers, switches, power supply). We need to keep track of the various application usage patterns that can affect the application availability.
- Plot that data and make forecasts - Once we collect the data, we need to plot that data and create trend curves. We will need to extrapolate and do curve fitting on the time series data. This will give us data in terms of application usage changes and help us in product planning. This is an on-going iterative exercise. Every new data brings in more perspective and helps make the forecast better.
- Use those forecasts to enhance the capacity - Based on the forecasts, we need to enhance the capacity to tackle the new growth and achieve our goals.
Remember, capacity planning is something that starts, when you conceive the application and it continues till the application is sun set.
Capacity planning is not an end in itself but a journey.
Post a Comment