Search
Lori MacVittie - Two Different Socks
You are here: DevCentral > Weblogs

posted on Thursday, April 01, 2010 3:25 AM

If we do it right, cloud interoperability could be as easy as a URL rewrite – a la API refactoring. Not kidding. Question is, can we do it right?

Watching the emergence of a new technology is both fascinating and frustrating. In the case of cloud computing it’s fascinating to see the “process” of standardization and positioning taking place but it’s frustrating to see the same hurdles whittling away at the potential for true interoperability because of the silos that continue to exist not only in the organization but amongst the broader industry that provides infrastructure and services to those organizations.

On the one hand we’ve got storage and networking vendors trying to develop APIs and models. On the other hand we’ve got developers and application-oriented vendors trying to develop APIs and models. And neither of them has the expertise of the other that’s required to take on the birds’ eye view of cloud computing and interoperability that’s necessary – absolutely necessary – to achieve what could be the most elegant interoperability standards to date. We’ve got silos, people, and we need to get out of them and meet in the barn sooner rather than later if we want true interoperability to succeed. It is possible, but it won’t happen while we’re locked away in our silos (ivory towers) ignoring the “other half” of the equation.


A UNIFIED MODEL

imageIf we could agree on a unified model to codify the meta-data necessary across the entire spectrum of application and network infrastructure services and then further agreed to standardize on a REST-based API we could, in fact, arrive at a point where the issue of cloud interoperability is resolved with little more than a URL rewrite.

If the model is consistent across cloud computing environments – public, private, hybrid, local, external, internal - much in the same way HTML is consistent across web applications, then the differentiation across providers becomes the services and processes that orchestrate those services into an efficient, fast, secure application delivery system. If the model is consistent then an application can be described in a consistent, unified way and the implementation of the policies required to support the application and its infrastructure needs (security, acceleration, QoS, optimization, data integration, backup, storage) remains the demesne of the cloud computing provider.

Much in the same way custom HTTP headers can be ignored or interpreted based on support by any given network or application network component to provide specialized services, the cloud computing provider is able to interpret the meta-data that describes the full application stack and implement policies as needed based on their unique infrastructure.

For example, let’s say part of the infrastructure model (based on Hoff’s Info/Infra/Meta-structure model) contained a description of the application’s need for persistence in load balancing, and further provided the “key” upon which that persistence is based.

image

Let us pretend for a moment that we actually have this model, and the meta-data is provided in a well-understood attribute-value pair mechanism (JSON, XML, INI style). The actual implementation language is not nearly as important as the definition in a standard AVP-style so that the cloud provider and ultimately individual components can interpret it effectively to create and/or apply the proper policies.

The meta-data can be provided to the cloud provider via an API. It matters not that “Cloud A” requires the submission of application meta-data via the URL:

http://controlplane.clouda.com/management/metadata/configuration
and that “Cloud B” requires the submission via the URL:
 
http://management.cloudb.com/configuration/update/application
as long as they both accept the same meta-data model. I can easily enough change the URL either manually or dynamically to address a different (or perhaps both) cloud provider.
 
The cloud provider, upon receiving the data, is then tasked with distributing it throughout the infrastructure in its own, unique way. At this point the cloud truly becomes a “black box”, at least to the consumer, and how the meta-data is disseminated across the infrastructure is entirely up to the provider and its especial processes for provisioning and management of its infrastructure. What’s important to the consumer is that they were (a) able to specify infrastructure services in a common, easy to understand way and (b) they don’t need to worry about the implementation details because the “infrastructure” is someone else’s problem, i.e. it is up to the provider.

EXTENDING INTO THE INFRASTRUCTURE

This dream extends into the infrastructure, lest cloud providers feel as though they’re bearing the brunt of the interoperability burden. If the infrastructure and services utilize a common model, it too, can be managed and configured and orchestrated in a similar fashion, with only the end-point changing as required. Rather than develop a lot of infrastructure solutions specific integration code – which any enterprise software developer can tell you is painful and results in the “L” word (lock-in) – we can then leverage the ubiquitous URL as an integration point. That integration point is simple to change and can even be used simultaneously across multiple infrastructure solutions to find the “best fit” solution for a given application.
 
Consider the possibility of configuring two Infrastructure 2.0 enabled application delivery components using nothing more than a different URL. For example:
 

It really could be that simple, if only we could unify the model used to describe the services.


A COMMON MODEL ENABLES the EVALUATION PROCESS, TOO

Using a common model in this way has broader impact on the entire “cloud  acquisition” process. It makes it possible to use the same metadata to submit a query to the cloud provider to determine whether they can, in fact, support the infrastructure and application services required. Rather than submitting the model to a configuration or deployment service URL, the consumer submits the metadata to a query URL:
http://controlplane.clouda.com/management/metadata/inquiry

The cloud provider can parse, interpret, and determine whether or not it can support the requirements as provided by the consumer in the metadata, and the consumer can determine whether the provided response – which should ultimately contain pricing and other pertinent information – offers the set of services best suited to scale and deliver their application. This is very much the focus of James’ Urquhart’s pCard proposal, the definition of the metadata necessary to describe and subsequently deploy and support a complete application. Similarly, we could use that model of inquiry inside the cloud provider infrastructure, to determine which of several infrastructure components is the best fit in terms of capabilities, performance, and price to the requirements provided by the consumer in their “pCard” describing their application needs.

I have a dream, and I recognize that it’s very much a dream that is unlikely to be realized because of the chasm that continues to exist between the network and the application, not only in the organization between teams responsible for each, but in the broader industry. It’s a case of niche foci, of storage vendors and constituents being focused on storage and interoperability between storage solutions; of network vendors and constituents being focused on network and interoperability between network components. Cloud providers, too, are separated by their interests and needs, with a focus on management APIs of the services they expose externally.

