Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I keep hearing about Cloud technology, although mostly in social networking development, etc. I heard about it today again, and now I'm very curious: what is the 'Cloud' and how does it relate to me (in my case, I guess) as a Web Developer? How do I answer the question I keep getting asked—"is it on the cloud?"—without saying "What you are asking is meaningless?"

share|improve this question
11  
en.wikipedia.org/wiki/Cloud_computing should get you started. –  Demian Brecht May 27 '11 at 19:01
21  
Cloud is the new Web2.0, but without the rounded corners. –  unholysampler May 27 '11 at 19:12
    
@unholysampler: Graphic, or css-ed? –  Christopher Mahan May 27 '11 at 20:38
    
It's supposed to be robust and reliable - except that amazon's cloud crashed a few weeks ago. And my white-hat hacker friends tell me it ain't all that "secure" either. But that doesn't mean it's not useful. –  Steven A. Lowe May 27 '11 at 20:39
1  
I am the Great Cloud. Ignore the computers behind the curtain. You're a programmer. You wouldn't understand. It's a hardware thing. Google it and ask a better question. –  JeffO May 28 '11 at 3:14
show 1 more comment

6 Answers

The "Cloud" is a buzzword. It has no definition that doesn't include the word "Cloud" Here is how Dell describes their Cloud:

Cloud computing delivers IT as a service. It might be your own private cloud accessible only within your organization, the public cloud of an external provider, or a hybrid cloud that spans both.

Oh, so the cloud is IT as a service. Right. I thought the Geek Squad was IT as a service? So, is the cloud the Geek Squad, or is the Geek Squad the cloud? And if the Geek Squad starts offering Cloud services, will a universe ending singularity result? There is no hell hot or deep enough for marketing people.

Basically its the logical progression of clusters, virtualization, and faster internet connections. Companies can specialize in providing storage and processing power, and you can host your application in their cluster, and access it over the internet. And, using virtualization, it can exist in an arbitrary environment unrelated to the actual physical hardware it's running on. Very cool.

The ability to host an application on third party equipment that can be transparently scaled is very powerful. You can create a web presence without having to over-commit on hardware. The specific hardware implementation doesn't matter to developers, so that's nice as well.

The reason they call it the "cloud" is because in traditional network diagrams, the internet, the rest of the world, the WAN, the networking and hardware that is beyond the scope of the immediate diagram, is always represented as a cloud.

Network diagram

The very nature of the cloud as unknown country has persisted to the present day, and is at the root of why no one can satisfactorily describe what the cloud is. The whole point is that you don't know what it is. You don't need to. You just know that you can give your app to Amazon, or IBM, or any other "Cloud" provider, and they'll host it, and bill you based on usage.

share|improve this answer
1  
What marketing brochure did you get that from? –  Christopher Mahan May 27 '11 at 20:39
1  
You just gave a definition that doesn't include the word "cloud". –  Rein Henrichs May 27 '11 at 20:51
9  
@Rein yeah but it has a picture of a cloud on it labeled "Internet" –  Steven A. Lowe May 27 '11 at 21:12
3  
That's a terrific explanation. +100 from me. –  user8685 May 27 '11 at 21:19
    
@Steven that was edited in after my comment :) –  Rein Henrichs May 27 '11 at 21:28
show 2 more comments

When you hear the term "cloud", it is really a (poor) abstract term that runs the gamut from:

  • Infrastructure as a Service (IaaS) - where you have virtualized computing resources available to you through both a remote provider and a programmatic API. Common examples of this are Amazon EC2 and Rackspace Cloud. Note, the "programmatic API" portion of that description is the kicker - otherwise you are just talking about remote hosting or virtual private servers (VPSs).
  • Platform as a Service (PaaS) - which is an abstraction up to the application layer. For example, you as an web application developer would build a deployable artifact (let's say .war in java or a gem in ruby, for instance) and then deploy that artifact to a PaaS provider. They take your app, hide all of the hardware and OS details from you, and managing scaling your app up and down based on the traffic/throughput of your app for you. You as a developer are concerned only with writing the app itself and nothing else (that's a gross exaggeration, but meant to make the point that you only control the app, really). Examples are Google App Engine or Heroku.
  • Software as a Service - this is where you as a developer relinquish control of everything to a third party with the exception of becoming a client of their services. You basically use an externally provided API to work with your data on someone else' infrastructure through a set of web services. Probably the most popular example of this is Salesforce.

