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.

Cloud computing is a model of renting resources - servers and data storage. Both servers and data storage have been around for much more than a decade so far. Yet cloud computing offers only appeared several years ago.

What's the deal here? What was the critical change that triggered massive adoption and massive marketing of cloud computing offers?

share|improve this question
62  
It appeared long ago, but it was not until recently that it was name (hyped as) "cloud computing". –  marco-fiset Oct 23 '12 at 13:42
5  
en.wikipedia.org/wiki/Cloud_computing#History great detail starting in the 50's on, when it first appeared, it didn't appear earlier because computers weren't viable for this stuff before the 50's, or maybe just nobody had the idea before then ;) –  Jimmy Hoffa Oct 23 '12 at 14:23
2  
Big companies want gradual tech change so that they can sell their products at every level of technology :( –  QuiteNothing Oct 23 '12 at 14:51
2  
In the early 2000s it was called Application Service Providers today it's SaaS. –  Mike Brown Oct 23 '12 at 14:53
10  
New name. Ancient technology. –  Thomas Eding Oct 23 '12 at 17:06

9 Answers 9

There are two answers. The first is that it didn't really take off until high-speed internet access became ubiquitous. Cloud computing doesn't work well unless you can be reasonably sure that you will always have high-speed access to your cloud resources.

The second answer is that it's not really a new idea. Before PCs became affordable it was the norm to have many people connecting to one computer using dumb terminals. The machine you would be sitting in front of wouldn't have any storage or processing abilities beyond what was necessary to send your input and display output.

share|improve this answer
6  
Just recently, I found myself without any form of network access whatsoever (mobile phone, landline, DSL, cable) in the middle of Germany, not even 50 miles away from Karlsruhe, home of the very first CS university department and the very first Internet provider in Germany. Made me appreciate once more, what "always having high-speed access" means, and I was pretty grateful that my Android phone caches my Google Calendar data :-) –  Jörg W Mittag Oct 23 '12 at 13:13
    
@JörgWMittag: In the UK, you can have this experience as often as you like. You simply have to get your mobile phone service from Three. –  Tom Anderson Oct 25 '12 at 17:50

It has appeared earlier. In fact, this was the original model of getting access to computing resources back in the 1950s till well into the 1980s, when it was called "time sharing", then in the early 1990s it re-appeared under the name "Client/Server", then in the late 1990s again under the name "Thin Client", then "Application Service Provider".

However, in the exact form we see it today it requires high quality, high reliability, high throughput, low latency, low price, ubiquitous Internet access, which didn't exist until a few years ago, and in fact, still doesn't exist for the vast majority of people (e.g. almost all of Africa, much of Asia, parts of Eastern Europe and South America).

share|improve this answer
9  
Exactly. My first computer related job way back in the mid-80's was contract management for time share center. Everything old is new again. –  jfrankcarr Oct 23 '12 at 13:40
9  
Yes. The internet was invented to solve the problem "how do we let researchers in different locations share their expensive computing resources?" The books "Inventing the Internet" and "Where Wizards Stay Up Late" tell the story. –  Nathan Long Oct 23 '12 at 13:56
2  
This is not entirely accurate - what is different about the cloud is that as a user you no longer know or care where your time sharing machines are; hence the name. –  reinierpost Oct 23 '12 at 14:06
9  
@reinierpost If you think there weren't cheaper providers of computer power in all previous models which gave no guarantee of location, you are sorely mistaken. It's the same now as then, if you want to demand a specific location you have to pay more because you're breaking their ability to provision their data centers evenly. Oh wait, non-determinism makes it the cloud so it's better right? heh marketing at work.. –  Jimmy Hoffa Oct 23 '12 at 14:18
5  
@reinierpost You said it was different because you now don't care or know where the machine is, there were timesharing services with the same "we'll provision your time where we have space" mentality. –  Jimmy Hoffa Oct 23 '12 at 14:24

People have been renting time on remote computers for decades. In fact, "timesharing" was the original model for selling computing services back before computers were small enough and affordable enough that individual businesses could afford to own their own machines. The large information services of the 80's (Compuserve, AOL, etc.) were another way to rent computing power/space. Next, as the Internet developed, people needed ways to maintain a 24/7 presence on the network and hosting companies popped up.

Cloud computing is just another version of the same idea. It took some time for data centers to become so developed, standardized, and scalable that cloud services could sell general purpose computing on virtual machines as a commodity and manage it all in a way that was both affordable and profitable, but it's really just the latest generation of the same idea.

share|improve this answer

