Sun Java Enterprise System Deployment Planning Guide

Designing for Optimum Resource Usage

Deployment design is not just estimating the resources required to meet the QoS requirements. During deployment design you also analyze all available options and select the best solution that minimizes cost but still fulfills QoS requirements. You must analyze the trade-off for each design decision to make sure a benefit in one area is not offset by a cost in another.

For example, horizontal scaling for availability might increase overall availability, but at the cost of increased maintenance and service. Vertical scaling for performance might increase computing power inexpensively, but the additional power might be used inefficiently by some services.

Before completing your design strategy, examine your decisions to make sure that you have balanced the use of resources with the overall benefit to the proposed solution. This analysis typically involves examining how system qualities in one area affect other system qualities. The following table lists some system qualities and corresponding considerations for resource management.

Table 5–8 Resource Management Considerations

System Quality 

Description 

Performance

For performance solutions that concentrate CPUs on individual servers, will the services be able to efficiently use the computing power? (For example, some services have a ceiling on the number of CPUs that can be efficiently used.) 

Latent capacity 

Does your strategy handle loads that exceed performance estimates? 

Are excessive loads handled with vertical scaling on servers, load balancing to other servers, or both? 

Is the latent capacity sufficient to handle unusual peak loads until you reach the next milestone for scaling the deployment? 

Security

Have you sufficiently accounted for the performance overhead required to handle secure transactions? 

Availability

For horizontally redundant solutions, have you sufficiently estimated long-term maintenance expenses? 

Have you accounted for the scheduled downtime necessary to maintain the system? 

Have you balanced the costs between high-end servers and low-end servers? 

Scalability

Have you estimated milestones for scaling the deployment? 

Do you have a strategy to provide enough latent capacity to handle projected increases in load until you reach the milestones for scaling the deployment? 

Serviceability

Have you taken into account administration, monitoring, and maintenance costs into your availability design? 

Have you considered delegated administration solutions (allowing end-users to perform some administration tasks) to reduce administration costs?