|Waiting time for a queuing system (Brian Tung)|
Clearly, if you want to build an Internet empire, you need to be able to create a scalable system, one that can handle significantly large increases in demand. The general rule of thumb is that scaling problems are best handled using a hierarchy. If you are the king of an empire, you can't possibly settle the requests of every commoner in person. You need a hierarchy of lords and nobles to handle these matters for you, and as your empire grows you'll need trusted governors who can manage the far-flung outposts of your realm. On the Internet, this translates into creating a hierarchy of caches. The server running a large web site will often push its data into caches distributed around the Internet; each cache holds a copy of the same information the web site would normally provide. When a customer needs to access the site, it instead uses a cache, spreading the demand across all the caches. (Note: The same thing also happens in reverse. Web browsers access the Internet through a cache run by their ISP, so typically a customer's cache is talking to the server's cache.)
Hierarchies of caches are everywhere in computing, because scalability is such an important trait. What role did hierarchy play as civilizations tried to "scale up" to become empires? How did the evolution of communication affect the feasibility of these structures?