I would say it depended on virtualization technology on commodity hardware. Time sharing and mainframe/client access has always existed, but required expensive special hardware to securely portion resources. Client/server access has always existed on commodity hardware since the internet. However, it required a dedicated server and you couldn't just replicate that server with the push of a button. In order to maintain security, you had to maintain the security on that server yourself. Shared servers were susceptible to attack, unless they were locked down, and that limited options if you needed something custom.

With ubiquitous, cheap virtualization, you can create an entire server with full access, and that can be shared on a larger commodity platform. It can be copied, moved, replicated, and deleted on a whim. It required INTEL and AMD chips to support the virtual machines and time slicing that goes with servers, along with easy software to maintain multiple operating systems running at once.

share|improve this answer
4  
This is a solid answer that would be enhanced if you called out the changes within the x86 chips to support virtualization. Without their ability to support hypervisors, virtualization couldn't take off on the x86 line. –  GlenH7 Oct 23 '12 at 15:39
1  
+1 for mentioning virtualizations. Previously virtualizations were available, but they were very inefficient, it's only recently that hypervisor technology matured to the point where virtualization actually makes sense. Virtualization makes it easy for cloud providers to freely move servers around without fear of breaking the system. –  Lie Ryan Oct 23 '12 at 16:16
    
Efficient virtualization has been available since the 1960s, at least since the IBM S/360. –  Jörg W Mittag Oct 24 '12 at 22:20
1  
@JörgWMittag I for one am not sure I'd really consider the S/360 "commodity hardware", though. –  Michael Kjörling Oct 25 '12 at 8:05
    
@JörgWMittag: It's commodity in that it's not bespoke. That is, in the same way that a Gucci handbag or a Rolls-Royce is commodity! –  Tom Anderson Oct 25 '12 at 17:52

I work in "cloud computing" on a day-to-day basis. In addition to Chloe's excellent answer, I would say that the following factors have caused cloud computing to explode in popularity:

  1. Growth of Internet use, and hence, Internet-related services (am including mobile services here, which mostly use Internet functionality)
  2. Need for cheap, homogenous, easy-to-setup hardware for companies, startups, etc.
  3. API-based (programming) control to set up new servers and scale them up or down

I personally think #3 is most important: if you are managing 100s or 1000s of servers, would you rather do through a command line or a GUI ... or drive miles to get to your co-location services?

Of course, even if these had happened, it could have not been possible to do without the level of virtualization technology we have today, which directly helps point #3.

In short, I would say it was a perfect storm of factors that have enabled cloud computing to exist today in its current form, and to grow rapidly in popularity.

share|improve this answer

The defining characteristics of cloud computing are scalability and utility billing. Client/servers, thin clients, and ASPs mentioned by Jörg W Mittag are not cloud computing, unless they automatically scale up and down in real time with the customer being billed for the amount of resources (CPU, disk space, bandwidth) that they use. As Chloe correctly noted, this model only became possible with the advances in virtualization technology and high-speed Internet connections. These have been taking place within the last 5–10 years, hence this is when we started to hear about cloud computing.

share|improve this answer

What was the critical change that triggered massive adoption and massive marketing of cloud computing offers?

As other posters have mentioned, the one critical change was ubiquitous access to high speed internet.

The other critical change was the advancement of interactivity in websites. The modern-day richness in web user interfaces is what effectively allowed more and more traditionally desktop applications to be served via the cloud.

share|improve this answer
    
Ubiquitous access to high speed internet? In some first-world countries, in populated areas maybe. –  Alan B Oct 25 '12 at 11:42
    
Granted, my use of "ubiquitous" was superfluous, but let's not lose sight of the point I was trying to make regarding the emergence of rich web interfaces. –  Kosta Kontos Oct 25 '12 at 12:07
    
Very true, although we're still quite a way from browser-based versions of things like AutoCAD or Photoshop. –  Alan B Oct 25 '12 at 14:16
    
