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.

Possible Duplicate:
What is “the Cloud” and how does it relate to development?

First some context: I don't understand what people are asking when they ask "It it on the cloud?" Here is an example. I make a "website" with php that is two pages hosted on a dedicated linux box running apache. One has a form where you upload a file, and the second computes some stuff based on that file and coughs back an answer. Presumably you could call this an API as well if there is a check-box on the form to specify the response as human readable vs. XML. Is that "service" "on the cloud" or it is just a hosted service?

Is gmail "on the cloud"?

Is amazons S3 cloud "on the cloud" or is it "the cloud" or just "a cloud"?

I'm pretty sure at this point that "on the cloud" is marketing jargon for "on the internet" Is there more to it than this? Should I ask this one on english.stackexchange?

To differentiate my question from What is "the Cloud" and how does it relate to development? I am asking specifically how to answer the question I keep getting asked "Is it on the cloud?" without saying "What you are asking is meaningless." given the example of my little web service/API. Is every webpage "on the cloud"?

share|improve this question

marked as duplicate by Robert Harvey, Mark Trapp Jul 20 '11 at 23:45

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

3  
It's basically the new term for what normal people used to call Application Service Providers. –  Charles Jul 20 '11 at 21:38
2  
The definition has been clouded a bit in the midst of all the hype and marketing. –  doppelgreener Jul 20 '11 at 22:06
    
Hi Mikey, you're asking essentially the same thing as the earlier question: any questions outside of how it relates to development is off-topic here. I've gone ahead and added your question to the earlier one, although I think it's wholly answered by the existing answers. –  user8 Jul 20 '11 at 23:46
    
I think this question is different and merging it with the other makes the answers already posted there less responsive. That being said, whatever. Thanks to everyone who helped here. –  Mikey Jul 21 '11 at 0:04
    
Furthermore I think Jeffs response to Darien's answer specifically illuminates the difference between "what is cloud computing" and what is "the cloud." Clouds don't have to be on the internet. The cloud seemingly does. –  Mikey Jul 21 '11 at 0:05

8 Answers 8

up vote 15 down vote accepted

Unfortunately, "The Cloud" is first and foremost a marketing term, so to some extent its whatever definition people think they can get away with.

I would suggest that "Being In The Cloud" requires:

  • Your product/data is accessible from anywhere via the internet.
  • Your product/data is managed in a multiply-redundant way so that it can still work even if a small meteor hits a single data-center.
  • [Bonus] You can very quickly and easily adjust your system for more (or less) capacity, especially in a way which boils down to calling someone and saying: "I need more of that storage or computational power. I'll wire you the money."

P.S.: So I wouldn't call your one-server web-service in "The Cloud". That's not a bad thing, but if you're dealing with non-technical types who have been too inundated in buzzwords, you might consider throwing "Service Oriented Architecture" at them and then saying that it could be in "The Cloud" except that at the moment it runs "too efficiently" for Cloud-hosting to be worth it. ;)

share|improve this answer
2  
I was under the impression that cloud meant accessible from the internet and that the data was stored on servers in multiple locations of the country/world that would serve you based on which server you were closest to. –  The Muffin Man Jul 20 '11 at 21:55
    
@Nick That's a common configuration, but not a requirement –  Joel C Jul 20 '11 at 22:42
    
I can't have a local cloud? –  JeffO Jul 20 '11 at 23:30
    
@Jeff if you did, would it be on the cloud? –  Mikey Jul 21 '11 at 0:07
    
+1, if I was providing a webservice, and someone asked "is it on the cloud?", I would assume that what they really wanted to know either involved reliability or scalability. –  Carson63000 Jul 21 '11 at 3:29

The "Cloud" is essentially a service or data source that is hosted by a remote site. The term "Cloud" is thrown out by just about everyone who wants to say that you can access their services or their data from anywhere - as you said - a marketing term. Some examples of Cloud applications are:

  • Remember the Milk
  • Evernote
  • Gmail

You can also host your application or data in the cloud - thereby making it available to various platforms and customers. A couple of the main players behind that are:

  • Amazon EC2 - Amazon's offering will essentially give you the machine itself and give you the ability to provision it yourself.
  • Microsoft Azure - Microsoft has various offerings here. There is SQL Azure (for the database) or Windows Azure giving you the platform to host a web site or service.

One of the nicest things about these offerings is that you can expand or contract your computing abilities as your load requires. If you have a peak in usage, you can provision more space/power for those peak times, while at the same time, bring it down as necessary. They will charge you by the amount of power or capacity you need over a certain time period. This allows you to grow with your needs and only pay for what you need.

share|improve this answer

