HTTP and Scalable Software Systems

If you think about the World Wide Web, it's easy to imagine it as a single software system. Once you do, you realize it's the largest software system the world has ever created — probably by hundreds of orders of magnitude. It contains trillions of lines of code, hundreds of millions of servers, and billions of clients, running thousands of different programming languages. Still, it works more or less as we expect it to work. So, what made it possible for humans to create such an enormous software system? The answer is simple: HTTP!

The HTTP protocol allows us to create perfect encapsulation. The client and the server don't need to know anything about each other, besides the URL, HTTP verb, and what parameters to pass in and expect as output. This allows billions of clients to interact with each other, without knowing (almost) anything about each other. If you reduce it down to its basic components, it becomes painfully obvious that the following is a recipe for winning.