Figure 10.2 A simple web server can forward complex processing tasks out to dedicated machines for
execution, returning results when the task is complete.
resource available to run the database drops significantly. By moving the database out
to another machine, you can dramatically improve the performance of your applica-
tion (see figure 10.2).
This is a common model, particularly for databases, but it also applies to other
types of work. If, for example, you wanted to batch update 100,000,000 files, or run a
vector-calculus-based fluid dynamics simulation, then it's unlikely that your local
machine, or a central access point, are the best tools for the job.
Allowing for specialized workloads isn't the only reason that you might want to use
remoting; probably the most common requirement has nothing to do with perfor-
mance—it's all about reliability.
If you have a single system responsible for performing a large number of tasks, then in
some senses you're doing well. The utilization of the system is likely to be high, and
the management costs are lower because there's only one machine. On the other
hand, the more services you cram onto a single machine, the bigger the risk you're
taking. Even if the machine is able to cope with the work load, what happens when it
needs to be maintained or restarted? What if one of the services needs to be updated?
If all the services need to be accessed at once, this is less of a problem. If the services
are used by different groups of users, then things are rather more difficult to manage.
Can user X afford to take a total production outage, so that user Y can get a fix for the
intermittent problem they're seeing?
Search WWH ::