Tuesday, June 17, 2008

Re: Cloud Definitions

IMHO, you're clouding up the terms ;-). IMO, grid generally refers to
a flavor of technologies which usually has some kind of work
dispatcher that schedules work do be performed on various nodes.
Globus, platform lsf, datasynapse to name a few all share this common
pattern.

Over the years there was a new term spoken about called "enterprise
grid" which tried to stretch the term from the classic grid tools to
encompass broader dynamic infrastructures including rapid provisioning
etc. This never really seemed to stick, as a term - and the
technologies have been challenging.

When server virtualization made it to x86, many of these rapid
provisioning environments started to leverage the technology to
simplify and improve overall system reliability, predictability, and
manageability. In fact, I recall this being used by IBM for its
partners called the virtual loaner program back in 2003. The system
allowed partners to "borrow" a slice of a system-p server to test
their software. This was based on a hypervisor called p-hype.

Many adopters of this kind of rapid provisioning built self service
interfaces to allow end users to allocate and release resources on
demand. When Amazon offered this kind of service publicly, they
called it cloud computing.

The term cloud has been used to refer to web based systems and
services for some time. So cloud computing seems appropriate to
encompass some kind of virtual computing platform in the sky. To me
this means that the service running in the cloud must offer a means
for programmability - ok this gets vague. Virtual x86 machines are
certainly user programmable as is AppEx, Bungee, AppEngine, etc. What
about DabbleDB, QuickBase or Zoho? I think so. In fact, I think ning
or even g.ho.st are "programmable" computing platforms delivered as a
service running in the _cloud_.

In the end, this is just a word ;-). I think the more interesting
thing is to examine the services that are exposed/delivered from the
_cloud_. Infrastructure as a Service (IaaS) should include things
like storage, network and compute resources. Platform as a Service
(PaaS) would include slightly higher level services like bigtable,
simpledb, appex, or even SQS.

Sure the lines get blurred when we label them - but the key is the
service offering. IMHO, compute services that are highly reusable
should be standardized - e.g. VMs, Storage, SQS, bigtable, layer 2
partitioning (Vlans), router and firewall services, load balancing
services, caching services, storage volume services, SAN connectivity
services etc. In a sense, everything you find in a datacenter should
be virtualized and exposed programmatically. All this stuff is
already virtual and programmable - but all proprietary. Back in the
day, the OGSA might have created standardized interfaces for all these
data center resources. In fact there are products that expose this
kind of infrastructure as wsdm resources. Unfortunately WS_dum_ ;-)
got hosed and eclipsed by ws-man - oh well ;-).

So let's try again with restful http based, json, etc.

I'd like to see standardization work its way up the infrastructure and
application stack.

thoughts?

No comments: