It's hard these days to be in the computer business and avoid "the cloud." All the big companies — Microsoft, IBM, Amazon, Cisco, and Apple, among others — tout their cloud services. For the most part, the folks who have to think about cloud computing are programmers. But odds are that you’re using the cloud today, and definitely will be tomorrow.
Some time ago, Orin Hargraves mused about the expanding data cloud and about some of the terms, like spiders, crawlers, and gophers, that are associated with building that giant and amorphous entity. And Ben Zimmer examined “the cloud” briefly in an article that examined some odd words of the wireless world.
The technical vocabulary of the cloud can be intimidating. But I thought it would be interesting to peek behind the cloud, so to speak, at a few of the fundamental terms that those of us who work with the cloud deal with daily.
What is "the cloud," anyway? In simple terms, the cloud is about outsourcing computing services. A popular analogy is the school lunch. In my day, every school had its own cafeteria, and the "lunch ladies" prepared meals using the school's own kitchen. But that meant that each school had to install its own stoves and ovens and refrigerators, plus hire a staff to plan and cook the meals. These days, many school systems use vendors who handle the entire meal service, and the lunch ladies are no more.
This is roughly what the cloud looks like to companies. Rather than investing in hardware and software and in-house expertise to manage complex computer systems, companies can put these things "in the cloud." (In this sense, the opposite of cloud computing is on-premise computing.) It's then the cloud vendor's job to worry about the things that IT departments normally do. (Needless to say, cloud computing is nowhere near this simple.)
And not just companies. You and I can now keep our music collections in the cloud instead of on our home computers (on our own premises, as it were). Many of us use Web-based email and calendar systems like Gmail or Hotmail, where your messages and dates are stored on remote servers. Using Netflix or Amazon, you can stream movies via the cloud, without having the movie at home and even without a DVD player. You can use a backup program like CrashPlan or Mozy that copy your computer files to the cloud, away from the outrageous fortune that your own hard drives are heir to. Clever programs like Dropbox and Skydrive let you put files into a folder on your computer, and those programs use the cloud to automatically synchronize the files to other computers. If you have a smartphone, many of the apps get data from the cloud and store it there.
Back to the words. Why cloud? The term evolved organically. Timothy Chou explains:
[M]any years ago those of us who built and sold client server applications, software and hardware used to draw a picture with the PC connected to a network and the network connected to a server. Since none of us actually understood how the network worked, we drew a cloud and labeled it "network" and left it at that.
Chou’s fuzziness about computing stuff just happening “out there” remains surprisingly widespread, which is probably why the nebulousness of the term cloud really took hold.
Cloud computing begins with enormous data centers, which are warehouse-sized buildings crammed full of PC-like computers, though without monitors or keyboards. (Data centers use so much electricity that they’re often located close to power stations.) If you’re watching a streaming movie, the bits and bytes that constitute the movie are stored on a data center somewhere and are sent to your computer using the Web.
In addition to data centers, an essential feature of cloud computing is virtualization. This bit of computing magic allows programmers to emulate one computer (a virtual machine, or VM) inside another computer. Although the VM is a just a piece of software, it acts exactly as if it were a real computer. (It’s like a flight simulator that pilots train on, except the thing being simulated is a computer.) Virtualization is important for the cloud because a single physical computer can run (or host) hundreds or even thousands of virtual computers at the same time. A data center might contain tens of thousands of physical computers, but by using virtualization, the data center can run millions of virtual PCs. This means millions of web servers, millions of movie-serving computers, and so on, far more than it would ever be practical to have as physical computers.
Suppose you start a small company that lets people post short messages on the Web. When you start out, you might run your own web server and store the messages on that computer. To your delight, your application becomes hugely popular. You now have a problem with scaling your application; that is, with expanding it to meet demand.
For a small company, on-premise computing isn’t very scalable, so you move your application to the cloud. You can then easily scale your application by simply provisioning (setting up) new virtual machines. (Informally, programmers frequently refer to this as spinning up new VMs.) As with the outsourced school lunch, your company doesn't need to invest in expensive new facilities — you can just keep adding VMs to your cloud. The vendor companies let you use as much of their services as you need, meter your usage, and charge accordingly.
You no longer have to worry about backing up your data, or about upgrading your computers with security patches. It’s no longer your problem to worry about uptime (your application’s availability), because it’s easy to provide redundancy by using multiple VMs – if one virtual computer fails, another continues functioning while a replacement is provisioned. You don’t need to monitor your network and perform tasks like load balancing. An important consideration is that if for some reason your business shrinks, you can just scale back your cloud requirements — you’re not stuck with a bunch of equipment and software that you paid for and now no longer need.
Of course, most of us don’t have to think any more about scalability and provisioning than we need to worry about how our local supermarket keeps everything in stock. But cloud computing is a part of our daily life already, and it might not be long before our devices, our cars, and maybe our home appliances are all as reliant on the cloud as they are on electricity. So if you hear about a new data center in your area, or if a social-media site reports that it’s temporarily over capacity (perhaps until someone provisions some new VMs), now you have a clearer view of what’s going on in the cloud.