The term "cloud" itself is a really poor description of those three things. In general when people refer to "cloud computing" what they are getting at is the paradigm shift where you have specialized providers where you relinquish control of some (or all) of the non-functional concerns of your software as opposed to both hosting, writing, and managing everything yourself.

share|improve this answer
add comment

Long before "The Cloud" was a buzzword, people drawing network diagrams would draw all the clients, servers, routers, and switches under their direct control, and the connections between them, but traditionally just draw a cloud for parts of the network they don't control. For some examples do a google image search for PSTN (public switched telephone network). The cloud represents a nebulous thing our wires go into and out of. We don't have to understand how it works because other people take care of that. We just trust the packets to come back out in the right place on the other side. Usually the internet is drawn as a cloud, because once your packets hit your ISP, you trust that it knows how to get them to the right place and don't care what specific routers it travels through.

"Cloud computing" in a nutshell refers to services that are hosted inside the cloud on your home or business's network diagram, i.e. the internet. The hardware isn't under your direct control, you just send your data "into the cloud" and trust your vendor to process and store it so it's available for you when you need to pull it back out. The buzz word meaning of it also implies that the things now being handled "in the cloud" were traditionally the domain of a local computer. You might traditionally have had a backup server, but switched to a service like carbonite that does your backups "in the cloud." You previously used MS office on your local desktop, but now use google docs, etc.

As a web developer what it means to you is that customers are often looking for ways to replace services traditionally handled by desktop computers with web applications. Being able to replace and not merely supplement desktop software may give you a competitive edge.

share|improve this answer
    
The cloud represents "a nebulous thing" - I like it. Very meta :-) –  user4051 May 28 '11 at 7:56
add comment

A lot of people have admirably explained what cloud is, So I will try to address what cloud can bring to you (a web developer) in addition to unicorns and golden rainbows: (with shameless plugs to our technology)

  1. Hosting and horizontal scaling on demand - Amazon EC2. Say our website gets slashdotted or redditted and you need extra hosts for the next few days alone - no problem. They can be brought up and down on demand.
  2. fine grained Charging - pay only for what you use. The cheapest service in AWS is actually free for limited usage! So try building your website at no cost. No more springing for datacenter hosting etc.
  3. You want to build a site that needs a backing database - no problem. You can use AWS SimpleDB for noSQL / RDS if you need SQL.
  4. You want to store those cute kitten images and link to them? AWS S3.
  5. You want to address a global set of people, with low latency? AWS Cloud front! These have edge servers co located near your customers so they get those images lightning quick!
  6. Live monitoring /reporting of usage of your sites
  7. You want a distributed system to solve a huge dataset problem? AWS MapReduce
  8. You want to email your customers reliably? AWS SES
  9. You want to do some asynchronous processing like a backend for online orders? AWS SQS

There are a lot more at http://aws.amazon.com/. Check it out! Obviously, this is all from AMZN, Others like Google have competitive offerings as well.

share|improve this answer
add comment

The problem is "Cloud" is a somewhat ambiguous meaning (in scope).

The minimum most people think when they hear "Cloud" is virtualized infrastructure and it's benefits:

  • elminate the redundancy needed to account for potential hardware failure
  • the potential to have "elastic" or on demand infrastructure resources (ie. spinning up 10 more fully provisioned vms to handle peak or seasonal load)
  • ease of reallocating/reassigning/decommissioning resources
  • ease of replicating environments
  • ability to "snapshot" and "rollback" virtualized infrastructure resources and in some cases entire environments

By the way you don't always get everything in the list, and even if you do it may not be 100%. You can Google for what happened to "AWS US East Outage" for a real world example.

People will also sometimes add on other services as part of "Cloud" like Database, Logging, and any other service which kind of straddles the space between "infrastructure" and "application".

Some people also use "Cloud" as a synonym for "virtual". Sometimes people also use it to mean "Software and Platform As a Service".

share|improve this answer
add comment

Cloud is just another word for the internet. It is becoming more buzz now as the internet matures enough for organisations to rely upon it for important software services, so we keep hearing about things like SAAS.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.