While listening to Lucy Wyatt discuss (linked below) the concepts in her book Approaching Chaos: Could an Ancient Archetype Save C21st Civilization?; a different view of humanity, and our time on this planet, emerged. A view that wasn’t very cheery, and perhaps highly problematic. It became clear she was describing something familiar. Something that is dealt with daily by technologists around the world. Something called scalability.
In non-geek speak, scalability is the ability of a system to adapt to the demand placed upon it. For instance, consider the article you’re now reading. The browser requested this article from a server on the internet. The server returned the information to your browser and it was displayed. Simple enough. But what happens when the server can only handle 100 of those requests per second and is receiving 200? You must add resources to your server to handle the increased demand, or load. The consequences of not doing so results in the dreaded outage or crash. Surely you’ve had web sites go down or not load fully. You must remember that a web page is comprised of many components. The text of which is only one. Each image, script, and page dependency (ads, tracking cookies & scripts, etc.) is also required. And each of those require an additional request to the server. That means that a web page like this isn’t a single request, it could be dozens. And, yes, things exist to make fewer requests or cache the responses. But at some point it still won’t be enough and you are forced to upgrade.
An upgrade involves adding additional resources such as storage space, memory, and/or computational power. This is commonly thought of as vertical scaling. Building upon a foundation that previously existed. Those in the tech industry may recall the “big iron” days. When servers were constantly being upgraded to handle demand. When you ran out you of upward room, you were forced to buy a minicomputer or mainframe.
However, at some point, you reach the limits of the available technology. Maybe we can’t add more memory, or it already has the fastest CPU available. You’ve essentially hit the limits of scaling your system vertically. It isn’t a good place to be. It is inescapable. Every system reaches a limit, or tipping point. Web sites deal with this by scaling horizontally instead of vertically.
Simply put, horizontal scaling is when you increase the capacity of a system by spreading the demand across two or more servers. In our web site example (100 requests per second per server), in order to handle 200 requests per second, two servers would be required. If demand goes up, we’d add a third server and form a “cluster” or “server farm”. That is horizontal scaling in action. Branch outward instead of up. Adding capacity is as easy as adding a new server to the cluster. Boom. Instance growth.
The power of scaling horizontally comes from the fact that your software is no longer limited by the resources of the server. You rely on your cluster to ease the load. As long as you are able to keep the cluster resource capacity high enough for the demand, you can handle anything thrown at you. This is a simplified example but the principles apply.
The tricky part is to make your software able to scale in this manner. Essentially, it must “disconnect” from the single-server, or , the “I’m the only one”, mindset. Only after that connection, or limitation, is removed, the software is free to service requests from anywhere. That can be a very awesome thing. However, in the mad rush to get your software out the door, this scalability factor may not have been considered. It must be designed and built-in to the system in order for the system to scale properly.
Our planet earth is a system, an ecosystem to be precise. If all systems are subject to scalability limits, what are our options as a planet when we hit that tipping point? It is an interesting question. We cannot just create a new planet or fly off to another nearby Class “M”.
What if it wasn’t the planet that required scaling, but humanity? Do we have the right software? If not, how do we upgrade our software? Just food for thought this weekend.
The podcast link is here: http://themooreshow.co.uk/past-shows.php?show_id=238