Appendix B. Building scalable applications

Appendix B. Building scalable applications

Table of Contents

B.1. Terms

This section is kind of a no-brainer, but just in case it is your first time thinking about scaling, it may be helpful. Building apps that can scale with minimal effort is important for those applications that become a hit. With Zend Framework, the pluggable and loose-coupled design allows you to replace adapters and change functionality easily. Design with scalability in mind and you shouldn't have much of a hard time scaling. It is also important to remember that not everyone is going to have 100 million hits a month and optimizing when your not even "live" is time not spent efficiently. It is the architecture that scales, not a language or framework.

B.1. Terms

Vertical scaling, generally referred to as moving to more powerful hardware. Although it is relatively easy to implement with almost no change in your application, it is usually very costly as the price of performance hardware skyrockets compared to the performance achieved. This usually benefits database servers more than webservers. With vertical scaling you are also centralising your setup, so there is a higher chance of downtime due to a hardware failure.

Horizontal scaling is simply adding more servers, but more complicated in comparison because applications must be designed to work on multiple servers. The cost of scaling this way is much cheaper and the risk of a hardware failure taking you offline is reduced. Adding more servers also means that it takes more work to manage them.

Diagonal scaling is somewhere in between both of them. It is important to scale both upwards and outwards. Scale up wards and outwards