While "the cloud" has largely become marketing jargon, there is an actual widely-accepted definition, with real requirements to qualify as being considered "in the cloud." The NIST (National Institute of Standards and Technology) in the US has drafted the most widely-accepted definition, which as been adopted by the Cloud Security Alliance:

The NIST Definition of Cloud Computing

Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability and is composed of five essential characteristics, three service models, and four deployment models.

Essential Characteristics:

On-demand self-service. A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service’s provider.

Broad network access. Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling. The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, network bandwidth, and virtual machines.

Rapid elasticity. Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out, and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.

Measured Service. Cloud systems automatically control and optimize resource use by leveraging a metering capability1 at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.

Service Models:

Cloud Software as a Service (SaaS). The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

Cloud Platform as a Service (PaaS). The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.

Cloud Infrastructure as a Service (IaaS). The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).

Deployment Models:

Private cloud. The cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on premise or off premise.

Community cloud. The cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on premise or off premise.

Public cloud. The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.

Hybrid cloud. The cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).

References:

The NIST Definition of Cloud Computing (Draft)

http://csrc.nist.gov/publications/drafts/800-145/Draft-SP-800-145_cloud-definition.pdf

CSA: Cloud Computing Architectural Framework

https://wiki.cloudsecurityalliance.org/guidance/index.php/Cloud_Computing_Architectural_Framework

share|improve this answer

A Cloud Sever is basically a VM server - On the internet. But the resources can be adjusted dynamically (no reboot needed).

It gives the ability to do things like " Have more processing Power between 5-6am every morning" and only pay for what you use.

Rather then getting the best possible server you might ever need, you get what you need when you need it. (In terms of hardware at least.) No more wasted CPU cycles!

The end user has no idea if they are hitting a Cloud server or a regular server. Nor should they care.

share|improve this answer

One of the big differences is that you have no direct control over the hardware. This has it's advantages (they do the backups, keep it running when the power fails, etc.) and disadvantates (they do the backup, keep ....).

share|improve this answer
1  
I can't have my own cloud? And if I do, I can't touch it? –  JeffO Jul 20 '11 at 23:28

A service that gives the user the ability to utilize an array of hardware dynamically. Disk space, memory, processing, data throughput, pay as you go. You could run websites, applications or entire operating system(s).

Difficult to specify what it is, where it starts or ends. Marketers can try and take a single server and sell it as a cloud just like a programmer can tell you they are great and actually suck.

Typically a hosting service will give a fixed amount of computer space/specifications (could be the whole thing) and whether you use a little or all of it, you pay a fee for a given time period. Cloud services will typically charge in some complicated tiered fee structure based on usage much like an electrical or water utility company.

share|improve this answer

AFAIK there isn't an official non-marketing notion of "the cloud" and the term is quite ambiguous.

I usually like two definitions:

From a user's point of view, something is in the cloud if it is not running/stored on the device they are currently using. One implication of that is that it's more likely to be accessible from multiple devices.

For example, angry birds is not in the cloud, while Farmville is in the cloud. Users know this because they can play one on the subway, but not the other.

From a developers' perspective, something is in the cloud if they can avoid the headache of maintaining the execution environment or storage. A Linux box in your office is therefore not "the cloud", while paying some large nameless corporation to ensure that things are working properly is "the cloud".

Of course, things are more likely to be in the cloud from a users' perspective than from the developers' perspective.

share|improve this answer

"The cloud" is a common symbol in network diagrams to illustrate the internet - since years. Specifically it must not be "the internet", it can be any WAN (Wide Area Network).

If you want to be "on the cloud" / "in the cloud" just draw a picture and place yourself in the middle of the canvas and draw a cloud around you.

Technically, place yourself onto an internet server that is connected to the internet (sorry for the word-doubling, my English is not perfect).

That these network diagrams some day got into the hands of marketing people only means that IT and networks are really popular and influence other areas of life. Oh, how come?

In terms of marketing, "the cloud" is the successor of "being online".

A little story from "the cloud": About ten years ago or so people were blogging on some blogging platforms. These did not offer comments. So the bloggers scraped their blog into their own server (today this would be called RESTFULL remote API) and then added a simple PHP/MySQL scripts for comments below their blog posts to get feedback from their audience (compare with guestbooks). This continued with collaborative development into the b2 blogging platform, then wordpress and 10 years later you can even blog in "the cloud" with comments. Yeah the cloud is just great. And it's everywhere as you can see.

However there might come the day where the term "the cloud" will be dropped. But there is relief, when this happens there will be a new term for the internet or "being on/in the internet". So actually I must flag your question to be closed because it's not specific in a sense a programmer needs to expect specificity. Sorry.

share|improve this answer

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