The best definition of “the cloud”, or “cloud computing”, that I’ve run across is, to paraphrase:
Cloud computing is just using someone else’s computer.
In some ways, it’s too simplistic to be useful, so I’ll dive deeper and explain more.
At another level, it’s wonderfully simple and perfectly accurate.
Cloud computing: one definition
Here’s a fine definition, courtesy of Wikipedia:
It’s accurate, but not nearly as simple, or as clear.
Translated into layman’s terms, it’s services provided over the internet, using computers and storage that can change as needed to meet the needs of whatever service is being provided.
That still needs to be picked apart a little.
The word “cloud” comes from the fact that when diagramming networks, engineers often use a cloud to represent a massive inter-connected network.
Using a cloud to represent the connections highlights that it’s a somewhat intangible thing “out there”, as well as hiding all of the specifics of exactly how the interconnections happen.
Today, of course, when I say “massive inter-connected network”, most people immediately think of the internet. Hence, “the cloud”, in common terms, is really nothing more than “the internet” and all the computers and equipment connected to it.
As the internet has grown, one of the things we’ve realized is that when we use a service of some sort on the internet, we don’t know if that service uses one computer or a hundred. In fact, we know almost nothing about how that service is implemented, how many computers are involved, how they’re connected to one another or even where they might be located.
Like “the cloud” we just discussed, these services are yet another intangible thing “out there”, where all the specifics of how they’re constructed are completely hidden from view.
So, these days we often consider them part of “the cloud” as well.
Examples of cloud services include:
- Your email. Web-based is the most obvious “cloud service”, but even if you use a desktop email program, your email has been traveling server-to-server in “the cloud” to get to you.
- Social media services like Facebook, Twitter, and others.
- Photo storage services like Flickr, Photobucket, Google Photos and many more.
- Document storage services like Google Docs.
- “Anything” storage services like Google Drive, Dropbox, OneDrive and so on.
- Financial services like QuickBooks Online, your bank, your investment firm and others.
- Web-based information resources like AskLeo! and Wikipedia.
- Backup services.
Just about anything you use online or over the internet is involved in “the cloud” in some way.
The number of servers used to run a cloud service is undefined. It could be one, it could be a hundred, it could be thousands.1
As users of the service, we don’t know, and to be honest, we don’t care, as long as it works.
One of the characteristics of cloud computing is that not only are the computer specifics undefined to users of a service, but those computer specifics can change without notice and as needed.
I’ll use Ask Leo! – askleo.com – as an example.
As I write this, AskLeo! is hosted on a single server. That server is a virtual machine, meaning it’s a software simulation of an actual, dedicated server.2 I manage it exactly as if it were a dedicated computer in a data center somewhere. In reality, its hardware is completely unknown to me. It’s just one virtual machine on a much more powerful computer that is likely running other virtual machines at the same time.
Here’s why that’s beneficial: I can change its configuration at any time. I can add CPU power, RAM, or storage as needed, with only a little downtime and a reboot. I can also reduce those things to reduce my cost, as needed. In fact, I’ve done so in the past. The host has also swapped out the underlying hardware without impacting how my server looks and acts at all.
I’m a simple operation. When you get to large-scale online services, they can and do not only change their servers configurations, but they add and remove entire servers, automatically, as needed, and with zero downtime. In the business, this is called being “dynamically scalable”.
Ultimately, that’s what cloud computing is really all about: not just using someone else’s computer, but not knowing or caring what kind of computer or storage it might be, and having the ability to change it all as needs warrant.
Building for the cloud
Building cloud-based applications is both simple and hard.
It’s simple if you don’t plan to scale transparently. I did nothing other than choose my hosting service and build my server. I built it using the same tools and techniques as if it had been a single desktop computer stored in my closet.3 That it’s really just one virtual machine on some high-end computer in a fancy data center somewhere is completely transparent to me. It just works.
If, on the other hand, you really do need to have your online service be truly transparently scalable, and changeable with zero downtime, that’s a different beast altogether. Consider Google itself – thousands upon thousands of servers coming and going online and offline more or less constantly. There’s an incredible level of complexity to make that all transparent, and it had to be designed that way from the start.
Your privacy and the cloud
Now that we understand that this so-called “cloud” thing is really a marketing term for using someone else’s computers, and why that’s advantageous, we need to touch on another aspect of cloud computing.
Your data is on someone else’s computers!
That needn’t scare you, but it’s something you do need to be aware of.
Specifically, you need to make sure you trust the people on whose computers you place your data. That means understanding the privacy (and other) policies, as well as the reputation of your various online providers.
Any online service you use has some portion of your information on their computers. Do you trust them not to share it with people they shouldn’t, or haven’t, told you about? Will they protect you from unwarranted access requests? Do they maintain adequate security measures? Do they know what they’re doing?
With so much of our activity happening in “the cloud” these days, it’s critical to:
- Use only online providers you trust.
- Only trust those providers with specific, and perhaps limited, information.
- Avoid online providers you don’t trust, if you can.
- Consider whether additional layers of security, like encryption, while inconvenient, might be needed to maintain your privacy and trust.
Honestly, it’s almost impossible to avoid online services and cloud computing entirely, short of disconnecting completely. Understanding what it is and what it means, however, can help you make more informed choices about how you use the cloud, and into whose hands you place your precious data.