Scalability

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

Advertisements

4 thoughts on “Scalability

  1. Wow. Perfectly spoken and clearly explained. Humans must prepare themselves for this imminent download by ” becoming a sole being” governing your own path! I get it do you?

    Liked by 1 person

  2. Another great piece. The scaleability of our minds and lifestyles in reflection of demand with computers is really a question of what you need it for. Acquaintances who I know that work in the film industries perhaps use up most on the spot storage for the level of computer power that is used for CGI in fields of work ranging from architecture to world simulations. Compared to the office worker the demands of storage or resource is vastly different. Even myself whom writes music and records music on a machine with a 2nd gen i7 8GB has enough memory and processing power to accomplish what I need to do.

    I see hitting the limitations of our minds as a good thing. It perhaps means that our lives have more defined limits in respect to our physical interactions in the real world. That is perhaps order out of chaos.

    But on the scaleability of massive super computing power, economists have been presented with the global scaleability problem for sometime. Where are the limits?

    You might find this video of interest.

    Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s