Sun Java Enterprise System Deployment Planning Guide

Scalability

Scalability is the ability to add capacity to a system so the system can support additional load from existing users or from an increased user-base. Scalability usually requires the addition of resources, but should not require changes in the design of the deployment architecture or loss of service due to the time required to add additional resources.

As with availability, scalability applies more to individual services provided by a system rather than to the entire system. However, for services upon which other services depend, such as Directory Server, scalability can have system-wide impact.

You do not necessarily specify scalability requirements with QoS requirements unless projected growth of the deployment is clearly stated in the business requirements. However, during the deployment design phase of the solution life cycle, the deployment architecture should always add some tolerance for scaling the system even if no QoS requirements for scalability have been specified.

Estimating Growth

Estimating the growth of a system to determine scalability requirements involves working with projections, estimates, and guesses that might not be fulfilled. Three keys to developing requirements for a scalable system are the following.

The following table lists factors to consider for determining scalability requirements.

Table 3–5 Scalability Factors

Topic 

Description 

Analyze usage patterns 

Understand the usage patterns of the current (or projected) user base by studying existing data. In the absence of current data, analyze industry data or market estimates. 

Design for reasonable maximum scale 

Design with a goal towards the maximum required scale for both known demand and possible demand. 

Often, this is a 24-month estimate based on performance evaluation of the existing user load and reasonable expectations of future load. The time period for the estimate depends largely on the reliability of projections. 

Set appropriate milestones 

Implement the deployment design in increments to meet short-term requirements with a buffer to allow for unexpected growth. Set milestones for adding system resources. 

For example: 

  • Capital acquisition (such as quarterly or yearly)

  • Lead time to purchase hardware and software (such as one to six weeks)

  • Buffer (10% to 100%, depending on growth expectations)

Incorporate emerging technology 

Understand emerging technology, such as faster processors and Web servers, and how this technology can affect the performance of the underlying architecture.