Good point. I find it interesting how these interface-intensive applications you speak of - and even games to an extent - are migrating to the cloud in a phased approach, using semi-cloud services such as Adobe Creative Cloud (for Adobe's software suite) and Steam (for gaming). –  Kosta Kontos Oct 25 '12 at 14:57

Apparently most people have a shaky grasp on 'Cloud Computing'...

The short version:

A system whereby computing power has been abstracted away from physical infrastructure so that it can easily be bought, sold, and leveraged as a commodity.

The Long Version:

'Cloud Computing' is simply the next step in abstracting away the maintenance and infrastructure requirements involved in developing and supporting software platforms.

Cloud can be broken down by the types of services it represents...

SaaS (Software as a Service):

Geared more toward users. This can be anything from a website, CRM webapp, to a REST API. The point is, the data/interface is made accessible but the hardware details have been sufficiently abstracted away enough that they no longer matter.

Basically, you take software and make it publicly accessible. Requirements such as installation, resource usage (ie memory/cpu), updates, etc are no longer relevant. You connect and it works.

PaaS (Platform as a Service):

Geared for use by developers. These include anything that has 'hosting' after it. Including webservers, email servers, dns management, etc.

Basically, the platform options are limited to whatever the is provided by the hosting company but they can be leveraged by developers to build on.

IaaS (Infrastructure as a Service):**

The newest addition to the party and where the 'Cloud' name probably originated. It's geared toward providing a full system architecture (ie complete OS) that can be built on without any need to maintain physical devices.

Basically, developers are given access to a virtual machine to develop and deploy. Since the virtual machine is decoupled from the hardware, it's much easier to migrate and clone that machine to whatever physical locations are necessary.

Where 5 years ago, providing region-specific hosting would probably involve a lot of manual work to clone the platform to servers around the world, IaaS platforms automate the process.

It provides a LOT more flexibility compared to PaaS because the developer gets full access control over the VM. On top of that, the number of physical machines actually hosting the image can be easily increased/decreased to match demand (ex such as during peak access).

It's no longer necessary for businesses to worry about downtime or scalability. IaaS costs more than PaaS hosting because it requires more resources but it's still significantly cheaper than hiring dedicated systems administrators and providing the bare metal in-house.


There are probably hundreds of different types of _aaS platforms that exist in the wild but it all boils down to one concept. Computer hardware has been abstracted away to the point where systems have become a commodity that can be traded at whim.

Need a thousand clones up and running in 10 minutes for the Super Bowl, not a problem. Need them scaled back to 10 just as quickly, also not a problem. Need clones to do heavy number crunching? Yep, those exist. What about massive amounts of storage space to host media? Just as easy.

IT infrastructure in general is not revenue generating so the only gains to be made will come from minimizing cost. One way to do that is reduce/eliminate/automate the infrastructure as much as possible. At the end of the day, all the developers want and need is a platform to build their services on. Companies like Google/Amazon/Rackspace all specialize in massive scalability so doesn't it make sense to tap into their infrastructure?

The disruptive change that 'Cloud Computing' represents is that it's no longer necessary for anybody but designers, developers, and creative/media types to own computers that include a full OS. The web, games, documents, social applications, business applications, everything is being made accessible on the web.

share|improve this answer
1  
The 'hype' comes mostly from the 'business types' who are salivating at the thought of ditching their internal IT infrastructure in favor of a hosted solution that is both more robust and easier to quantify. For them, IT in its current state is a big black box that costs too much and unnecessarily inflates the 'fixed asset' line on their balance sheets. –  Evan Plaice Nov 21 '12 at 1:54

Cloud computing is really time-sharing computing/shared hosting (very old models!) on modern hardware with virtualization to make things appear nicer (but again, that's pretty old; IBM has been doing virtualization on their hardware for decades). It's also what we do with that technology when we have the beginnings of ubiquitous networking. And it is the business model that goes with it; the ability to hire computing power or storage for very short amounts of time at minimal cost[*] greatly changes how you go about planning and using those resources.

So… the major technological change was network ubiquity, but that's not such a big thing really; the edges of that have been around for the whole of my professional career. No, it's the business model innovation that was the real difference. A sane way of making it work financially for all concerned without complex multi-year account management was the missing piece. I'm not quite sure who invented it first either: the earliest I know of is Amazon AWS (who have been thoroughly copied) but I really don't know if they were borrowing off of others.

So don't knock the business-heads who are raving about this like it's the greatest thing since sliced bread: I suspect they're actually right and most of us techies are just too focused on the implementation aspects to see it (and those have huge precedents in this case). Innovations that enable new major classes of use are important, even if they're not in areas that we know a vast amount about.

[* Not just monetary cost either, but also opportunity costs too. Being able to quicky respond to incidents is very valuable.]

share|improve this answer
    
Before the Cloud was the Grid, and before that there was time sharing and bureau computing and… There's a huge history, but this is the first time it's really started to shake the world. –  Donal Fellows Nov 21 '12 at 14:28
    
To be convincing, you should show us a comparison between the business models of companies offering time sharing computing as a service in the 70's and those offering cloud computing as a service now; as it is pretty similar from were I stand as are their accounting formula. There was just a window in which the offer wasn't competitive. –  AProgrammer Nov 21 '12 at 14:53

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.