Most people aren’t yet sure what “The Cloud” is. Wikipedia’s disambiguation page suggests that it is
a metaphor for the Internet in cloud computing, based on how it is depicted in computer network diagrams [i.e. as a woolly cloud] and as an abstraction for the complex infrastructure it conceals.
Don’t worry if that makes you scratch your head, IMHO that description simply says “uh, we’re not sure”.
It’s actually fairly easy to understand what a computing “cloud” is. “Cloud” is, to “my computer”, what “city” is to “my friend”.
If your friend lives in a city, then they are part of that city: one of countless entities within the conglomeration of lives and roles, thousands or millions of individuals with a multitude of roles and needs.
A cloud is just a lot of computers, storage, network and applications. When these resources are bound together, what you have is a thing that is much more than a computer. It’s more akin to an archaic super computer.
In the very early days of computers, a single computer was generally capable of executing one specialized piece of work. Gradually computers became slightly less domain specific and more general purpose, but they were best utilized by creating one task to be executed exhaustively – like running a payroll routine thousands of times for different employees, or applying tax codes to millions of citizens.
Modern analogy: Imagine a web-browser that, once you input a URL, requires you to view the entire site one page at a time, before it can go on to another site, and does so at the speed of a cell phone with 1 bar of 1g connectivity.
Super computers were built ever so slightly differently: yes, they could bring enormous power to bear on large, singular computations, but they could also very efficiently handle fragmented versions of those repetitive tasks like payroll/tax runs.
For a normal computer to have processed the tax record run, it would have a single program which looked up each tax record, implemented the tax rules on it, and then stored the record before proceeding to the next. One record at a time, until all records were processed.
Super computers initiated the next logical step, breaking the process up into steps to create a conveyor belt of execution steps and data items.
For example, the first job would be to retrieve some or all of the tax records required. Then apply various pieces of tax logic to the resulting data and store the intermediate results. Apply final processing to do things like flag delinquent accounts, etc. Run through a routine to create the necessary “save to permanent disk” instructions, and then run those to save it.
Each of these steps would be implemented as a separate module. And in theory, each of them could be executed by a different part of the computer – perhaps even simultaneously.
You see – long term storage was really really slow, back then. You think your hard drive is slow? When I did an internship at a council computer center in 1987, the hard disk platters were effectively “cache” memory. The long-term storage equivalent of a modern HD was a magnetic tape.
When you go to access your family photos from 2004, your hard drive might have to move the disk head to an uncached sector of the disk, taking less than a milisecond.
To access an uncached “sector of tape”, a human has to physically go and retrieve the tape, unspool the tape in the machine, spool the new tape in, and then the computer has to tension the tape, rewind it, and seek to the data…
So – fetching the records from the tapes to some intermediate form on the disks ahead of the attempt to process them, would allow you to do things like cross-referencing, etc, very efficiently, significantly increasing the capabilities of the software itself.
And splitting the overall task into small steps/modules would save the computer for being locked into doing payroll and nothing but payroll for a day or two at a time.
Different steps of different tasks could be interleaved, and if each step could handle ranges of the total workload, the physical resources could be shared efficiently.
Chances are, you’d probably have to access several magnetic tapes to load all of the tax records. So if your program grabbed what it needed off one tape, formatted the data onto the disk ready for the next step to process, then it could free up the tape drive for another application.
This human-pace process of interleaving is actually a very close parallel to how multi-tasking works on a modern computer, especially now that our personal computers are also finally multi-core.
A computing cloud is just an explosion of that concept to a network scale.
A slew of computers and devices (printers, routers, disks, etc, etc) all offering their resources for batches of work.
The “cloud” analogy only goes so far, though. It doesn’t happen by magic. It’s more like a small organism with a simple central nervous system. The work requests go to a central controller which knows what resources it has available and sends the relevant bits of work to the best destinations. Requests for data to the devices with disk space; requests for 3D or really heavy 3d-like computing to the devices with GPUs, requests for network access to the devices that can talk to the internet… etc, etc.
Of course, some devices will have multiple of those capabilities, but the analogy-failure is dwarfed by the truly abstract component of the term “cloud”.
Companies like Amazon, Google and Microsoft have mind-bogglingly vast networks of computers, disks, switches, etc, to meet their maximum potential capacity needs. Which means the majority of time those devices are idle.
These networks became clouds – vast pools of resource and processing power into which computing work went and out of which processed data returned, without the end user needing to know which computer – or possibly computers – did the work.
The big search companies – Google and Microsoft – have vast farms of web-crawling bots. Simple computers with huge hard disks which spend their time browsing the web and helping to index the content they find.
It’s probably close to impossible to get a computer with as little power as that requires. And so these corporations find themselves with immense amounts of processing power (and disk space) that is idling.
Hence Hotmail and Gmail – you’re using spare disk sectors across hundreds and thousands of web-cache disks.
Amazon also figured out a way to use their spare web-server and order processing cycles, the Elastic Compute Cloud which has pretty much become the standard reference for what “a cloud” is.
So when you see that Microsoft advert saying “to the cloud”, what they’re saying is “let us compute that for you”.
Another way to see the cloud is as the big tech companies starting to doubt the abilities of the CPU, disk and RAM manufacturers and technologies of today to meet the computing needs of tomorrow…
Hard Drives and RAM aren’t scaling with computing needs. They are still evolving at pre-internet rates (which I’ve always had a conspiracy-theory hunch has been deliberately fixed). Today’s standard machine wants to have 16GB DDR4 2500, and today’s defacto CPU should be a dual or quad core 4.5Ghz CPU.
But it’s nowhere near that. Intel tried to redo the x86 with the Itanium. They screwed up, and worse they failed to appreciate the most important lesson the Itanic has to teach: The CPU is the blood of the system, not its heart or its mind. Users need applications, and applications determine what the CPU needs to provide.
Intel thought differently. With the Itanium they expected that if they built a new CPU architecture compilers would come whizzing out of thin air (their failure to do so perhaps part of why Intel decide to make its own compiler). It doesn’t help that Intel have a reputation for being particularly secretive about how their CPUs work and put a lot of work into trying to keep people from leveraging it.
The secretive part is just a failure on Intel’s part to understand their role in things: they provide copious documentation on how their CPUs work, they just don’t do it in a developer friendly way, and if you look thru the history of SSE instruction sets, what you’ll find is a rather prosaic evolution that has fuck all to do with what programmers were actually looking for. Yes, SSE instructions have been helpful, but not as beneficial as they could have been.
Anyway, in an attempt to maintain market share, Intel quickly slapped together the multi-core concept and tossed us that bone, knowing that consumers understand more = better, and from their years of watching Microsoft, that consumers can easily have the wool pulled over their eyes when stuff goes wrong. (I hate to defend the crashiness of old versions of windows, but by Widows XP it was becoming obvious that it was shitty driver code from 3rd parties that was causing most of the crashes and not windows itself; obviously, windows should still cop blame for allowing that to crash it)
The same way that Microsoft initially missed the Internet revolution because it had trained itself to reject the notion of innovation occurring outside of MS, Intel is ailing because it sees itself as the center of our computers…
Think “American Pie” (song) of Processing Power. Millions and millions of people sitting watching an hour-glass or spinning thingy every second of every minute of every day because the PC hasn’t kept up with the demand placed up on it.
So Microsoft is rushing in to be in the birthing of this new technology. I can see why — cloud computing is going to let your cell phone become a front end to globe-spanning supercomputer power, power that corporations like MS and Google were otherwise going to have to write off, because it would just be sitting their idling.
The only thing it’s going to do for the desktop, really, is help with it’s demise. The cons of a console are greatly diminished when it has access to The Cloud to deliver it capabilities that we traditionally provide ourselves with by upgrading our PC. The cloud, though, is on-demand. So instead of having to go out and buy a $500 GPU every 3 months, to then only use it for an hour every few nights, we can just use spare CPU cycles out there on “the cloud” of our providers…
And with cloud empowered cell phones, iPads, etc, you’re going to need to power up that desktop PC less and less. Add wireless phone-to-TV connections so that you can walk into your house and use your 54in LCD as your display while your phone is on the charger … and you’ll soon be playing the next Red Dead off your phone…