The Importance of Scaling
One way to define scaling is as "the ability to enlarge or reduce a design." In the computer science world, scaling applies generally to growing an application to handle more traffic, tasks, and transactionsbut that is not the only definition. For this reason, we're going to focus on the issue of scaling as the ability to grow your ColdFusion application to handle a larger load, process more transactions, and work more easily overall.Generally, when you look at scaling ColdFusion applications, there are several distinct areas to consider. These areas are:
- Hardware (your application server, database server, etc.)
- Software (how you design and build and deploy your application)
- Infrastructure (the network, switches, routers, and hardware load balancing systems)
- Special scaling systems (third-party caching tools, proxy servers, and other methods of scaling an application that stand apart from the main system)
Chapter 1. Clustering does not only offer the possibility for failover but is generally the easiest method for scaling an application horizontally. In this case horizontally means the addition of servers while vertically means the increasing of servers resources through the addition of things like CPU's and more memory.Clustering allows you to create a group of servers that act like a single system. Most modern clustering approaches take advantage of hardware, software, and networking strategies that allow you to easily add or remove servers to an existing cluster with out having to experience any down time.Running one Web site on one server is relatively straightforward: You know that every Web request goes to the same Web server software and ColdFusion MX 7 service, with the same settings and environment. But as soon as you add a second server, you are faced with a host of technical challenges. The following sections examine some of the implications. Later in this chapter, we'll review some of the principal technologies that enable you to effectively distribute your traffic across multiple servers, and how such technologies are implemented.