Thoughts on British ICT, energy & environment, cloud computing and security from Memset's MD
This post has now been superseded by my updated managed hosting providers like my company, Memset, do but taken to a shorter timescale. We can rapidly provision virtual severs, dedicated servers or server clusters, and rent them to customers on flexible terms (eg. monthly contracts). Utility computing is the extension of that concept but instead of referring to servers it is the provision of chunks of general computing resources (CPU, RAM, disk etc) in real-time response to demand, and on short time scales such as hours, minutes or even seconds (and billed for as such).
In other words, utility computing is the provision of computing resources as a utility, in the same way that the familiar utilities (electricity, water, gas) are provided; on a pay-as-you-use basis. Sometimes utility computing it is called “on-demand computing” – the terms are synonymous. In a utility computing model the following resources would be available “on tap”:
Grid -> Utility -> Cloud
So, how does utility computing relate to grid & cloud computing? Those terms are often used in the same breath as utility computing, or the three are confused with each other. While interconnected, though, they are different concepts:
Is Cloud Computing already here?
Amazon’s Elastic Compute Cloud is actually rather mis-named, and is really just a very large utility computing facility that spans multiple data centre locations, all of which are within one administrative domain (ie. Amazon’s massive grid).
Google’s App Engine is also not “cloud computing”, but instead a somewhat constrained sort of utility computing (you can only run applications specifically coded for the app engine). Some might call it “IT as a service”, but that term is rather too vague also.
Arguably there is only really one “cloud”, which is the mass-market for utility computing resource. To state “I am going to host this in the Cloud” would mean that you are going to run your app on one (or many) of the available utility computing providers.
Globe-trotting applications (aka. ‘Follow the moon’)
The ultimate vision of cloud computing is where you do not actually know where your application is being run at any one time. You would specify your SLA (eg. uptime, latency to a certain location) requirements and certain financial limits, and then give it with those specifications to some sort of broker. The application would then be able roam between administrative domains (eg. a data centre, a collection of PCs like Seti@Home, a super computer, your neighbours’ home appliances, etc), automatically seeking out the most cost effective resources that fit within the SLA requirements.
We are far from achieving true “cloud computing” at the moment, but we do have a number of utility computing providers coming online. As business slowly learns to let go of their attachment to tin and the concept that “this application run on that box” or even “this application runs in that data centre” then we shall see a massive commoditisation of the marketplace. This in turn will most likely result in the centralisation of compute resource into a small number of very large data centres in geographically strategic locations, and will enable much “greener” computing.
Cloud is not the most efficient form of computing purely because of optimal usage of IT resources, either. In the ultimate vision of cloud, one can envisage applications roaming the planet East-West, following the night time to take advantage of cheaper electricity prices (there is a surplus of power generation at night, and it is inefficient to transport electricity long distances at present), and lower temperatures (meaning less power for cooling).
Update: But isn’t Cloud also about IT services / SaaS?
Here I am merely trying to pin down one aspect of the poorly defined mess that is “Cloud”. In this article I am specifically talking about compute & storage resources (hence ‘Cloud Computing’) and am not attempting to define our contain the other areas to which many apply the same term.
I believe that when most people talk about “Cloud” they are referring to the phenomenon of increasing centralisation and commoditisation of ICT services – “everything over the wire”.
We need more terms; what I describe here is the mass-market for utility compute resources – the “power grid” of computing, if you will. What you are talking about could be called “Cloud Services” perhaps – services run on a compute utility and themselves delivered as a utility in a standardised manner. The problem I have with that is that while compute resources are interoperable, services are generally not (my compute and storage is directly comparable/interchangeable with Amazon’s, but Kashflow.co.uk is not so easily interchangeable with Xero.com).
Page optimized by WP Minify WordPress Plugin
"The ultimate vision of cloud computing is where you do not actually know where your application is being run at any one time. "
This is actually makes alot of sense to me.
David (Sugar Web Design (http://www.sugarwebdev.co.uk))
A very nice and concise definition. May I suggest that "application" be replaced by "service"? Yes, I realize that "service" is about as bad as "cloud" when it boils down to it, but then, so is "application" in the meantime. I find the term "application" insufficiently granular to express what I can do in a cloud.
One of the nice things one can do with the AWS services (I will graciously ignore the cost for now), is to have "services" talk to each other using things like EC2, SQS, S3 and so forth. Once can, of course, add other software such as an AMQP implementation like CloudMQ (which runs on AWS!) for high-speed queuing, and other Open Source products.
Last, but no least, I will take a closer look at the services your company offers as your blog intrigues me!
Cheers, John
Perhaps what I should do is define a cloud-based application more clearly; software and/or data that delivers a service over the Web.
What I am wondering is if achieving the "true vision" of cloud computing will ever be commercially possible and if it would have any advantages for anyone. What problem are we trying to solve?
I run a software development business that relies on global availability of our data and international collaboration but I think reliable global access to data is different to global distribution of data. I may need to access our data in USA, Europe and Asia but actually I want to know where the data is stored and backed up.
Having all the world's data in a small number of mega data-centres seems to be a very "big government" approach. I am also not sure the environmental argument stacks up either.
For business users it is hard to see how effective and meaningful SLAs could ever be constructed if your application and data could be anywhere. Who is responsible? What about data protection?
Twitter: @nickevansuk
@Nick You are right that some people need to know where their apps are, and that is where what companies like mine do (as a utility computing provider) come in. However, there are also significant security advantages to not-quite knowing where your apps are. For instance; if you specify in your SLA requirements that it must be within England and in a 'List X' data centre (or even one of a group managed by one company you trust), and perhaps that it must not stay in one location for more than a few days, then suddenly you have awesome physical security.
In effect, you have hidden your application/database as a tree in an ultra-secure forest. Even if, somehow, the Bad People gained access to one or more of the List X facilities a) they would not know which facility to look in and b) there is no way to tell which servers to steal.
As for your assertion that a mega-data centre is more environmental, just look at how Google does it. They have mega-data centres divided up into units (containers), and that is absolutely the most efficient way to do it at present. There are large economies of scale to be had by a centralised approach.
However, in future we will likely see another model emerge where the Cloud extends onto the many low-power devices (such as those powered by Atom and ARM processors) that are becoming ubiquitous in our world. To take advantage of that we need a very different approach to distributed computing though.
Your sentence:
"Grid computing is a technical approach spanning an application across multiple computers within one administrative domain (one provider, not necessarily one location)"
Is not true.
Grid computing is intended for multiple administrative domain and not at all for single domain. That is just the opposit.
Please correct it.
I am a trained engineer an have not got a clue what you lot are talking about, however, we are now selling wireless meter reading equipment so companies can have more accurate readings on utility bills.
Are there any sites we can attach our software to, so making them open to the client direct?
Martin
Thanks for the article.
In the future, I expect ever-more services to be delivered over the wire with less and less compute resource at the client-end (like OnLive).
Perhaps the best example of 'true' cloud computing in the gaming world is Sony's PS3 where the 'host' for some games is the distributed collection of games consoles themselves.
The definitions you have set for the various concepts Grid/Utility/Cloud while appear reasonable do not quite explain the difference in intent of each.
I agree in the main with your definitions, however as there is no standard defined it is dangerous to create definitions with out the understanding of how you are abstracting the problem.
I am currently part of an open source pilot:
http://duraspace.org/duracloud.html
The way that we abstract the various layers and define the evolution is thus:
Grid Computing:
Provisioning of hardware in a virtualised environment to provide the building blocks required to host various applications.
Utility Computing:
The ability to dynamically supply or allocate (and bill) elements of a Grid environment on demand.
Cloud Computing:
The application of utility computing as a service (SLA’s and QoS), independent of vendor. Interoperability is a key consideration and a major factor.
The Duracloud project will allow interested organisations to host a cloud environment that will host various distributed applications providing compute and storage services.
The open source environment that can be used currently is:
http://www.eucalyptus.com/
also see:
http://www.eucalyptus.com/enterprise/info/cloud-myths-dispelled/
Best regards.
I believe that when most people talk about "Cloud" they are referring to the phenomenon of increasing centralisation and commoditisation of ICT services - "everything over the wire".
We need more terms; what I describe here is the mass-market for utility compute resources - the "power grid" of computing, if you will. What you are talking about could be called "Cloud Services" perhaps - services run no a compute utility and themselves delivered as a utility in a standardised manner. The problem I have with that is that while compute resources are interoperable, services are generally not (my compute and storage is directly comparable/interchangeable with Amazon's, but Kashflow.co.uk is not so easily interchangeable with Xero.com).
As for Eucalyptus, we are thinking of using that for our own EC2-like service. Personally I think Amazon have got it a bit wrong though, and we are going to roll out something a little different most likely as well.
DuraCloud looks interesting - probably ideal for folks that are not too worried about security / locality.
I heard different computing models are now emerging technology like grid,utility,cloud,parallel, distributed,soft,pervasive,computing 2008,cluster computing etc.. Can you give me the clear picturization of these models & how these models are inter-linked?