I don’t get this whole cloud computing thing, and believe me, I have been trying to understand it. Traditionally, I have paid little attention to emerging technology fads; if a fad sticks, then I might take the time to care. But I’m being a little more proactive with this one.
From what I have been able to sort out, the idea is that your data (the important part of your everyday computer work), lives on some server “out there”, in the “cloud” that is the internet. Veteran internet geeks like myself don’t find this to be particularly revolutionary. This is the essence of IMAP, at the very least, a protocol whose RFC is over 2 decades old. Cloud computing seems to be about extending the same paradigm to lots of different kinds of work, presumably with office-type documents (word processing documents, spreadsheets, and databases) leading the pack.
How is this all supposed to work? Intuitively, I wonder about security and data ownership issues. I don’t think we’re supposed to ask such questions. Every description I can find of cloud computing does a lot of hand-waving and asserts that everything will “just work”.
I had one computer science professor in college lecture that said “a bad idea is still a bad idea no matter how much money you throw at it.” I don’t yet know if this is a bad idea. But it’s definitely a big buzzword. I have been reading that Ubuntu is launching some kind of cloud service and a distribution of Linux that is integrated with said service. One part of this (or perhaps both parts) is called “Cloud One”.
My personal version of the computing cloud is a microscopic yet ridiculously high density USB flash drive, something I have only recently discovered and grown accustomed to (I told you that I’m often behind the technological curve). I tend to bring it with me nearly everywhere now. When I analyze it in the context of the cloud, I worry about the security and redundancy matters. I.e., I should probably have an easy, periodic backup process in place at home. Also, I should use some kind of encrypted filesystem for good measure (EncFS over FUSE should fit the bill and operate over whatever filesystem is in place).
Benjamin Otte has recently posted the most cogent use case of (what might be) cloud computing. One aspect of his vision is that his desktop settings are the same no matter which computer he logs into. I can’t deny that that would be nice. I have long forgotten what it’s like to customize and personalize my desktop environment. This is because I work on so many different computers and virtualized sessions that it would simply be too much trouble to make the changes everywhere. I don’t see how my flash stick solution would be able to help in such a situation (though that’s not outside the realm of possibility). But I’m also not convinced that the cloud approach is the ideal solution either.
Then again, it’s not really up to me. I suspect it will be largely up to the marketers.
Followup:
- I actually found a good reason to acquiesce to the cloud computing fad soon after this post.
8gb flash drive + knoppix (or other bootable live ‘cd’) + computer = your own OS/desktop on any computer you want (that you can reboot from usb). maybe also sync with some kind of central server with your new files.
or maybe just a vmware image with your own os, not sure which is the current fad.
what this has to do with ‘cloud computing’ i have no idea.
“What this has to do” is that you may have proposed a reasonable alternative to the cloud computing fad. Suddenly, all that work we heard about some months ago with various Linux distros aiming for the crown of “fastest boot time” don’t seem so silly.
In you case it’s portable computing. Cloud computing is rather whenever you are, you only ssh to your home machine (but which does not belong to you) and work through it ;) And you are right – that’s another term for work being done elsewhere.
Cloud computing is a wonderful convenience and a great idea, but it should not be your only copy of your work, and should never be used for anything you would be very upset if everyone in the world suddenly had a copy.
I suppose it depends on your definition of “cloud computing.” In practical terms, if/when my mom uses the term “in the cloud” what she means is “in the internets” and that’s all she will ever know. As far as she’s concerned it doesn’t matter if the data is stored on an Amazon storage grid or on Facebook’s servers.
What /does/ matter is that cloud computing is becoming increasingly commercially viable and increasingly accessible, and the technology opens up radical new development/deployment paradigms, which in turns opens up opportunities for new commercial services — Google search is an example of such a process. SkyDrive is another example, one that uses “in the cloud” as part of its marketing jargon. The question of data ownership is moot because the data is inherently coupled to the service.
As a developer, though, the impact can be tremendous; with a cloud-based architecture you could (for example) get FATE to scale freely, no matter how many configurations you need, assuming of course they can be hosted in the cloud: just create the correct VM image, fire up another node and let the test suite run. A commercial backer for ffmpeg could then take FATE, add a hundred different combinations/configurations and get an entire integration lab up and running in almost no time and without budgeting an entire staff to keep it that way.
I guess my point is that for certain types of software, particularly highly parallelizable code with scaling needs that vary greatly over time, compute clouds can be quite exciting. As this will become increasingly obvious, you might as well simply ignore the marketing.
Tomer, you seem to be taking the cloud paradigm to a whole other level. In most interpretations I have read, cloud computing is just about storing the data somewhere “out there”. Your solution seems to be about transparent parallel computing. I have some idea how to accomplish the data storage goal, even if I don’t agree with it. The transparent parallelism is a bit loftier.
Well, in that case I direct your attention to Amazon S3/EC2 — both grid- (or cloud-, or whatever-you-want-to-call-it-) based software solutions, one being a data grid and the other a computational grid. Although the Amazon implementation has significant drawbacks (particularly incoming/outgoing network bandwidth costs), the mere availability of such services is eye-opening.
You’re right about the eye-opening bit– I hadn’t heard of EC2 yet. I have known about S3 for awhile and it seems to fit the goal of the cloud-as-storage paradigm, which is what cloud computing largely seems to be about, per my understanding (and the definition seems very fluid which was the source of my initial frustration).
Something like EC2 could really turn FATE on its head– I’m envisioning an instance to govern each compiler/CPU configuration. Though this would likely only accommodate x86_32/x86_64, those are easily the most important architectures.
Can ARM/PPC/some of the other major platforms be reliably emulated on a VM? Per-CPU cost on EC2 is so low it might actually be computationally practical.