There exists not a concerted effort to bring them all together and force them to view the cloud and APIs and interoperability through a broader, more holistic set of lenses.

It is possible that we can piecemeal together a single metadata model from the disparate models that will appear from each niche industry. But perusing the specifications beginning to trickle out of such efforts it is clear that the focus of these efforts is an API, not a model. It’s all about functions, and operations, with not nearly enough focus on the model and whether or not that model will support both existing and future infrastructure definitions in the particular space.

We need to focus on the models, not the APIs, because it is the models that will provide the interoperability and portability desired both across and within cloud computing environments.


Related blogs & articles:

Follow me on Twitter    View Lori's profile on SlideShare  friendfeed icon_facebook

AddThis Feed Button Bookmark and Share



Feedback

4/1/2010 6:18 AM
Gravatar What is missing from something like RDF that keeps it from being used in the way you describe?

(As a description language, assuming that the description itself would be machine created, thereby skirting for the moment the "rdf is hopelessly complex and the xml serialization syntax of rdf triples sucks" arguments.)
Ian
4/1/2010 6:27 AM
Gravatar Hey Ian,

It's not really the format that's the problem. RDF would work, so would JSON or XML or OVF. It's defining a common model that is extensible that can be used to describe the infra/info/meta structure necessary to actually transparently exchange infrastructure policies.

As EAI has proven, transformation of data formats - while not always enjoyable/most efficient - is a fairly well-understood process. But having the model defined in the first place, across vendors and providers with varying interests/agendas, THAT is not a trivial thing. ;-)

Lori
macvittie
4/1/2010 7:11 AM
Gravatar I had a similar dream but mine was with API's themselves. It would be so nice to have one API where you could send your request in and then it would remotely connect with the other API and send you back a well formed document. All you other programmers our there know exactly what I'm talking about.

I created just that, and released it with free accounts. It's named The Easy API - http://theeasyapi.com - and it does just that. You send a POST with a parameter named request and it's an XML string. Then The Easy API will connect with the remote API and standardize the output and sends back well formed XML.

I can relate greatly with this article as I too have thought the same thing with cloud computing. The future is very bright in the terms of API's and interconnecting a vast array of them together. I focused my project on application developers who want to access other services with a common interface.

Personally the future is exciting as systems and companies grow.
Chad R. Smith
4/1/2010 8:38 AM
Gravatar @lori - so the real issue with this mess you are describing is that to write against a given API is work and if there are more than a couple APIs no one wants to support them all?

What about a system where the API itself is a meta-application interface, to paraphrase Ruby's ActiveRecord:

class Service < ActiveCloud::Base
end

where ActiveCloud dynamically examines any schema you give it in run time and acts on it, so if I'm a cloud operator and publish a schema (perhapse as a WSDL) you can take it and map it to something like this:

service.name="MyWebApp"
service.transport="tcp"
service.transfer="http"
service.transport.security="tls"
service.delivery.persistence="JSESSIONID"

Just as easily as it could map to something this:

service.title="myco's awesome cloud application"
service.owner="bob jones"
service.contact="bob.jones@myco.com"

Because you aren't limiting it with a static data model; it shifts the discussion from one about how to start to one about how to finish. In my experience, practical people tend to stop arguing how to do something when there is something that already works staring them in the face.

Just a thinking out loud at this point, but my meaning is that perhaps it is simpler to just agree on a way of passing information (or release a way to do the passing that just works) than it is to dictate what information is being passed, and leave the actual content intentionally ambiguous, given that we have lots of ways of dealing with "structured ambiguity".

metaAPIs and the programming libraries to support them would be a lot more lightweight and require less consensus to put into practice than a specific one, yet provide more structure than a data model, without locking you into a form that can't adapt to a rapidly evolving landscape (and there are a lot of information passing mechanisms already in play, so you might not have to re-invent the world).

And it becomes one of those "if you built it..." things - ActiveRecord and XMLHttpRequest didn't appear in a vacuum out of nothing, but having working versions that people could use did put an end to a lot of arguments about how to access databases dynamically and how to incrementally display web content because they were already doing a pretty good job of it.



Ian

Let Me Know What You Think


Please use the form below if you have any comments, questions, or suggestions.

Title:
 
Name:
 
Email: (so we can show your gravatar)
Website:
Comment: Allowed tags: blockquote, a, strong, em, p, u, strike, super, sub, code
 
Please add 8 and 1 and type the answer here:

Blog Stats

Posts:980
Comments:1685
Stories:0
Trackbacks:583
  

Image Galleries

  

Application Delivery

  

Cloud Computing

  

Random

  

Security

  

Chat Catcher

82,243 Members in 102 Countries and Growing!

Join DevCentral Today!

About DevCentral

DevCentral has been a successful, thriving community for many years. We have always strived to bring you the best technical documentation, discussion forums, blogs, media and much more that we can.

So dive in, get familiar with DevCentral. We hope you like it, we hope it makes your job easier, and lets you get that much more power out of the community. To learn more, make sure to check out the Getting Started section. And if you have any problems, or think something could be easier to use, drop us a line to let us know.

Got It !

We've received your comment and transmitted it directly to DevCentral HQ.

Thanks for taking time to let us know what's on your mind. At DevCentral | Community Matters!

Get In Touch With Us

Have questions, suggestions or just want to get something off your chest?

Use our handy form below to Direct Connect with DevCentral Mission Control.

Send Us Feedback       or