The best efforts in collecting the information needed are worthwhile in order to make the best possible scaling decisions. Only when the information gathering is as complete as it can be is it time to consider matching scaling techniques to components.
Manageability, security, and availability are critical factors in all design decisions. Techniques that provide scalability but compromise any of these critical factors cannot be used.
Here is a list of the eight scaling techniques:
Rather than buying hardware that can handle exponential growth that may or may not occur, consider specific approaches for these three types of servers:
Start with the expectation of more than one appserver. Depending on the topology you may assume a load balancer in front of the Web tier, or possibly in front of the appserver tier. Adding more machines then becomes easier and far less disruptive.
Some customers run at just 30% capacity. This avoids the problem in some environments where the whole site can only use one data server. Another scaling option when more capacity is needed is to partition the database into multiple servers. Another possibility is to partition the data into multiple smaller servers, taking advantage of distributed parallel processing techniques.
Place front-end Web serving and commerce application functions on less expensive commodity machines. Because these machines are lower cost, a load balancer is also generally deployed with these machines.