(The actual post was written on fold with some more media and explanations)
Disclaimer: This article is about Cloud computing. If you’re looking for information regarding visible masses of liquid droplets, you should probably head over to wikipedia.
Last year I was riding in a car with a friend when we saw a large roadside advertisement that said “Microsoft Azure: The cloud for modern business”. The friend, a high school teacher, turned to me and asked: “What exactly is this cloud everyone is talking about and why should I give a damn?”. In this article I will try to answer both parts of that question.
Cloud computing is commonly defined as “the practice of using a network of remote servers hosted on the Internet to store, manage, and process data, rather than a local server or a personal computer.” Some common examples, from an end user perspective, are google docs which replaces your local word processor and dropbox which replaces your physical hard-disk backup.
However, according to the above definition, it seems that every time you access a webpage which is hosted on a remote computer you’re using the Cloud. To an extent that’s true, but to truly understand the Cloud we need to zoom out of our personal perspective as a user and think like a business.
In order to think like a business, let’s imagine we want to build a startup called PuppyGram – a social network for sharing images of… Puppies! We will go through the evolution of how we would build such a service, starting at the early days of the internet and ending today.
PuppyGram will have two major software components: a database application to store all the puppy images and a web server application that serves these images in webpages and allow users to register, upload images and comment on them. Now all we need to do is get a computer, install those two pieces of software, connect it to the internet and then forget about it in the basement. Voila, PuppyGram is online!
This approach works and for a while running your own hardware was very common. However, as PuppyGram will exponentially grow (because everyone loves puppies) we will quickly need to get more network bandwidth, more storage and more computers. These computers will require maintenance, physical cooling and in case of a power outage all hell will break loose. All we wanted to do was to build a puppy network and now we have a huge electricity bill, running out of physical storage space for our computers and hiring infrastructure people to handle all of that – something doesn’t feel right here.
What can we do? In the spirit of Capitalism, we outsource. The next evolutionary step is to pay a hosting company that will physically host our computers and provide us with the electricity, network and maintenance. basically, rent a space for our hardware and pay a management fee. More than that, we can also rent the actual computers and avoid the initial cost of the hardware. This allows us, the developers of PuppyGram to focus on our actual product instead of infrastructure. That’s not entirely true because if we ever want to replace or upgrade our hardware we need to contact a person in the hosting company to physically go to the machine and do the job.
All of that changed in the summer of 2006. The change came from a bookstore called Amazon. Amazon, much like PuppyGram, were concerned that developers were spending too much of their time maintaining hardware rather than focusing on building the best software they can. Their solution – use virtualization, a technology that allows for the creation of virtual computers that run on physical computers, and build a management layer that automatically creates and destroys virtual computers. This product was called EC2 (EC for Elastic Computing). With EC2 you can go to a webpage, specify exactly what type of computer you need, which processor, how much memory and how much network bandwidth, and create it on the fly – within minutes. You can also upgrade, destroy and clone any existing computer, paying only for the resources you’ve used. Amazon released EC2 to the public so that anyone could use their infrastructure and the response was overwhelming. From Dropbox to Airbnb and Instagram, almost any major tech company in the past decade is or was hosted on Amazon EC2.
EC2 and similar systems, whether it’s Google Cloud Computing or Microsoft Azure, are commonly referred to as Cloud Platforms because they obscure the underlying infrastructure. When you create a virtual machine with one of those services you have no idea where the actual physical machine that runs it is geographically located. More than that, it can actually swap locations if there’s a problem with it’s host. The magical thing is – you just don’t care.
So why should you give a damn? the main reason that modern web applications like PuppyGram can be built in months, weeks, or even days is a direct result of the existence of these Cloud platforms. These services allow for small groups of entrepreneurs in coffee shops and garages across the world to build their products on the same infrastructure as the industry’s giants.