The capacity planning and performance engineering functions have many common techniques and skill sets. As a result, the distinctions between these two closely related functions are often misunderstood. The table below lists 10 major differences between performance engineering and capacity planning.
This list is intended to be a guide and is not exhaustive.
# | Life Cycle Stage: Function | Performance Engineering | Capacity Planning |
1 | Development: Design, Build and Test | Y | N |
2 | Development: Non-Functional Testing | Y | N |
3 | Development: Performance Strategy | Y | N |
4 | Development: Iterative Performance Analysis | N | N |
5 | Live: Ongoing Capacity Planning | N | Y |
6 | Development and Live: Forecasting | N | Y |
7 | Live: Capacity and Performance Reporting | N | Y |
8 | Live: Gather Performance Data | N | Y |
9 | Live: Store Performance Data | N | Y |
10 | Live: Plan Capacity | N | Y |
1) Development: Design, Build and Test
Performance engineering is normally carried out during the development stages, i.e. design, build and testing of new systems and applications. Capacity planning is typically carried out after the new systems and applications have gone live. This is the major difference between these two functions.
2) Development: Non-Functional Testing
Performance engineering involves non-functional testing, e.g. performance or load testing. Capacity planning does not have responsibility for the performance testing of new systems and applications. The new systems and applications are deployed into a live environment for capacity planning to manage. It is possible that the new systems and applications have to meet acceptance criteria drawn up by capacity planning. Furthermore, the capacity planning function will use performance test results for its own processes once the system has gone live.
3) Development: Performance Strategy
Performance engineering is responsible for dictating the direction of the performance testing strategy. Performance engineering is responsible for the design and execution of the performance tests. In contrast, capacity planning does not have responsibility for the design and scheduling of performance tests.
4) Development: Iterative Performance Analysis
Performance engineering is responsible for assessing the performance characteristics of early development iterations of systems and applications in order to determine whether or not business SLAs can be met. The capacity planning function does not tend to assess the performance of the early iterations of systems and applications. As stated in the second bullet, it is likely that capacity planning will review the performance of the final iteration of new systems and applications.
5) Live: Ongoing Capacity Planning
The capacity planning function has regular and ongoing activities and deliverables, e.g. service monitoring, production of the capacity plan, etc. These are carried out even if the system or application does not change over time. Performance engineering is only carried out where new or changes to existing systems or applications occur.
6) Development and Live: Forecasting
Capacity planning addresses forecasting at a business, service and/or resource level. Capacity planning produces these on a regular basis as they are a key input into the capacity plan. In contrast, performance engineering uses forecasts during the development and testing stages in order to ascertain the level of load the system must be tested to.
7) Live: Capacity and Performance Reporting
Capacity planning regularly produces and analyses capacity and performance reports of existing services in the live environment. This is usually a core function of capacity planning. However, performance engineering does not look at the live services on a regular basis.
8) Live: Gather Performance Data
The capacity planning function gathers performance metrics from the live service(s). Performance engineering will only collect data from the test environments that they use.
9) Live: Store Performance Data
Capacity planning as a function tends to store a large amount of historical data over a large number of ICT components. This data is used for a number of purposes, including construction of capacity and performance models and forecasting. The performance engineering function is not required to maintain a historical data store and typically does not need to gather data from a large number of ICT components in its test environments.
10) Live: Plan Capacity
Capacity planning must determine when capacity is to be deployed over the lifetime of the system or application. Performance engineering must determine the amount of capacity that must be initially deployed to support the system or application.
To learn more about how capacity management can benefit your business - download our primer here.