<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>William Vambenepe&#039;s blog &#187; Specs</title>
	<atom:link href="http://stage.vambenepe.com/archives/category/specs/feed" rel="self" type="application/rss+xml" />
	<link>http://stage.vambenepe.com</link>
	<description>IT management in a changing IT world</description>
	<lastBuildDate>Mon, 26 Jul 2010 06:04:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Introducing the Oracle Cloud API</title>
		<link>http://stage.vambenepe.com/archives/1538</link>
		<comments>http://stage.vambenepe.com/archives/1538#comments</comments>
		<pubDate>Mon, 19 Jul 2010 06:12:02 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Application management]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DMTF]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Portability]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtual appliance]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1538</guid>
		<description><![CDATA[Oracle recently published a Cloud management API on OTN and also submitted a subset of the API to the new DMTF Cloud Management working group. The OTN specification, titled &#8220;Oracle Cloud Resource Model API&#8221;, is available here. In typical DMTF fashion, the DMTF-submitted specification is not publicly available (if you have a DMTF account and [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/936' rel='bookmark' title='Permanent Link: VMWare publishes (and submits) vCloud API'>VMWare publishes (and submits) vCloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/1108' rel='bookmark' title='Permanent Link: Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF'>Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1295' rel='bookmark' title='Permanent Link: HP has submitted a specification to the DMTF Cloud incubator'>HP has submitted a specification to the DMTF Cloud incubator</a></li>
<li><a href='http://stage.vambenepe.com/archives/1504' rel='bookmark' title='Permanent Link: Dear Cloud API, your fault line is showing'>Dear Cloud API, your fault line is showing</a></li>
<li><a href='http://stage.vambenepe.com/archives/220' rel='bookmark' title='Permanent Link: Moving towards utility/cloud computing standards?'>Moving towards utility/cloud computing standards?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Oracle recently published a Cloud management API on <a href="http://www.oracle.com/technetwork/index.html">OTN</a> and also submitted a subset of the API to the new DMTF Cloud Management working group. The OTN specification, titled <em>&#8220;Oracle Cloud Resource Model API&#8221;</em>, is available <a href="http://www.oracle.com/technology/tech/cloud/pdf/oraclecloudresourcemodelapi.pdf">here</a>. In typical DMTF fashion, the DMTF-submitted specification is not publicly available (if you have a DMTF account and are a member of the right group you can find it <a href="http://www.dmtf.org/apps/org/workgroup/technical/download.php/54501/OracleCloudElementalResourceModelAPI.pdf">here</a>). It is titled the <em>&#8220;Oracle Cloud Elemental Resource Model&#8221;</em> and is essentially the same as the OTN version, minus sections 9.2, 9.4, 9.6, 9.8, 9.9 and 9.10 (I&#8217;ll explain below why these sections have been removed from the DMTF submission). Here is also a <a href="http://stage.vambenepe.com/wp-content/uploads/CloudResourceModels_CMF2F.pdf">slideset</a> that was recently used to present the submitted specification at a DMTF meeting.</p>
<p>So why two documents? Because they serve different purposes. The Elemental Resource Model, submitted to DMTF, represents the technical foundation for the IaaS layer. It&#8217;s not all of IaaS, just its core. You can think of its scope as that of the base EC2 service (boot a VM from an image, attach a volume, connect to a network). It&#8217;s the part that appears in all the various IaaS APIs out there, and that looks very similar, in its model, across all of them. It&#8217;s the part that&#8217;s ripe for a simple standard, hopefully free of much of the drama of a more open-ended and speculative effort. A standard that can come out quickly and provide interoperability right out of the gate (for the simple use cases it supports), not after years of plugfests and profiles. This is the narrow scope I described in an <a href="http://stage.vambenepe.com/archives/1344">earlier rant about Cloud standards</a>:</p>
<p style="padding-left: 30px;"><em>I understand the pain of customers today who just want to have a bit more flexibility and portability within the limited scope of the VM/Volume/IP offering. If we really want to do a standard today, fine. Let’s do a very small and pragmatic standard that addresses this. Just a subset of the EC2 API. Don’t attempt to standardize the virtual disk format. Don’t worry about application-level features inside the VM. Don’t sweat the REST or SOA purity aspects of the interface too much either. Don’t stress about scalability of the management API and batching of actions. Just make it simple and provide a reference implementation. A few HTTP messages to provision, attach, update and delete VMs, volumes and IPs. That would be fine. Anything else (and more is indeed needed) would be vendor extensions for now.</em></p>
<p>Of course IaaS goes beyond the scope of the Elemental Resource Model. We&#8217;ll need load balancing. We&#8217;ll need tunneling to the private datacenter. We&#8217;ll need low-latency sub-networks. We&#8217;ll need the ability to map multi-tier applications to different security zones. Etc. Some Cloud platforms support some of these (e.g. Amazon has an answer to all but the last one), but there is a lot more divergence (both in the &#8220;what&#8221; and the &#8220;how&#8221;) between the various Cloud APIs on this. That part of IaaS is not ready for standardization.</p>
<p>Then there are the extensions that attempt to make the IaaS APIs more application-aware. These too exist in some Cloud APIs (e.g. vCloud vApp) but not others. They haven&#8217;t naturally converged between implementations. They haven&#8217;t seen nearly as much usage in the industry as the base IaaS features. It would be a mistake to overreach in the initial phase of IaaS standardization and try to tackle these questions. It would not just delay the availability of a standard for the base IaaS use cases, it would put its emergence and adoption in jeopardy.</p>
<p>This is why Oracle withheld these application-aware aspects from the DMTF submission, though we are sharing them in the specification published on OTN. We want to expose them and get feedback. We&#8217;re open to collaborating on them, maybe even in the scope of a standard group if that&#8217;s the best way to ensure an open IP framework for the work. But it shouldn&#8217;t make the upcoming DMTF IaaS specification more complex and speculative than it needs to be, so we are keeping them as separate extensions. Not to mention that DMTF as an organization has a lot more infrastructure expertise than middleware and application expertise.</p>
<p>Again, the &#8220;Elemental Resource Model&#8221; specification submitted to DMTF is the same as the &#8220;Oracle Cloud Resource Model API&#8221; on OTN except that it has a different license (a license grant to DMTF instead of the usual OTN license) and is missing some resources in the list of resource types (section 9).</p>
<p>Both specifications share the exact same protocol aspects. It&#8217;s pretty cleanly RESTful and uses a JSON serialization. The credit for the nice RESTful protocol goes to the folks who created the original <a href="http://kenai.com/projects/suncloudapis/pages/Home">Sun Cloud API</a> as this is pretty much what the Oracle Cloud API adopted in its entirety. <a href="https://twitter.com/timbray">Tim Bray</a> described the <a href="http://www.tbray.org/ongoing/When/200x/2009/03/16/Sun-Cloud">genesis and design philosophy of the Sun Cloud API</a> last year. He also described his role and explained that &#8220;most of the heavy lifting was done by Craig McClanahan with guidance from <a href="https://twitter.com/lewtucker">Lew Tucker</a>&#8220;. It&#8217;s a shame that the Oracle specification fails to credit the Sun team and I kick myself for not noticing this in my reviews. This heritage was noted from the get go in the <a href="http://stage.vambenepe.com/wp-content/uploads/CloudResourceModels_CMF2F.pdf">slides</a> and is, in my mind, a selling point for the specification. When I <a href="http://stage.vambenepe.com/archives/863">reviewed the main Cloud APIs</a> available last summer (the first part in a <a href="http://stage.vambenepe.com/archives/1161">&#8220;REST in practice for IT and Cloud management&#8221;</a> series), I liked Sun&#8217;s protocol design the best.</p>
<p>The resource model, while still based on the Sun Cloud API, has seen many more changes. That&#8217;s where our tireless editor, <a href="http://twitter.com/yujack">Jack Yu</a>, with help from <a href="http://twitter.com/macsun">Mark Carlson</a>, has spent most of the countless hours he devoted to the specification. I won&#8217;t do a point to point comparison of the Sun model and the Oracle model, but in general most of the changes and additions are motivated by use cases that are more heavily tilted towards private clouds and compatibility with existing application infrastructure. For example, the semantics of a <em>Zone</em> have been relaxed to allow a private Cloud administrator to choose how to partition the Cloud (by location is an obvious option, but it could also by security zone or by organizational ownership, as heretic as this may sound to Cloud purists).</p>
<p>The most important differences between the DMTF and OTN versions relate to the support for assemblies, which are groups of VMs that jointly participate in the delivery of a composite application. This goes hand-in-hand with the recently-released <a href="http://www.oracle.com/us/products/middleware/application-server/virtual-assembly-builder-067878.html">Oracle Virtual Assembly Builder</a>, a framework for creating, packing, deploying and configuring multi-tier applications. To support this approach, the Cloud Resource Model (but not the Elemental Model, as explained above) adds resource types such as <em>AssemblyTemplate</em>, <em>AssemblyInstance</em> and <em>ScalabilityGroup</em>.</p>
<p>So what now? The DMTF working group has received a large number of IaaS APIs as submissions (though not <a href="http://docs.amazonwebservices.com/AWSEC2/2010-06-15/APIReference/">the one that matters most</a> or <a href="http://openstack.org/">the one that may well soon matter a lot too</a>). If all goes well it will succeed in delivering a simple and useful standard for the base IaaS use cases, and we&#8217;ll be down to a somewhat manageable triplet (EC2, RackSpace/OpenStack and DMTF) of IaaS specifications. If not (either because the DMTF group tries to bite too much or because it succumbs to infighting) then DMTF will be out of the game entirely and it will be between EC2, OpenStack and a bunch of private specifications. It will be the reign of toolkits/library/brokers and hell on earth for all those who think that such a bridging approach is as good as a standard. And for this reason it will have to coalesce at some point.</p>
<p>As far as the more application-centric approach to hypervisor-based Cloud, well, the interesting things are really just starting. Let&#8217;s experiment. And let&#8217;s talk.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/936' rel='bookmark' title='Permanent Link: VMWare publishes (and submits) vCloud API'>VMWare publishes (and submits) vCloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/1108' rel='bookmark' title='Permanent Link: Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF'>Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1295' rel='bookmark' title='Permanent Link: HP has submitted a specification to the DMTF Cloud incubator'>HP has submitted a specification to the DMTF Cloud incubator</a></li>
<li><a href='http://stage.vambenepe.com/archives/1504' rel='bookmark' title='Permanent Link: Dear Cloud API, your fault line is showing'>Dear Cloud API, your fault line is showing</a></li>
<li><a href='http://stage.vambenepe.com/archives/220' rel='bookmark' title='Permanent Link: Moving towards utility/cloud computing standards?'>Moving towards utility/cloud computing standards?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1538/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dear Cloud API, your fault line is showing</title>
		<link>http://stage.vambenepe.com/archives/1504</link>
		<comments>http://stage.vambenepe.com/archives/1504#comments</comments>
		<pubDate>Wed, 26 May 2010 04:10:08 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1504</guid>
		<description><![CDATA[Most APIs are like hospital gowns. They seem to provide good coverage, until you turn around.
I am talking about the dreadful state of fault reporting in remote APIs, from Twitter to Cloud interfaces. They are badly described in the interface documentation and the implementations often don&#8217;t even conform to what little is documented.
If, when reading [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/936' rel='bookmark' title='Permanent Link: VMWare publishes (and submits) vCloud API'>VMWare publishes (and submits) vCloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/1284' rel='bookmark' title='Permanent Link: Waiting for events (in Cloud APIs)'>Waiting for events (in Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1108' rel='bookmark' title='Permanent Link: Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF'>Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Most APIs are like hospital gowns. They seem to provide good coverage, until you turn around.</p>
<p>I am talking about the dreadful state of fault reporting in remote APIs, from Twitter to Cloud interfaces. They are badly described in the interface documentation and the implementations often don&#8217;t even conform to what little is documented.</p>
<p>If, when reading a specification, you get the impression that the &#8220;normal&#8221; part of the specification is the result of hours of whiteboard debate but that the section that describes the faults is a stream-of-consciousness late-night dump that no-one reviewed, well&#8230; you&#8217;re most likely right. And this is not only the case for standard-by-committee kind of specifications. Even when the specification is written to match the behavior of an existing implementation, error handling is often incorrectly and incompletely described. In part because developers may not even know what their application returns in all error conditions.</p>
<p>After learning the lessons of SOAP-RPC, programmers are now more willing to acknowledge and understand the on-the-wire messages received and produced. But when it comes to faults, there is still a tendency to throw their hands in the air, write to the application log and then let the stack do whatever it does when an unhandled exception occurs, on-the-wire compliance be damned. If that means sending an HTML error message in response to a request for a JSON payload, so be it. After all, it&#8217;s just a fault.</p>
<p>But even if fault messages may only represent 0.001% of the messages your application sends, they still represent 85% of those that the client-side developers will look at.</p>
<p>Client developers can&#8217;t even reverse-engineer the fault behavior by hitting a reference implementation (whether official or de-facto) the way they do with regular messages. That&#8217;s because while you can generate response messages for any successful request, you don&#8217;t know what error conditions to simulate. You can&#8217;t tell your Cloud provider &#8220;please bring down your user account database for five minutes so I can see what faults you really send me when that happens&#8221;. Also, when testing against a live application you may get a different fault behavior depending on the time of day. A late-night coder (or a daytime coder in another time zone) might never see the various faults emitted when the application (like Twitter) is over capacity. And yet these will be quite common at peak time (when the coder is busy with his day job&#8230; or sleeping).</p>
<p>All these reasons make it even more important to carefully (and accurately) document fault behavior.</p>
<p>The move to REST makes matters even worse, in part because it removes SOAP faults. There&#8217;s nothing magical about SOAP faults, but at least they force you to think about providing an information payload inside your fault message. Many REST APIs replace that with HTTP error codes, often accompanied by a one-line description with a sometimes unclear relationship with the semantics of the application. Either it&#8217;s a standard error code, which by definition is very generic or it&#8217;s an application-defined code at which point it most likely overlaps with one or more standard codes and you don&#8217;t know when you should expect one or the other. Either way, there is too much faith put in the HTTP code versus the payload of the error. Let&#8217;s be realistic. There are very few things most applications can do automatically in response to a fault. Mainly:</p>
<ul>
<li>Ask the user to re-enter credentials (if it&#8217;s an authentication/permission issue)</li>
<li>Retry (immediately or after some time)</li>
<li>Report a problem and fail</li>
</ul>
<p>So make sure that your HTTP errors support this simple decision tree. Beyond that point, listing a panoply of application-specific error codes looks like an attempt to look &#8220;RESTful&#8221; by overdoing it. In most cases, application-specific error codes are too detailed for most automated processing and not detailed enough to help the developer understand and correct the issue. I am not against using them but what matters most is the payload data that comes along.</p>
<p>On that aspect, implementations generally fail in one of two extremes. Some of them tell you nothing. For example the payload is a string that just repeats what the documentation says about the error code. Others dump the kitchen sink on you and you get a full stack trace of where the error occurred in the server implementation. The former is justified as a security precaution. The latter as a way to help you debug. More likely, they both just reflect laziness.</p>
<p>In the ideal world, you&#8217;d get a detailed error payload telling you exactly which of the input parameters the application choked on and why. Not just vague words like &#8220;invalid&#8221;. Is parameter &#8220;foo&#8221; invalid for syntactical reasons? Is it invalid because inconsistent with another parameter value in the request? Is it invalid because it doesn&#8217;t match the state on the server side? Realistically, implementations often can&#8217;t spend too many CPU cycles analyzing errors and generating such detailed reports. That&#8217;s fine, but then they can include a link to a wiki a knowledge base where more details are available about the error, its common causes and the workarounds.</p>
<p>Your API should document all messages accurately and comprehensively. Faults are messages too.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/936' rel='bookmark' title='Permanent Link: VMWare publishes (and submits) vCloud API'>VMWare publishes (and submits) vCloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/1284' rel='bookmark' title='Permanent Link: Waiting for events (in Cloud APIs)'>Waiting for events (in Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1108' rel='bookmark' title='Permanent Link: Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF'>Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1504/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Enterprise application integration patterns for IT management: a blast from the past or from the future?</title>
		<link>http://stage.vambenepe.com/archives/1383</link>
		<comments>http://stage.vambenepe.com/archives/1383#comments</comments>
		<pubDate>Fri, 02 Apr 2010 08:11:30 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[CA]]></category>
		<category><![CDATA[CMDB]]></category>
		<category><![CDATA[CMDB Federation]]></category>
		<category><![CDATA[CMDBf]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[WS-Management]]></category>
		<category><![CDATA[Web services]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1383</guid>
		<description><![CDATA[In a recent blog post, Don Ferguson (CTO at CA) describes CA Catalyst, a major architectural overhaul which &#8220;applies enterprise application integration patterns to the problem of integrating IT management systems&#8221;. Reading this was fascinating to me. Not because the content was some kind of revelation, but exactly for the opposite reason. Because it is [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/138' rel='bookmark' title='Permanent Link: Manageability, management integration and WS-Management'>Manageability, management integration and WS-Management</a></li>
<li><a href='http://stage.vambenepe.com/archives/700' rel='bookmark' title='Permanent Link: A post-mortem on the previous IT management revolution'>A post-mortem on the previous IT management revolution</a></li>
<li><a href='http://stage.vambenepe.com/archives/204' rel='bookmark' title='Permanent Link: I have seen the future of CMDBf'>I have seen the future of CMDBf</a></li>
<li><a href='http://stage.vambenepe.com/archives/283' rel='bookmark' title='Permanent Link: CMDBf interop demo'>CMDBf interop demo</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In a <a href="http://community.ca.com/blogs/ctoblog/archive/2010/03/22/what-are-ca-catalyst-and-the-unified-service-model.aspx">recent blog post</a>, Don Ferguson (CTO at CA) describes CA Catalyst, a major architectural overhaul which <em>&#8220;applies enterprise application integration patterns to the problem of integrating IT management systems&#8221;</em>. Reading this was fascinating to me. Not because the content was some kind of revelation, but exactly for the opposite reason. Because it is so familiar.</p>
<p>For the better part of the last decade, I tried to build just this at HP. In the process, I worked with (and sometimes against) Don&#8217;s colleague at IBM, who were on the same mission. Both companies wanted a flexible and reliable integration platform for all aspects of IT management. We had decided to use Web services and SOA to achieve it. The Web services management protocols that I worked on (WSMF, WSDM, WS-Management and the &#8220;reconciliation stack&#8221;) were meant for this. We were after <a href="http://stage.vambenepe.com/archives/138">management integration more than manageability</a>. Then came CMDBf, another piece of the puzzle. From what I could tell, the focus on SOA and Web services had made Don (who was then Mr. WebSphere) the spiritual father of this effort at IBM, even though he wasn&#8217;t at the time focused on IT management.</p>
<p>As far as I know, neither IBM nor HP got there. I covered some of the reasons in this <a href="http://stage.vambenepe.com/archives/700">post-mortem</a>. The standards bickering. The focus on protocols rather than models. The confusion between the CMDB as a tool for process/service management versus a tool for software integration. Within HP, the turmoil from the many software acquisitions didn&#8217;t help, and there were other reasons. I am not sure at this point whether either company is still aiming for this vision or if they are taking a different approach.</p>
<p>But apparently CA is still on this path, and got somewhere. At least according to Don&#8217;s post. I have no insight into what was built beyond what&#8217;s in the post. I am not endorsing CA Catalyst, just agreeing with the design goals listed by Don. If indeed they have built it, and the integration framework resists the test of time, that&#8217;s impressive. And exciting. It apparently even uses some the same pieces we were planning to use, namely WS-Management and CMDBf (I am reluctantly associated with the first and proudly with the second).</p>
<p>While most readers might not share my historical connection with this work, this is still relevant and important to anyone who cares about IT management in the enterprise. If you&#8217;re planning to be at <a href="http://www.ca.com/caworld/">CA World</a>, go listen to Don. Web services may have a bad name, but the technical problems of IT management integration remain. There are only a few routes to IT management automation (<a href="http://stage.vambenepe.com/archives/773">I count seven</a>, the one taken by CA is #2). You can throw away SOAP if you want, you still need to deal with protocol compatibility, model alignment and instance reconciliation. You need to centralize or orchestrate the management operations performed. You need to be able to integrate with complementary products or at the very least to effectively incorporate your acquisitions. It&#8217;s hard stuff.</p>
<p>Bonus point to Don for not forcing a &#8220;Cloud&#8221; angle for extra sparkle. This is core IT management.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/138' rel='bookmark' title='Permanent Link: Manageability, management integration and WS-Management'>Manageability, management integration and WS-Management</a></li>
<li><a href='http://stage.vambenepe.com/archives/700' rel='bookmark' title='Permanent Link: A post-mortem on the previous IT management revolution'>A post-mortem on the previous IT management revolution</a></li>
<li><a href='http://stage.vambenepe.com/archives/204' rel='bookmark' title='Permanent Link: I have seen the future of CMDBf'>I have seen the future of CMDBf</a></li>
<li><a href='http://stage.vambenepe.com/archives/283' rel='bookmark' title='Permanent Link: CMDBf interop demo'>CMDBf interop demo</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1383/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two versions of a protocol is one too many</title>
		<link>http://stage.vambenepe.com/archives/1311</link>
		<comments>http://stage.vambenepe.com/archives/1311#comments</comments>
		<pubDate>Tue, 02 Mar 2010 05:47:34 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Amazon]]></category>
		<category><![CDATA[CMDB]]></category>
		<category><![CDATA[CMDBf]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DMTF]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Web services]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1311</guid>
		<description><![CDATA[There is always a temptation, when facing a hard design decision in the process of creating an interface or a protocol, to produce two (or more) versions. It&#8217;s sometimes a good idea, as a way to explore where each one takes you so you can make a more informed choice. But we know how this [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/436' rel='bookmark' title='Permanent Link: WS Resource Access working group starting at W3C'>WS Resource Access working group starting at W3C</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/849' rel='bookmark' title='Permanent Link: The CMDBf specification is now a DMTF standard'>The CMDBf specification is now a DMTF standard</a></li>
<li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>There is always a temptation, when facing a hard design decision in the process of creating an interface or a protocol, to produce two (or more) versions. It&#8217;s sometimes a good idea, as a way to explore where each one takes you so you can make a more informed choice. But we know how this invariably ends up. Documents get published that arguably should not. It&#8217;s even harder in a standard working group, where someone was asked (or at least encouraged) by the group to create each of the alternative specifications. Canning one is at best socially awkward (despite the appearances, not everyone in standards is a psychopath or a sadist) and often politically impossible.</p>
<p>And yet, it has to be done. Compare the alternatives, then pick one and commit. Don&#8217;t confuse being accommodating with being weak.</p>
<p>The typical example these days is of course SOAP versus REST: the temptation is to support both rather than make a choice. This applies to standards and to proprietary interfaces. When a standard does this, it hurts rather than promote interoperability. Vendors have a bit more of an excuse when they offer a choice (&#8220;the customer is always right&#8221;) but in reality it forces customers to play Russian roulette whether they want it or not. Because one of the alternatives will eventually be left behind (either discarded or maintained but not improved). If you balance the small immediate customer benefit of using the interface style they are most used to with the risk of redoing the integration down the road, the value proposition of offering several options crumbles.</p>
<p>[Pedantic disclaimer: I use the term "REST" in this post the way it is often (incorrectly) used, to mean pretty much anything that uses HTTP without a SOAP wrapper. The technical issues are a topic for <a href="http://stage.vambenepe.com/archives/1161">other</a> <a href="http://stage.vambenepe.com/archives/1300">posts</a>.]</p>
<p><strong>CMDBf</strong></p>
<p>CMDBf v1 is a <a href="http://www.dmtf.org/standards/cmdbf/">DMTF standard</a>. It is a SOAP-based protocol. For v2, it has been suggested that there should a REST version. I don&#8217;t know what the CMDBf group (in which I participate) will end up doing but I&#8217;ve made my position clear: I could go either way (remain with SOAP or dump it) but I do not want to have two versions of the protocol (one SOAP one REST). If we think we&#8217;re better off with a REST version, then let&#8217;s make v2 REST-only. Supporting both mechanisms in v2 would be stupid. They would address the same use cases and only serve to provide political ass-coverage. There is no functional need for both. The argument that we need to keep supporting SOAP for the benefit of those who implemented v1 doesn&#8217;t fly. As an implementer, nobody is saying that you need to turn off your v1 services the second you launch the v2 version.</p>
<p><strong>DMTF Cloud</strong></p>
<p>Between the specifications submitted directly to DMTF, the specifications developed by DMTF &#8220;partner&#8221; organizations and the existing DMTF protocols, the DMTF Cloud effort is presented with a mix of SOAP, RESTful and XML-RPC-over-HTTP options. In the process of deciding what to create or adopt I am sure that the temptation will be high to take the easy route of supporting several versions to placate everyone. But such a &#8220;consensus&#8221; would be achieved on the back of the implementers so I very much hope it won&#8217;t be the case.</p>
<p><strong>When it is appropriate</strong></p>
<p>There are cases where supporting alternatives options is worth the cost. But it typically happens when they serve very different use cases. Think of SAX versus DOM, which have clearly differentiated sweetspots. In the Cloud world, Amazon S3 gives us interesting examples of both justified and extraneous alternatives. The extraneous one is the choice between REST and SOAP for the <a href="http://docs.amazonwebservices.com/AmazonS3/latest/API/">S3 API</a>. I often praise AWS for its innovation and pragmatism, but this is an example of something that only looks pragmatic. On the other hand, the <a href="http://aws.amazon.com/importexport/">AWS import/export</a> mechanism is a useful alternative. It allows you to physically ship a device with a few terabytes of data to Amazon. This is technically an alternative to the S3 programmatic interface, but one with obviously differentiated use cases. I recommend you reserve the use of &#8220;alternative APIs&#8221; for such scenarios.</p>
<p>If it didn&#8217;t work for Tiger Woods, it won&#8217;t work for your Cloud API either. Learn to commit.</p>
<p>[CLARIFICATION: based on some of the early Twitter feedback on this entry, I want to clarify that it's alternative versions that I am against, not successive versions (i.e. an evolution of the interface over time). How to manage successive versions properly is a whole other debate.]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/436' rel='bookmark' title='Permanent Link: WS Resource Access working group starting at W3C'>WS Resource Access working group starting at W3C</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/849' rel='bookmark' title='Permanent Link: The CMDBf specification is now a DMTF standard'>The CMDBf specification is now a DMTF standard</a></li>
<li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1311/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HP has submitted a specification to the DMTF Cloud incubator</title>
		<link>http://stage.vambenepe.com/archives/1295</link>
		<comments>http://stage.vambenepe.com/archives/1295#comments</comments>
		<pubDate>Fri, 19 Feb 2010 20:55:30 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DMTF]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[HP]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1295</guid>
		<description><![CDATA[When I lamented, in a previous post, that I couldn&#8217;t tell you about recent submissions to the DMTF Cloud incubator, one of those I had in mind was a submission from HP. I can now write this, because the author of the specification, Nigel Cook, has recently blogged about it. Unfortunately he is isn&#8217;t publishing [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1108' rel='bookmark' title='Permanent Link: Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF'>Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF</a></li>
<li><a href='http://stage.vambenepe.com/archives/849' rel='bookmark' title='Permanent Link: The CMDBf specification is now a DMTF standard'>The CMDBf specification is now a DMTF standard</a></li>
<li><a href='http://stage.vambenepe.com/archives/576' rel='bookmark' title='Permanent Link: Analyzing the DMTF incubator process'>Analyzing the DMTF incubator process</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/715' rel='bookmark' title='Permanent Link: DMTF calls the ball on Cloud standards'>DMTF calls the ball on Cloud standards</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>When I lamented, in a <a href="http://stage.vambenepe.com/archives/1261">previous post</a>, that I couldn&#8217;t tell you about recent submissions to the DMTF Cloud incubator, one of those I had in mind was a submission from HP. I can now write this, because the author of the specification, Nigel Cook, has recently <a href="http://www.communities.hp.com/online/blogs/eyeonblades/archive/2010/02/19/hp-s-technology-contribution-to-the-dmtf-cloud-incubator.aspx">blogged about it</a>. Unfortunately he is isn&#8217;t publishing the specification itself, just an announcement that it was submitted. Hopefully he is currently going through the long approval process to make the submitted document public (been there, done that, I know it takes time).</p>
<p>In the blog, Nigel makes a good argument for the need to go beyond a hypervisor-centric view of Cloud computing. Even at the IaaS layer there are cases of automated-but-not-virtualized deployment that have all the characteristics of Cloud computing and need to be supported by Cloud management APIs. Not to mention OS-level isolation like Solaris Containers.</p>
<p>Nigel also offers a spirited defense of SOAP-based protocols. I don&#8217;t necessarily agree with all his points (<em>&#8220;one could easily map the web service definition I described to REST if that was important&#8221;</em> suggests a <em>&#8220;it&#8217;s just SOAP without the wrapper&#8221;</em> view of REST), but I am glad he is launching this debate. We need to discuss this rather than assume that REST is the obvious answer. Remember, a few years ago SOAP was just as obvious an answer to any protocol question. It may well be that indeed REST comes out ahead of this discussion, but the process will force us to be explicit about what benefits of REST we are trying to achieve and will allow us to be <a href="http://stage.vambenepe.com/archives/1161">practical</a> in the way we approach it.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1108' rel='bookmark' title='Permanent Link: Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF'>Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF</a></li>
<li><a href='http://stage.vambenepe.com/archives/849' rel='bookmark' title='Permanent Link: The CMDBf specification is now a DMTF standard'>The CMDBf specification is now a DMTF standard</a></li>
<li><a href='http://stage.vambenepe.com/archives/576' rel='bookmark' title='Permanent Link: Analyzing the DMTF incubator process'>Analyzing the DMTF incubator process</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/715' rel='bookmark' title='Permanent Link: DMTF calls the ball on Cloud standards'>DMTF calls the ball on Cloud standards</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1295/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Waiting for events (in Cloud APIs)</title>
		<link>http://stage.vambenepe.com/archives/1284</link>
		<comments>http://stage.vambenepe.com/archives/1284#comments</comments>
		<pubDate>Thu, 18 Feb 2010 07:26:59 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Desired state]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1284</guid>
		<description><![CDATA[Events/alerts/notifications have been a central concept in IT management at least since the first SNMP trap was emitted, and probably even long before that. And yet they are curiously absent from all the Cloud management APIs/protocols. If you think that&#8217;s because &#8220;THE CLOUD CHANGES EVERYTHING&#8221; then you may have to think again. Over the last [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
<li><a href='http://stage.vambenepe.com/archives/559' rel='bookmark' title='Permanent Link: Is notification wrapping getting a bum rap?'>Is notification wrapping getting a bum rap?</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1504' rel='bookmark' title='Permanent Link: Dear Cloud API, your fault line is showing'>Dear Cloud API, your fault line is showing</a></li>
<li><a href='http://stage.vambenepe.com/archives/1161' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 3: wrap-up)'>REST in practice for IT and Cloud management (part 3: wrap-up)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Events/alerts/notifications have been a central concept in IT management at least since the first SNMP trap was emitted, and probably even long before that. And yet they are curiously absent from all the Cloud management APIs/protocols. If you think that&#8217;s because &#8220;THE CLOUD CHANGES EVERYTHING&#8221; then you may have to think again. Over the last few days, two of the most experienced practitioners of Cloud computing pointed out that this omission is a real pain in the neck. RightScale&#8217;s Thorsten von Eicken was <a href="http://blog.rightscale.com/2010/02/13/top-cloud-api-sins/">first</a> to request <em>&#8220;an event based interface instead of a request-reply based interface&#8221;</em>, pointing out that <em>&#8220;we run a good number of machines that do nothing but chew up 100% cpu polling EC2 to detect changes&#8221;</em>. George Reese <a href="http://broadcast.oreilly.com/2010/02/towards-event-driven-cloud-apis.html">seconded</a> and started to sketch a solution. And while these blog posts gave the issue increased visibility recently, it has been a recurring topic on the AWS Forum and other similar discussion boards for quite some time. For example, in <a href="http://developer.amazonwebservices.com/connect/thread.jspa?messageID=49570">this thread</a> going back to 2006, an Amazon employee wrote that <em>&#8220;this is a feature we&#8217;ve discussed recently and we&#8217;re looking at options&#8221;</em> (incidentally, I see a post by Thorsten in that old thread). We&#8217;re still waiting.</p>
<p>Let&#8217;s look at what it would take to define such a feature.</p>
<p>I have some experience with events for IT management, having been involved in the <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsn">WS-Notification family of specification</a>s and having co-chaired the OASIS technical committee that standardized them. This post is not about foisting WS-Notification on Cloud APIs, but just about surfacing some of the questions that come up when you try to standardize such a mechanism. While the main use cases for WS-Notification came from IT (and Grid) management, it was supposed to be a generic mechanism. A Cloud-centric eventing protocol can be made simpler by focusing on fewer use cases (Cloud scenarios only). In addition, WS-Notification was marred by <a href="http://stage.vambenepe.com/archives/1261">the complexity-is-a-sign-of-greatness spirit of the time</a> . On this too, a Cloud eventing protocol could improve things by keeping <span style="text-decoration: line-through;">IBM at bay</span> simplicity in mind.</p>
<p><strong>Types of event</strong></p>
<p>When you pull the state of a resource to see if anything changed,  you don&#8217;t have to tell the provider what kind of change you are interested in. If, on the other hand, you want the provider to notify you, then they need to know what you care about. You may not want to be notified on every single change in the resource state. How do you describe the changes you care about? Is there an agreed-upon set of states for the resource and you are only notified on state transitions? Can you indicate the minimum severity level for an event to be emitted? Who determines the severity of an event? Or do you get to specify what fields in the resource state you want to watch? What about numeric values for which you may not want to be notified of every change but only when a threshold is crossed? Do you get to specify a query and get notified whenever the query result changes? In WS-Notification some of this is handled by <a href="http://docs.oasis-open.org/wsn/wsn-ws_topics-1.3-spec-os.pdf">WS-Topics</a> which I still like conceptually (I co-edited it) but is too complex for the task at hand.</p>
<p><strong>Event formats</strong></p>
<p>What format are the events serialized in? How is the even metadata captured (e.g. time stamp of observation, which may not be the same as the time at which the notification message was sent)? If the event payload is a representation of the new state of the resource, does it indicate what field changes (and what the old value was)? How do you keep event payloads consistent with the resource representation in the request/response interactions? If many events occur near the same time, can you group them in one notification message for better scalability?</p>
<p><strong>Subscription creation</strong></p>
<p>Presumably you need a subscription mechanism. Is the subscription set in stone when the resource is created? Or can you come later and subscribe? If subscription is an operation on the resource itself, how do you subscribe for events on something that doesn&#8217;t exist yet (e.g. &#8220;create a VM and notify me once it&#8217;s started&#8221;)? Do you get to set subscriptions on a per-resource-basis? Or is this a global setting for all the resources that you own? Can you have two different subscriptions on the same resource (e.g. a &#8220;critical events only&#8221; subscription that exist throughout the life of the resource, plus a &#8220;lots of events please&#8221; subscription that you keep for a few hours while troubleshooting)?</p>
<p><strong>Subscription management</strong></p>
<p>Do you get to come back and update/pause/delete a subscription? Do you get to change what filter the subscription carries? Or is it set in stone until the subscription expires? Can you change the delivery endpoint? What if events fail to be delivered? Does the provider cancel your subscription? After how many failures? Does it just pause it for a few hours? Keep trying?</p>
<p><strong>Subscription expiration</strong></p>
<p>Who sets the expiration period? The subscriber? Can the provider set a max duration? Do you get a warning message before the subscription expires? Can you renew a subscription or do you have to create a new one? Do you get a message telling you that it has expired? Where are these subscription-lifecycle messages sent? To the same endpoint as the regular messages? What if your subscription is being killed because your deliver endpoint is down, clearly it makes no sense to send the warning message to that same endpoint. Do you provide a separate &#8220;subscription management&#8221; endpoint (different from the event delivery endpoint) when you subscribe? Alternatively, does an email message get sent to the registered user who set the subscription?</p>
<p><strong>Delivery reliability</strong></p>
<p>How reliable do you want the notifications to be? Should the emitter retry until they&#8217;ve received a confirmation? How long do they keep messages that can&#8217;t be delivered? Some may have a very short shelf life while others are still useful weeks later. If you don&#8217;t have a reliable mechanism but you really &#8220;need to know about a lost server within a minute of it disappearing&#8221; (the example Georges gives) then in reality you may still have to poll just to make sure that an event wasn&#8217;t lost. If you haven&#8217;t received an event in a while, how can you test if the subscription is still working? Should subscriptions send a heartbeat message once a while?</p>
<p><strong>Delivery mechanism</strong></p>
<p>How do you deliver notifications? Do you keep HTTP connections open through tricks similar to how self-updating web pages work (e.g. COMET, long polling and soon WebSockets)? Or do you just provide a listener endpoint to which the notifier tries to connect (which, in the case of public cloud deployments, means you need to have a publicly-addressable listener, but hopefully not on the same Cloud infrastructure). Do you use XMPP? AMQP? Email? Can I have you hold my events and let me come pull them?</p>
<p><strong>Security</strong></p>
<p>Do you need to verify the origin of the events you receive? Or do you assume they may be forged and always initiate a connection to the provider to double-check? And on the other side, what are the security requirements for event delivery? If a user looses some of their privileges, do you have to go and cancel the still-active subscriptions that they created?</p>
<p><strong>Throttling</strong></p>
<p>Is there a maximum event rate? Do you get charged for the events the Cloud provider sends you? How do you make sure that someone doesn&#8217;t create a subscription pointing to the wrong endpoint (either erroneously or maliciously, e.g. DoS). Do you send a test message at registration asking the delivery endpoint to acknowledge that they indeed want to receive these notifications?</p>
<p><strong>Conclusion</strong></p>
<p>My goal is not to argue that we cannot have a simple yet good enough notification system or to scare anyone from attempting to define it. It&#8217;s just to show that it&#8217;s not as simple as it may seem at first blush. But there probably is a sweetspot and people like Thorsten and George are very well qualified to find it.</p>
<p>[UPDATED 2010/4/7: Amazon releases <a href="http://aws.typepad.com/aws/2010/04/introducing-the-amazon-simple-notification-service.html">AWS Simple notification Service</a>. Not just as an eventing feature for the Cloud API, as a generic notification service. Which can, of course, also carry Cloud management events. Though at this point you're on your own to publish them from your instances, it doesn't look like the AWS infrastructure can do it for you. Which means, for example, that you're not going to be able to publish an event for a sudden crash.]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
<li><a href='http://stage.vambenepe.com/archives/559' rel='bookmark' title='Permanent Link: Is notification wrapping getting a bum rap?'>Is notification wrapping getting a bum rap?</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1504' rel='bookmark' title='Permanent Link: Dear Cloud API, your fault line is showing'>Dear Cloud API, your fault line is showing</a></li>
<li><a href='http://stage.vambenepe.com/archives/1161' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 3: wrap-up)'>REST in practice for IT and Cloud management (part 3: wrap-up)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1284/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Can Cloud standards be saved?</title>
		<link>http://stage.vambenepe.com/archives/1261</link>
		<comments>http://stage.vambenepe.com/archives/1261#comments</comments>
		<pubDate>Mon, 15 Feb 2010 07:33:21 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[CMDBf]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DMTF]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[HP]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[WS-Management]]></category>
		<category><![CDATA[Web services]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1261</guid>
		<description><![CDATA[Then: Web services standards
One of the most frustrating aspects of how Web services standards shot themselves in the foot via unchecked complexity is that plenty of people were pointing out the problem as it happened. Mark Baker (to whom I noticed Don Box also paid tribute recently) is the poster child. I remember Tom Jordahl [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/220' rel='bookmark' title='Permanent Link: Moving towards utility/cloud computing standards?'>Moving towards utility/cloud computing standards?</a></li>
<li><a href='http://stage.vambenepe.com/archives/720' rel='bookmark' title='Permanent Link: A pulp view of Cloud computing politics'>A pulp view of Cloud computing politics</a></li>
<li><a href='http://stage.vambenepe.com/archives/715' rel='bookmark' title='Permanent Link: DMTF calls the ball on Cloud standards'>DMTF calls the ball on Cloud standards</a></li>
<li><a href='http://stage.vambenepe.com/archives/1344' rel='bookmark' title='Permanent Link: Standards Disconnect at Cloud Connect'>Standards Disconnect at Cloud Connect</a></li>
<li><a href='http://stage.vambenepe.com/archives/856' rel='bookmark' title='Permanent Link: YACSOE'>YACSOE</a></li>
<li><a href='http://stage.vambenepe.com/archives/436' rel='bookmark' title='Permanent Link: WS Resource Access working group starting at W3C'>WS Resource Access working group starting at W3C</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><strong>Then: Web services standards</strong></p>
<p>One of the most frustrating aspects of how Web services standards shot themselves in the foot via unchecked complexity is that plenty of people were pointing out the problem as it happened. <a href="http://www.markbaker.ca/blog/">Mark Baker</a> (to whom I noticed Don Box also <a href="http://www.infoq.com/interviews/box-soap-xml-rest-m">paid tribute</a> recently) is the poster child. I remember <a href="http://tjordahl.blogspot.com/">Tom Jordahl</a> tirelessly arguing for keeping it simple in the WSDL working group. Amberpoint&#8217;s <a href="http://twitter.com/fred_carter">Fred Carter</a> did it in WSDM (in the post announcing the recent <a href="http://stage.vambenepe.com/archives/1247">Amberpoint acquisition</a>, I mentioned that <em>&#8220;their engineers brought to the [WSDM] group a unique level of experience and practical-mindedness&#8221;</em> but I could have added <em>&#8220;&#8230; which we, the large companies, mostly ignored.&#8221;</em>)</p>
<p>The commonality between all these voices is that they didn&#8217;t come from the large companies. Instead they came from the &#8220;specialists&#8221; (independent contractors and representatives from small, specialized companies). Many of the WS-* debates were fought along alliance lines. Depending on the season it could be &#8220;IBM vs. Microsoft&#8221;, &#8220;IBM+Microsoft vs. Oracle&#8221;, &#8220;IBM+HP vs. Microsoft+Intel&#8221;, etc&#8230; They&#8217;d battle over one another&#8217;s proposal but tacitly agreed to brush off proposals from the smaller players. At least if they contained anything radically different from the content of the submission by the large companies. And simplicity is radical.</p>
<p><strong>Now: Cloud standards</strong></p>
<p>I do not reminisce about the WS-* standards wars just for old time sake or the joy of self-flagellation. I also hope that the current (and very important) wave of standards, related to all things Cloud, can do better than the Web services wave did with regards to involving on-the-ground experts.</p>
<p>Even though I still work for a large company, I&#8217;d like to see this fixed for Cloud standards. Not because I am a good guy (though I hope I am), but because I now realize that in the long run this lack of perspective even hurts the large companies themselves. We (and that includes IBM and Microsoft, the ringleaders of the WS-* effort) would be better off now if we had paid more attention then.</p>
<p>Here are two reasons why the necessity to involve and include specialists is even more applicable to Cloud standards than Web services.</p>
<p>First, there are many more individuals (or small companies) today with a lot of practical Cloud experience than there were small players with practical Web services experience when the WS-* standardization started (<a href="http://www.shlomoswidler.com/">Shlomo Swidler</a>, <a href="http://www.elastician.com/">Mitch Garnaat</a>, <a href="http://cloudscaling.com/">Randy Bias</a>, <a href="http://www.johnmwillis.com/">John M. Willis</a>, <a href="http://samj.net/">Sam Johnston</a>, <a href="http://coderslike.us/">David Kavanagh</a>, <a href="http://anyweight.blogspot.com/">Adrian Cole</a>, <a href="http://blog.edwardmgoldberg.com/">Edward M. Goldberg</a>, <a href="http://alestic.com/">Eric Hammond</a>, <a href="http://www.rightscale.com/">Thorsten von Eicken</a> and <a href="http://www.jackofallclouds.com/">Guy Rosen</a> come to mind, though this is nowhere near an exhaustive list). Which means there is even more to gain by ensuring that the Cloud standard process is open to them, should they choose to engage in some form.</p>
<p>Second, there is a transparency problem much larger than with Web services standards. For all their flaws, W3C and OASIS, where most of the WS-* work took place, are relatively transparent. Their processes and IP policies are clear and, most importantly, their mailing list archives are open to the public. DMTF, where VMWare, Fujitsu and others have submitted Cloud specifications, is at the other hand of the transparency spectrum. A few examples of what I mean by that:</p>
<ul>
<li>I can tell you that VMWare and Fujitsu submitted specifications to DMTF, because the two companies each issued a press release to announce it. I can&#8217;t tell you which others did (and you can&#8217;t read their submissions) because these companies didn&#8217;t think it worthy of a press release. And DMTF keeps the submission confidential. That&#8217;s why I blogged about the <a href="http://stage.vambenepe.com/archives/936">vCloud submission</a> and the <a href="http://stage.vambenepe.com/archives/1108">Fujitsu submission</a> but couldn&#8217;t provide equivalent analysis for the others.</li>
<li>The mailing lists of DMTF working groups are confidential. Even a DMTF member cannot see the message archive of a group unless he/she is a member of that specific group. The general public cannot see anything at all. And unless I missed it on the site, they cannot even know what DMTF working groups exist. It makes you wonder whether Dick Cheney decided to call his <a href="http://en.wikipedia.org/wiki/Energy_Task_Force">social club of energy company executives</a> a &#8220;Task Force&#8221; because he was inspired by the secrecy of the DMTF (&#8220;Distributed Management Task Force&#8221;). Even when the work is finished and the standard published, the DMTF won&#8217;t release the mailing list archive, even though these discussions can be a great reference for people who later use the specification.</li>
<li>Working documents are also confidential. Working groups can decide to publish some intermediate work, but this needs to be an explicit decision of the group, then approved by its parent group, and in practice it happens rarely (mileage varies depending on the groups).</li>
<li>Even when a document is published, the process to provide feedback from the outside seems designed to thwart any attempt. Or at least that&#8217;s what it does in practice. Having blogged a fair amount on technical details of two DMTF standards (<a href="http://stage.vambenepe.com/archives/category/cmdbf">CMDBf</a> and <a href="http://stage.vambenepe.com/archives/category/ws-management">WS-Management</a>) I often get questions and comments about these specifications from readers. I encourage them to bring their comments to the group and point them to the <a href="http://www.dmtf.org/standards/feedback/">official feedback page</a>. Not once have I, as a working group participant, seen the comments come out on the other end of the process.</li>
</ul>
<p>So let&#8217;s recap. People outside of DMTF don&#8217;t know what work is going on (even if they happen to know that a working group called &#8220;Cloud this&#8221; or &#8220;Cloud that&#8221; has been started, the charter documents and therefore the precise scope and list of deliverables are also confidential). Even if they knew, they couldn&#8217;t get to see the work. And even if they did, there is no convenient way for them to provide feedback (which would probably arrive too late anyway). And joining the organization would be quite a selfless act because they then have to pay for the privilege of sharing their expertise while not being included in the real deciding circles anyway (unless there are ready to pony up for the top membership levels). That&#8217;s because of the unclear and unstable processes as well as the inordinate influence of board members and officers who all are also company representatives (in W3C, the strong staff balances the influence of the sponsors, in OASIS the bylaws limit arbitrariness by the board members).</p>
<p><strong>What we are missing out on</strong></p>
<p>Many in the standards community have heard me rant on this topic before. What pushed me over the edge and motivated me to write this entry was stumbling on a crystal clear illustration of what we are missing out on. I submit to you <a href="http://www.cloudslamevent.com/compute-cloud-abstraction-apis-who-needs-em">this post</a> by Adrian Cole and the <a href="http://blog.rightscale.com/2010/02/12/cloud-api-requirements/">follow-up</a> (<a href="http://blog.rightscale.com/2010/02/13/top-cloud-api-sins/">twice</a>)by Thorsten von Eicken. After spending two days at a face to face meeting of the DMTF Cloud incubator (in an undisclosed location) this week, I&#8217;ll just say that these posts illustrate a level of practically and a grounding in real-life Cloud usage that was not evident in all the discussions of the incubator. You don&#8217;t see Adrian and Thorsten arguing about the meaning of the word &#8220;infrastructure&#8221;, do you? I&#8217;d love to point you to the DMTF meeting minutes so you can judge for yourself, but by now you should understand why I can&#8217;t.</p>
<p>So instead of helping in the forum where big vendors submit their specifications, the specialists (some of them at least) go work in OGF, and produce <a href="http://www.occi-wg.org/doku.php">OCCI</a> (here is the <a href="http://www.ogf.org/pipermail/occi-wg/">mailing list archive</a>). When Thorsten von Eicken blogs about his experience using Cloud APIs, they welcome the feedback and <a href="http://twitter.com/tvoneicken/status/9107428666">engage him</a> to look at their work. The OCCI work is nice, but my concern is that we are now going to end up with at least two sets of standard specifications (in addition to the multitude of company-controlled specifications, like the ubiquitous EC2 API). One from the big companies and one from the specialists. And if you think that the simplest, clearest and most practical one will automatically win, well I envy your optimism. Up to a point. I don&#8217;t know if one specification will crush the other, if we&#8217;ll have a &#8220;reconciliation&#8221; process, if one is going to be used in &#8220;private Clouds&#8221; and the other in &#8220;public Clouds&#8221; or if the conflict will just make both mostly irrelevant. What I do know is that this is not what I want to see happen. Rather, the big vendors (whose imprimatur is needed) and the specialists (whose experience is indispensable) should work together to make the standard technically practical and widely adopted. I don&#8217;t care where it happens. I don&#8217;t know whether now is the right time or too early. I just know that when the time comes it needs to be done right. And I don&#8217;t like the way it&#8217;s shaping up at the moment. Well-meaning but toothless efforts like <a href="http://cloud-standards.org">cloud-standards.org</a> don&#8217;t make me feel better.</p>
<p>I know this blog post will be read both by my friends in DMTF and by my friends in <a href="http://twitter.com/clouderati/following">Clouderati</a>. I just want them to meet. That could be quite a party.</p>
<p>IBM was on to something when it produced this <a href="http://www.research.ibm.com/files/standards_wikis.shtml">standards participation policy</a> (which I <a href="http://stage.vambenepe.com/archives/361">commented on</a> in a cynical-yet-supportive way &#8211; and yes I realize the same cynicism can apply to me). But I haven&#8217;t heard of any practical effect of this policy change. Has anyone seen any? Isn&#8217;t the Cloud standard wave the right time to translate it into action?</p>
<p><strong>Transparency first</strong></p>
<p>I realize that it takes more than transparency to convince specialists to take a look at what a working group is doing and share their thoughts. Even in a fully transparent situation, specialists will eventually give up if they are stonewalled by process lawyers or just ignored and marginalized (many working group participants have little bandwidth and typically take their cues from the big vendors even in the absence of explicit corporate alignment). And this is hard to fix. Processes serve a purpose. While they can be used against the smaller players, they also in many cases protect them. Plus, for every enlightened specialist who gets discouraged, there is a nutcase who gets neutralized by the need to put up a clear proposal and follow a process. I don&#8217;t see a good way to prevent large vendors from using the process to pressure smaller ones if that&#8217;s what they intend to do. Let&#8217;s at least prevent this from happening unintentionally. Maybe some of my colleagues  from large companies will also ask themselves whether it wouldn&#8217;t be to their own benefit to actually help qualified specialists to contribute. Some &#8220;positive discrimination&#8221; might be in order, to lighten the process burden in some way for those with practical expertise, limited resources, and the willingness to offer some could-otherwise-be-billable hours.</p>
<p>In any case, improving transparency is the simplest, fastest and most obvious step that needs to be taken. Not doing it because it won&#8217;t solve everything is like not doing CPR on someone on the pretext that it would only restart his heart but not cure his rheumatism.</p>
<p>What&#8217;s at risk if we fail to leverage the huge amount of practical Cloud expertise from smaller players in the standards work? Nothing less than an unpractical set of specifications that will fail to realize the promises of Cloud interoperability. And quite possibly even delay them. We&#8217;ve seen it before, haven&#8217;t we?</p>
<p>Notice how I haven&#8217;t mentioned customers? It&#8217;s a typical &#8220;feel-good&#8221; line in every lament about standards to say that &#8220;we need more customer involvement&#8221;. It&#8217;s true, but the lament is old and hasn&#8217;t, in my experience, solved anything. And today&#8217;s economical climate makes me even more dubious that direct customer involvement is going to keep us on track for this standardization wave (though I&#8217;d love to be proven wrong). Opening the door to on-the-ground-working-with-customers experts with a very neutral and pragmatic perspective has a better chance of success in my mind.</p>
<p>As a point of clarification, I am not asking large companies to pick a few small companies out of their partner ecosystem and give them a 10% discount on their alliance membership fee in exchange for showing up in the standards groups and supporting their friendly sponsor. This is a common trick, used to pack a committee, get the votes and create an impression of overwhelming industry support. Nobody should pick who the specialists are. We should do all we can to encourage them to come. It will be pretty clear who they are when they start to ask pointed questions about the work.</p>
<p>Finally, from the archives, a more <a href="http://stage.vambenepe.com/archives/223">humorous look at how various standards bodies compare</a>. And the proof that my complaints about DMTF secrecy aren&#8217;t new.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/220' rel='bookmark' title='Permanent Link: Moving towards utility/cloud computing standards?'>Moving towards utility/cloud computing standards?</a></li>
<li><a href='http://stage.vambenepe.com/archives/720' rel='bookmark' title='Permanent Link: A pulp view of Cloud computing politics'>A pulp view of Cloud computing politics</a></li>
<li><a href='http://stage.vambenepe.com/archives/715' rel='bookmark' title='Permanent Link: DMTF calls the ball on Cloud standards'>DMTF calls the ball on Cloud standards</a></li>
<li><a href='http://stage.vambenepe.com/archives/1344' rel='bookmark' title='Permanent Link: Standards Disconnect at Cloud Connect'>Standards Disconnect at Cloud Connect</a></li>
<li><a href='http://stage.vambenepe.com/archives/856' rel='bookmark' title='Permanent Link: YACSOE'>YACSOE</a></li>
<li><a href='http://stage.vambenepe.com/archives/436' rel='bookmark' title='Permanent Link: WS Resource Access working group starting at W3C'>WS Resource Access working group starting at W3C</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1261/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>PaaS as the path to MDA?</title>
		<link>http://stage.vambenepe.com/archives/1173</link>
		<comments>http://stage.vambenepe.com/archives/1173#comments</comments>
		<pubDate>Tue, 29 Dec 2009 07:42:15 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[Business process]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[Oslo]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1173</guid>
		<description><![CDATA[Lots of communities think of Cloud Computing as the realization of a vision that they have been pusuing for a while (&#8220;sure we didn&#8217;t call it Cloud back then but&#8230;&#8221;). Just ask the Grid folks, the dynamic data center folks (DCML, IBM&#8217;s &#8220;Autonomic Computing&#8221;, HP&#8217;s &#8220;Adaptive Enterprise&#8221;,  Microsoft&#8217;s DSI), the ASP community, and those of [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/667' rel='bookmark' title='Permanent Link: Open Cloud Manifesto, circa 2004'>Open Cloud Manifesto, circa 2004</a></li>
<li><a href='http://stage.vambenepe.com/archives/1252' rel='bookmark' title='Permanent Link: Is Business Process Execution the killer app for PaaS?'>Is Business Process Execution the killer app for PaaS?</a></li>
<li><a href='http://stage.vambenepe.com/archives/293' rel='bookmark' title='Permanent Link: Oslo, blog posts and my crystal ball'>Oslo, blog posts and my crystal ball</a></li>
<li><a href='http://stage.vambenepe.com/archives/420' rel='bookmark' title='Permanent Link: First in-depth look at Microsoft&#8217;s Oslo and the &#8220;M&#8221; modeling language'>First in-depth look at Microsoft&#8217;s Oslo and the &#8220;M&#8221; modeling language</a></li>
<li><a href='http://stage.vambenepe.com/archives/1096' rel='bookmark' title='Permanent Link: Desirable technical characteristics of PaaS'>Desirable technical characteristics of PaaS</a></li>
<li><a href='http://stage.vambenepe.com/archives/1440' rel='bookmark' title='Permanent Link: PaaS portability challenges and the VMforce example'>PaaS portability challenges and the VMforce example</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Lots of communities think of Cloud Computing as the realization of a vision that they have been pusuing for a while (&#8220;sure we didn&#8217;t call it Cloud back then but&#8230;&#8221;). Just ask the Grid folks, the dynamic data center folks (DCML, IBM&#8217;s &#8220;Autonomic Computing&#8221;, HP&#8217;s &#8220;Adaptive Enterprise&#8221;,  Microsoft&#8217;s DSI), the ASP community, and those of us who toiled on what was going to be the SOAP-based management stack for all IT (e.g. my HP colleagues and I can selectively quote mentions of <em>&#8220;adaptation mechanisms like resource reservation, allocation/de-allocation&#8221;</em> and <em>&#8220;management as a service&#8221;</em> in this <a href="http://xml.coverpages.org/WSMF-Overview.pdf">WSMF white paper</a> from 2003 to portray WSMF as a precursor to all the Cloud APIs of today).</p>
<p>I thought of another such community today, as I ran into older OMG specifications: the Model-Driven Architecture (MDA) community. I have no idea what people in this community actually think of Cloud Computing, but it seems to me that PaaS is a chance to come close to part of their vision. For two reasons: PaaS makes it easier and more rewarding, all at the same time, to practice model-driven design. More bang for less buck.</p>
<p><strong>Easier</strong></p>
<p>My understanding of the MDA value proposition is that it would allow you to create a high-level design (at the level of something like an augmented version of UML) and have it automatically turn into executable code (e.g. that can run in a JEE or .NET container). I am probably making it sound more naive than it really is, but not by much. That&#8217;s a might wide gap to bridge, for QVT and friends, from UMLish to byte-code and it&#8217;s no surprise that the practical benefits of MDA are still to be seen (to put it kindly).</p>
<p>In a PaaS/SaaS world, on the other hand, you are mapping to something that is higher level than byte code. Depending on what <a href="http://stage.vambenepe.com/archives/1078">types of PaaS containers</a> you envision, some of the abstractions provided by these containers (e.g. business process execution, event processing) are a lot closer to the concepts manipulated in your PIM (Platform-independent model, the UMLish mentioned above). Thus a smaller gap to bridge and a better chance of it being automagical. Especially if you add a few SaaS building blocks to the mix.</p>
<p><strong>More rewarding</strong></p>
<p>Not only should it be easier to map a PIM to a PaaS deployment environments, the benefits you get once you are done are incommensurably greater. Rather than getting a dump of opaque auto-generated byte-code running in a regular JVM/CLR, you get an environments in which the design concepts (actors/services, process, rules, events) and the business model elements are first class citizens of the platform management infrastructure. So that you can monitor and set policies on the same things that you manipulate in you PIM. As opposed to falling down to the lowest common denominator of CPU/memory metrics. Or, god forbid, trying to diagnose/optimize machine-generated code.</p>
<p><strong>We shall see</strong></p>
<p>I wasn&#8217;t thinking of Microsoft SQL Server Modeling (previously known as Oslo) when I wrote this, but Doug Purdy&#8217;s <a href="http://twitter.com/douglasp/statuses/7149986284">tweet</a> made the connection for me. And indeed, one can see in SQLSM+Azure the leading candidate today to realizing the MDA vision&#8230; minus the OMG MDA specifications.</p>
<p>[Note: I wasn't planning to blog this, but after I tweeted the basic idea (<a href="http://twitter.com/vambenepe/statuses/7140780516"><em>"Attempting MDA (model-driven architecture) before inventing model-driven deployment and mgmt was hopeless. Now possibly getting there."</em></a>) Shlomo <a href="http://twitter.com/ShlomoSwidler/statuses/7141102067">requested more details</a> and I got frustrated by the difficulty to explain my point in twitterisms. In effect, this blog entry is just an expanded tweet, not something as intensely believed, fanatically researched and authoritatively supported as my usual blog posts (ah!).]</p>
<p>[UPDATED 2009/12/29: Some relevant presentations from OMG-land, <a href="http://twitter.com/JBezivin/status/7157232692">thanks to Jean Bezivin</a>. Though I don't see mention of any specific plan to use/adapt MOF/XMI/QVT/etc for the Cloud.]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/667' rel='bookmark' title='Permanent Link: Open Cloud Manifesto, circa 2004'>Open Cloud Manifesto, circa 2004</a></li>
<li><a href='http://stage.vambenepe.com/archives/1252' rel='bookmark' title='Permanent Link: Is Business Process Execution the killer app for PaaS?'>Is Business Process Execution the killer app for PaaS?</a></li>
<li><a href='http://stage.vambenepe.com/archives/293' rel='bookmark' title='Permanent Link: Oslo, blog posts and my crystal ball'>Oslo, blog posts and my crystal ball</a></li>
<li><a href='http://stage.vambenepe.com/archives/420' rel='bookmark' title='Permanent Link: First in-depth look at Microsoft&#8217;s Oslo and the &#8220;M&#8221; modeling language'>First in-depth look at Microsoft&#8217;s Oslo and the &#8220;M&#8221; modeling language</a></li>
<li><a href='http://stage.vambenepe.com/archives/1096' rel='bookmark' title='Permanent Link: Desirable technical characteristics of PaaS'>Desirable technical characteristics of PaaS</a></li>
<li><a href='http://stage.vambenepe.com/archives/1440' rel='bookmark' title='Permanent Link: PaaS portability challenges and the VMforce example'>PaaS portability challenges and the VMforce example</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1173/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>REST in practice for IT and Cloud management (part 3: wrap-up)</title>
		<link>http://stage.vambenepe.com/archives/1161</link>
		<comments>http://stage.vambenepe.com/archives/1161#comments</comments>
		<pubDate>Thu, 10 Dec 2009 10:14:26 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Semantic tech]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1161</guid>
		<description><![CDATA[[Preface: a few months ago I shared some thoughts about how REST was (or could) be applied to IT and Cloud management. Part 1 was a comparison of the RESTful aspects of four well-known IaaS Cloud APIs and part 2 was an analysis of how REST applies to configuration management. Both of these entries received [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/951' rel='bookmark' title='Permanent Link: Toolkits to wrap and bridge Cloud management protocols'>Toolkits to wrap and bridge Cloud management protocols</a></li>
<li><a href='http://stage.vambenepe.com/archives/1300' rel='bookmark' title='Permanent Link: Square peg, REST hole'>Square peg, REST hole</a></li>
<li><a href='http://stage.vambenepe.com/archives/447' rel='bookmark' title='Permanent Link: Who said WS-Transfer is for REST?'>Who said WS-Transfer is for REST?</a></li>
<li><a href='http://stage.vambenepe.com/archives/700' rel='bookmark' title='Permanent Link: A post-mortem on the previous IT management revolution'>A post-mortem on the previous IT management revolution</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>[Preface: a few months ago I shared some thoughts about how REST was (or could) be applied to IT and Cloud management. <a href="http://stage.vambenepe.com/archives/863">Part 1</a> was a comparison of the RESTful aspects of four well-known IaaS Cloud APIs and <a href="http://stage.vambenepe.com/archives/894">part 2</a> was an analysis of how REST applies to configuration management. Both of these entries received well-informed reader comments BTW, so if you read the posts but didn't come back for the comments you really owe it to yourself to do so now. At the time, I jotted down thoughts for subsequent entries in this series, but I never got around to posting them. Since the topic seems to be getting a lot of attention these days (especially in DMTF) I decided to go back to these notes and see if I could extract a few practical recommendations in the form of a wrap-up.]</p>
<p>The findings listed below should be relevant whether your protocol is trying to be truly RESTful, just HTTP-centric or even <a href="http://stage.vambenepe.com/archives/308">zen-SOAPy</a>. Many of the issues that arise when creating a protocol that maps well to IT management use cases should transcend these variations and that&#8217;s what I try to cover.</p>
<p><strong>Finding #1: Relationships (links) are first-class entities (a.k.a. &#8220;hypermedia&#8221;)<br />
</strong></p>
<p>The clear conclusion of both part 1 and part 2 was that the most relevant part of REST for IT and Cloud management is the use of hypermedia. IT management enjoys a head start on this compared to other domains, because its models are already rich in explicit relationships (e.g. CIM associations), as opposed to other business domains in which relationships are more implicit (to the end user at least). But REST teaches us that just having relationships in your model is not enough. They need to be exposed in a way that maps directly to the protocol, so that following a relationship is an infrastructure-level task, not an application-level task: passing an ID as a parameter for some domain-specific function is not it.</p>
<p>This doesn&#8217;t violate the rule to <a href="http://stage.vambenepe.com/archives/943">not mix the protocol and the model</a> because the alignment should take place in the metamodel. XML is famously weak in that respect, but that&#8217;s where Atom steps in, handling relationships in a generic way. Similarly, <a href="http://www.w3.org/TR/sml/#References">support for references</a> is, in addition to its accolade to Schematron, one of the main benefits of SML (extra kudos for apparently dropping the &#8220;EPR&#8221; reference scheme between <a href="http://www.w3.org/Submission/2007/SUBM-sml-20070321/#Reference_Schemes">submission</a> and <a href="http://www.w3.org/TR/sml/#Reference_Schemes">standardization</a>, in favor of just the &#8220;URI&#8221; scheme). Not to mention RDFa and friends. Or <a href="http://tools.ietf.org/html/draft-nottingham-http-link-header-06">HTTP Link headers</a> (<a href="http://bill.burkecentral.com/2009/10/14/link-headers-vs-custom-headers/">explained</a>) for link-challenged types.</p>
<p><strong>Finding #2: Put IDs on steroids</strong></p>
<p>There is little to argue about the value of clearly identifying things of interest and we didn&#8217;t wait for the Web to realize this. But it is also one of the most vexing and complex problems in many areas of computing (including IT management). Some of the long-standing questions include:</p>
<ul>
<li>Use an opaque ID (some random-looking string a characters) or an ID grounded in &#8220;unique&#8221; properties of the resource (if you can find any)?</li>
<li>At what point does a thing stop being the same (typical example: if I replace each hardware component of a server one after the other, at which point is it not the same server anymore? Does it make sense for the IT guys to slap an &#8220;asset id&#8221; sticker on the plastic box around it?)</li>
<li>How do you deal with reconciling two resources (with their own IDs) when you realize they represent the same thing?</li>
</ul>
<p>REST guidelines don&#8217;t help with these questions. There often is an assumption, which is true for many web apps, that the application &#8220;owns&#8221; the resource. My &#8220;inbox&#8221; only exists as a resource within the mail server application (e.g. Gmail or an Exchange server). Whatever URI GMail assigns for it is the URI for my inbox, period. Things are not as simple when the resources exist outside of any specific application: take a server, for example: the board management controller (or the hypervisor in the case of a VM), the OS management layer and the management agent installed on the machine all have claims to report on the machine (and therefore a need to identify it).</p>
<p>To some extent, Cloud computing simplifies many of these issues by providing controllers that &#8220;own&#8221; infrastructure resources and can authoritatively identify them. But it really is only pushing the problem to the next level of the stack.</p>
<p>Making the ID a URI doesn&#8217;t magically answer these questions. Though it helps in that it lets you leverage reconciliation mechanisms developed around URIs (such as &lt;atom:link rel=&#8221;alternate&#8221;&gt; or owl:sameAs). What REST does is add another constraint to this ID mechanism: Make the IDs dereferenceable URLs rather than just URIs.</p>
<p>I buy into this. A simple GET on a resource URI doesn&#8217;t solve everything but it has so many advantages that it should be attempted in all cases. And make this HTTP GET please (see finding #6).</p>
<p>In this adoption of GET, we just have to deal with small details such as:</p>
<ul>
<li>What URL do I use for resources that have more than one agent/controller?</li>
<li>How close to the resource do I point this URL? If it&#8217;s too close to it then it may change as the resource evolves (e.g. network changes) or be affected by the resource performance (e.g. a crashed machine or application that does not respond to its management API). If it&#8217;s removed from the resource, then I introduce a scope (e.g. one controller) within which the resource has to remain, which may cause scalability concerns (how many VMs can/should one controller handle, what if I want to migrate a VM across the ocean&#8230;).</li>
</ul>
<p>These are somewhat corner cases (and the more automation and virtualization you get, the fewer possible controllers you have per resource). While they need to be addressed, they don&#8217;t come close to negating the value of dereferenceable IDs. In addition, there are plenty of mechanisms to help with the issues above, from links in the representations (obviously) to <a href="http://www.rddl.org/">RDDL</a>-style lightweight directory to a last resort &#8220;give Saint Peter a call&#8221; mechanism (the <a href="http://www.ibm.com/developerworks/library/ws-resource/ws-wsrf.pdf">original WSRF proposal</a> had a sub-specification called WS-RenewableReferences that would let you ask for a new version of an expired EPR but it was never published &#8212; <a href="http://www.ogf.org/Public_Comment_Docs/Documents/Jan-2007/draft-ogf-ws-naming-spec-006.pdf">WS-Naming</a> in then-GGF also touched on that with its reference resolvers &#8212; showing once again that the base challenges don&#8217;t change as fast as technology flavors).</p>
<p>Implicit in this is the fact that URIs are vastly superior to EPRs. The latter were only just a band-aid on a broken system (which may have started back when WSDL 1.1 decided to define &#8220;ports&#8221; as message aggregators that can have only one URL) and it&#8217;s been more debilitating to SOAP than any other interoperability issue. Web services containers internalized this assumption to the point of providing a stunted dispatch mechanism that made it very hard to assign distinct URLs to resources.</p>
<p><strong>Finding #3: If REST told you to jump off a bridge, would you do it?</strong></p>
<p>Adherence to REST is not required to get the benefits I describe in this series. There is a lot to be inspired by in REST, but it shouldn&#8217;t be a religion. Sure, if you squint hard enough (and poke it here and there) you can call your interface RESTful, but why bother with the contortions if some parts are not so. As long as they don&#8217;t detract from the value of REST in the other parts. As in all conversions, the most fervent adepts of RPC will likely be tempted to become its most violent denunciators once they&#8217;re born again. This is a tired scenario that we don&#8217;t need to repeat. Don&#8217;t think of it as a conversion but as a new perspective.</p>
<p>Look at the &#8220;RESTful with many parameters?&#8221; comment thread on Stefan Tilkov&#8217;s excellent <a href="http://www.infoq.com/articles/rest-introduction">InfoQ introduction to REST</a>. It starts with some shared distaste for parameter-laden URIs and a search for a more RESTful approach. This gets suggested:</p>
<p style="padding-left: 30px;"><em>You could do a post on some URI like ./query/product_dep which would create a query resource. Now you &#8220;add&#8221; products to the query either by sending a product uri list with the initial post or by calling post on ./query/product_dep/{id}. With every post to the query resource the get on the query resource would change.</em></p>
<p>Yeah, you could. But how about an RPC-like query operation rather than having yet another resource lifecycle to manage just for the sake of being REST-compliant? And BTW, how do you think any sane consumer of your API is going to handle this? You guessed it, by packaging the POST/POST/GET/DELETE in one convenient client-side library function called &#8220;query&#8221;. As much as I criticize RPC-centric toolkits (see finding #5 below), it would be justified in this case.</p>
<p>Either you understand why/how REST principles benefit you or you don&#8217;t. If you do, then use this understanding to interpret the REST principles to best fit your needs. If you don&#8217;t, then no amount of CONTENT-TYPE-pixie-dust-spreading, GET-PUT-POST-DELETE-golden-rule-following and HATEOAS-magical-incantation-reciting will help you. That&#8217;s the whole point, for me at least, of this tree-part investigation. Stefan says essential the same, but in a converse way, in his article: <em>&#8220;there are often reasons why one would violate a REST constraint, simply because every constraint induces some trade-off that might not be acceptable in a particular situation. But often, REST constraints are violated due to a simple lack of understanding of their benefits.&#8221;</em> He says &#8220;understand why you violate&#8221; and I say &#8220;understand why you obey&#8221;. It is essentially the same (if you&#8217;re into stereotypes you can attribute the difference to his Germanic heritage and my Gallic blood).</p>
<p>Even worse than bending your interface to appear RESTful, don&#8217;t cherry-pick your use cases to only keep those that you feel you can properly address via REST, leaving the others aside. Conversely, don&#8217;t add requirements just because REST makes them easy to support (interesting how quickly &#8220;why do you force me to manage the lifecycle of yet another resource just to run a query&#8221; turns into &#8220;isn&#8217;t this great, you can share queries among users and you can handle long-running queries, I am sure we need this&#8221;).</p>
<p>This is not to say that you should not create a fully RESTful system. Just that you don&#8217;t necessarily have to and you can still get many benefits as long as you open your eyes to the cost/benefits trade-off involved.</p>
<p><strong>Finding #4: Learn humility from REST</strong></p>
<p>Beyond the technology, there is a vibe behind REST design. You can copy the technology and still miss it. I described it in 2005 as <a href="http://stage.vambenepe.com/archives/42">Humble Architecture</a>, and applied to SOA at the time. But it describes REST just as well:</p>
<p style="padding-left: 30px;"><em>More practically, this means that the key things to keep in mind when creating a service, is that you are not at the center of the universe, that you don’t know who is going to consume your service, that you don’t know what they are going to do with it, that you are not necessarily the one who can make the best use of the information you have access to and that you should be willing to share it with others openly&#8230;</em></p>
<p>The <a href="http://www.soa-manifesto.org/">SOA Manifesto</a> recently called this &#8220;intrinsic interoperability&#8221;.</p>
<p>In IT management terms, it means that you can RESTify your CMDB and your event console and your asset management software and your automation engine all you want, if you see your code as the ultimate consumer and the one that knows best, as the UI that users have to go through, the &#8220;ultimate source of truth&#8221; and the &#8220;manager of managers&#8221; then it doesn&#8217;t matter how well you use HTTP.</p>
<p><strong>Finding #5: Beware of tools bearing gifts</strong></p>
<p>To a large extent, the great thing about REST is how few tools there are to take it away from you. So you&#8217;re pretty much forced to understand what is going on in your contract as opposed to being kept ignorant by a wsdl2java type of toolkit. Sure, Java (and .NET) have improved in that regard, but really the cultural damage is done and the expectations have been set. Contrast this to <em>&#8220;the &#8216;router&#8217; is just a big case statement over URI-matching regexps&#8221;</em>, from Tim Bray&#8217;s <a href="http://www.tbray.org/ongoing/When/200x/2009/03/16/Sun-Cloud">post on the Sun Cloud API</a>, one of my main inspirations for this investigation.</p>
<p>REST is not inherently immune to the tool-controlling-the-hand syndrome. It&#8217;s just a matter of time until such tools try to make REST &#8220;accessible&#8221; to the &#8220;normal&#8221; developer (who can supposedly prevent thread deadlocks but not parse XML). Joe Gregorio <a href="http://bitworking.org/news/193/Do-we-need-WADL">warns about this</a> in the context of WADL (to summarize: WADL brings XSD which leads to code generation). Keep this in mind next time someone states that REST is more &#8220;loosely coupled&#8221; than SOAP. It&#8217;s <a href="http://wisdomofganesh.blogspot.com/2008/02/decoupling-interface-from.html">how you use it</a> that matters.</p>
<p><strong>Finding #6: Use screws, not glue, so we can peer inside and then close the lid again</strong></p>
<p>The &#8220;view source&#8221; option is how I and many others learned HTML. It unfortunately created a generation of HTML monsters who never went past <a href="http://www.w3.org/TR/REC-html32">version 3.2</a> (the marbled background makes me feel young again). But it also fueled the explosion of the Web. On-the-wire inspection through soapUI is what allowed me to perform <a href="http://stage.vambenepe.com/archives/844">this investigation</a> and report on it (WMI has allowed this for years, but WS-Management is what made it accessible and usable for anyone on any platform). This was, of course, in the context of SOAP which is also inspectable. Still, in that respect nothing beats plain HTTP which is why I recommend HTTP GET in finding #2 (make IDs dereferenceable) even though I don&#8217;t expect that the one-page-per-resource view is going to be the only way to access it in the finished product.</p>
<p>These (HTML source, on-the-wire XML and resource-description pages) rarely hit the human eye and yet their presence enables the development of the more commonly used views. Making it as easy as possible to see what is going on under the covers helps with learning, with debugging, with extending and with innovating. In the same way that 99% of web users don&#8217;t look at the HTML source (and 99.99% of them don&#8217;t see the HTTP requests) but the Web would not be what it is to them if this inspectability wasn&#8217;t been there to fuel its development.</p>
<p>Along the same line, make as few assumptions as possible about the consumers in your interfaces. Which, in practice, often means document what goes on the wire. WSDL/WADL can be used as a format, but they are at most one small component. Human-readable semantics are much more important.</p>
<p><strong>Finding #7: Nothing is free</strong></p>
<p>Part of what was so attractive about SOAP is everything you were going to get &#8220;for free&#8221; by using it. Message-level security (for all these use cases where your messages starts over HTTP, then hops onto a train, then get delivered by a carrier pigeon). Reliable messaging. Transactionality. Intermediaries (they were going to be a big deal in SOAP, as you can see in vestigial form today in the <a href="http://www.w3.org/TR/2007/REC-soap12-part1-20070427/#soapnodes">Nodes/Roles</a> left in the spec &#8211; also, do you remember <a href="http://msdn.microsoft.com/en-us/library/ms951249.aspx">WS-Routing</a>? I <a href="http://osdir.com/ml/windows.devel.soap.rp/2002-04/msg00000.html">do</a>.)</p>
<p>And it&#8217;s true that by now there is a body of specifications that support this as composable SOAP headers. But the lack of usage of these features contrasts with how often they were bandied in the early days of SOAP.</p>
<p>Well, I am detecting some of the same in the REST camp. How often have you heard about how REST enables caching? Or about how content types allows an ISP to compress images on the fly to speed up delivery over dial-up? Like in the SOAP case, these are real features and sometimes useful. It doesn&#8217;t mean that they are valuable to you. And if they are not, then don&#8217;t let them be used as justifications. Especially since they are not free. If caching doesn&#8217;t help me (because of low volume, because security considerations prevent a shared cache, etc) then its presence actually adds a cost to me, since I now have to worry whether something is cached or not and deal with ETags. Or I have to consistently remember to request the cache to be bypassed.</p>
<p><strong>Finding #8: Starting by sweeping you front door.</strong></p>
<p>Before you agonize about how RESTful your back-end management protocol is, how about you make sure that your management application (the user front-end) is a decent Web application? One with <a href="http://www.w3.org/Provider/Style/URI">cool URIs</a> , where the back button works, where bookmarks work, where the data is not hidden in some over-encompassing Flash/Silverlight thingy. Just saying.</p>
<p style="text-align: center;">***</p>
<p>Now for some questions still unanswered.</p>
<p><strong>Question #1: Is this a flee market?</strong></p>
<p>I am highly dubious of content negotiation and yet I can see many advantages to it. Mostly along the lines of finding #6: make it easy for people to look under the hood and get hold of the data. If you let them specify how they want to see the data, it&#8217;s obviously easier.</p>
<p>But there is no free lunch. Even if your infrastructure takes care of generating these different views for you (&#8220;no coding, just check the box&#8221;), you are expanding the surface of your contract. This means more documentation, more testing, more interoperability problems and more friction when time comes to modify the interface.</p>
<p>I don&#8217;t have enough experience with format negotiation to define the sweetspot of this practice. Is it one XML representation and one HTML, period (everything else get produced by the client by transforming the XML)? But is the XML Atom-wrapped or not? What about RDF? What about JSON? Not to forget that SOAP wrapper, how hard can it be to add. But soon enough we are in legacy hell.</p>
<p><strong>Question #2: Mime-types?</strong></p>
<p>The second part of <a href="http://bitworking.org/news/193/Do-we-need-WADL">Joe Gregorio&#8217;s WADL entry</a> is all about Mime types and I have a harder time following him there. For one thing, I am a bit puzzled by the different directions in which Mime types go at the same time. For example, we have image formats (e.g. &#8220;image/png&#8221;), packaging/compression formats (e.g. &#8220;application/zip&#8221;) and application formats (e.g. &#8220;application/vnd.oasis.opendocument.text&#8221; or &#8220;application/msword&#8221;). But what if I have a zip full of PNG images? And aren&#8217;t modern word processing formats basically a zip of XML files? If I don&#8217;t have the appropriate viewer, maybe I&#8217;d like them to be at least recognized as ZIP files. I don&#8217;t see support for such composition and taxonomy in these types.</p>
<p>And even within one type, things seem a bit messy in practice. Looking at the registered applications in the &#8220;options&#8221; menu of my Firefox browser, I see plenty of duplication:</p>
<ul>
<li>application/zip vs. application/x-zip-compressed</li>
<li>application/ms-powerpoint vs. application/vnd.ms-powerpoint</li>
<li>application/sdp vs. application/x-sdp</li>
<li>audio/mpeg vs. audio/x-mpeg</li>
<li>video/x-ms-asf vs. video/x-ms-asf-plugin</li>
</ul>
<p>I also wonder at what level of depth I want to take my Mime types. Sure I can use Atom as a package but if the items I am passing around happen to be CIM classes (serialized to XML), doesn&#8217;t it make sense to advertise this? And within these classes, can I let you know which domain (e.g. which namespace) my resources are in (virtual machines versus support tickets)?</p>
<p>These questions may simply be a reflection of my lack of maturity in the fine art of using Mime types as part of protocol design. My experience with them is more of the &#8220;find the type that works through trial and error and then leave it alone&#8221; kind.</p>
<p>[Side note: the first time I had to pay attention to Mime types was back in 1995/1996, playing with non-parsed headers and the multipart/x-mixed-replace type to bring some dynamism to web pages (that was before JavaScript or even animated GIFs). The site is still up, but the admins have messed up the Apache config so that the CGIs aren't executed anymore but return the Python code. So, here are some early Python experiments from yours truly: <a href="http://people.via.ecp.fr/~vbp/cgi-bin/test/nph-push.py">this script</a> was a "pushed" countdown and <a href="http://people.via.ecp.fr/~vbp/cgi-bin/test/serverpushvbp/nph-vbp.py">this one</a> was a "pushed" image animation. Cool stuff at the time, though not in a "get a date" kind of way.]</p>
<p>On the other hand, I very much agree with Joe&#8217;s point that &#8220;less is more&#8221;, i.e. that by not dictating how the semantics of a Mime type are defined the system forces you to think about the proper way to define them (e.g. an English-language RFC). As opposed to WSDL/XSD which gives the impression that once your XML validator turns green you&#8217;re done describing your interface. These syntactic validations are a complement at best, and usually not a very useful one (see <a href="http://stage.vambenepe.com/archives/100">&#8220;fat-bottomed specs&#8221;</a>).</p>
<p>In <a href="http://stage.vambenepe.com/archives/894#comment-81750">comments on previous posts</a>, Stu Charlton also emphasizes the value that Mime types bring. <em>&#8220;Hypermedia advocates exposing a variety of links for such state-transitions, along with potentially unique media types to describe interfaces to those transitions.&#8221;</em> I get the hypermedia concept, the <a href="http://www.subbu.org/blog/2008/10/explaining-state-in-hateoas">HATEOAS approach</a> and its very practical <a href="http://blogs.sun.com/craigmcc/entry/why_hateoas">benefits</a>. But I am still dubious about the role of Mime types in achieving them and I am not the only one with such <a href="http://soundadvice.id.au/blog/2009/08/16/#mimeLimitation">qualms</a>. I have too much respect for Joe and Stu to dismiss it entirely, but until I get an example that makes it &#8220;click&#8221; in practice for me I won&#8217;t sweat about Mime types too much.</p>
<p><strong>Question #3: Riding the Zeitgeist?</strong></p>
<p>That&#8217;s a practical question rather than a technical one, but as a protocol creator/promoter you are going to have to decide whether you market it as &#8220;RESTful&#8221;. If I have learned one thing in my past involvement with standards it is that marketing/positioning/impressions matter for standards as much as for products. To a large extent, for Clouds, <a href="http://www.w3.org/DesignIssues/LinkedData.html">Linked Data</a> is a more appropriate label. But that provides little marketing/credibility humph with CIOs compared to REST (and less buzzword-compliance for the tech press). So maybe you want to write your spec based on Linked Data and then market it with a REST ribbon (the two are very compatible anyway). Just keep in mind that REST is the obvious choice for protocols in 2009 in the same way that SOAP was a few years ago.</p>
<p>Of course this is not an issue if you specification is truly RESTful. But none of the current Cloud &#8220;RESTful&#8221; APIs is, and I don&#8217;t expect this to change. At least if you go by Roy Fielding&#8217;s <a href="http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven">definition</a> (or Paul&#8217;s handy <a href="http://blog.whatfettle.com/2008/10/21/what-i-believe-roy-said/">summary</a>):</p>
<p style="padding-left: 30px;"><em>A REST API must not define fixed resource names or hierarchies (an obvious coupling of client and server). Servers must have the freedom to control their own namespace. Instead, allow servers to instruct clients on how to construct appropriate URIs, such as is done in HTML forms and URI templates, by defining those instructions within media types and link relations. [Failure here implies that clients are assuming a resource structure due to out-of band information, such as a domain-specific standard, which is the data-oriented equivalent to RPC's functional coupling].</em></p>
<p>And (in <a href="http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-746">a comment</a>) Mark Baker adds:</p>
<p style="padding-left: 30px;"><em>I’ve reviewed lots of “REST APIs”, many of them privately for clients, and a common theme I’ve noticed is that most folks coming from a CORBA/DCE/DCOM/WS-* background, despite all the REST knowledge I’ve implanted into their heads, still cannot get away from the need to “specify the interface”. Sometimes this manifests itself through predefined relationships between resources, specifying URI structure, or listing the possible response codes received from different resources in response to the standard 4 methods (usually a combination of all those). I expect it’s just habit. But a second round of harping on the uniform interface – that every service has the same interface and so any service-specific interface specification only serves to increase coupling – sets them straight.</em></p>
<p>So the question of whether you want to market yourself as RESTful (rather than just as &#8220;inspired by the proper use of HTTP illustrated by REST&#8221;) is relevant, if only because you may find the father of REST throwing (POSTing?) tomatoes at you. There is always a risk in wearing clothes that look good but don&#8217;t quite fit you. The worst time for your pants to fall off is when you suddenly have to start running.</p>
<p>For more on this, refer to Ted Neward&#8217;s excellent <a href="http://blogs.tedneward.com/2008/11/07/REST+HTTP.aspx">Roy decoder ring</a> where he not only explains what Roy means but more importantly clarifies that &#8220;if you&#8217;re not doing REST, it doesn&#8217;t mean that your API sucks&#8221; (to which I&#8217;d add that it is actually more likely to suck if you try to ape REST than if you allow yourself to be loosely inspired by it).</p>
<p style="text-align: center;">***</p>
<p><strong>Wrapping up the wrap-up</strong></p>
<p>There is one key topic that I had originally included in this wrap-up but decided to remove: extensibility. Mark Hapner brings it up in a <a href="http://stage.vambenepe.com/archives/863#comment-79599">comment</a> on a previous post:</p>
<p style="padding-left: 30px;"><em>It is interesting to note that HTML does not provide namespaces but this hasn’t limited its capabilities. The reason is that links are a very effective mechanism for composing resources. Rather than composition via complicated ‘embedding’ mechanisms such as namespaces, the web composes resources via links. If HTML hadn’t provided open-ended, embeddable links there would be no web.</em></p>
<p>I am the kind of guy who would have namespace-qualified his children when naming them (had my wife not stepped in) so I don&#8217;t necessarily see &#8220;extension via links&#8221; as a negation of the need for namespaces (best example: RDF). The whole topic of embedding versus linking is a great one but this post doesn&#8217;t need another thousand words and the &#8220;REST in practice&#8221; umbrella is not necessarily the best one for this discussion. So I hereby conclude my &#8220;REST in practice for IT and Cloud management&#8221; series, with the intent to eventually start a &#8220;Linked Data in practice for IT and Cloud management&#8221; series in which extensibility will be properly handled. And we can also talk about querying (conspicuously absent from Cloud APIs, unless <a href="http://www.dmtf.org/standards/cmdbf/">CMDBf</a> is now a Cloud API) and versioning. As a teaser for the application of Linked Data to IT/Cloud, I will leave you with what <a href="http://googleresearch.blogspot.com/2009/04/cloud-computing-and-internet.html">Vint Cerf has to say</a>.</p>
<p>[UPDATED 2010/1/27: I still haven't written the promised "Linked Data in practice for IT and Cloud management" post, but this <a href="http://www.jenitennison.com/blog/node/140">explanation of the usage of Linked Data for data.gov.uk</a> pretty much says it all. I may still write a post describing how what Jeni says about government data applies to Cloud management APIs, but it's almost too obvious to bother. Actually, there may be reasons why Cloud management benefits even more from Linked Data than UK government data, so it may still be worth a post. At some point. When I convince myself that it may influence things rather than be background noise.]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/951' rel='bookmark' title='Permanent Link: Toolkits to wrap and bridge Cloud management protocols'>Toolkits to wrap and bridge Cloud management protocols</a></li>
<li><a href='http://stage.vambenepe.com/archives/1300' rel='bookmark' title='Permanent Link: Square peg, REST hole'>Square peg, REST hole</a></li>
<li><a href='http://stage.vambenepe.com/archives/447' rel='bookmark' title='Permanent Link: Who said WS-Transfer is for REST?'>Who said WS-Transfer is for REST?</a></li>
<li><a href='http://stage.vambenepe.com/archives/700' rel='bookmark' title='Permanent Link: A post-mortem on the previous IT management revolution'>A post-mortem on the previous IT management revolution</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1161/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF</title>
		<link>http://stage.vambenepe.com/archives/1108</link>
		<comments>http://stage.vambenepe.com/archives/1108#comments</comments>
		<pubDate>Thu, 19 Nov 2009 17:33:30 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DMTF]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1108</guid>
		<description><![CDATA[Things are heating up in the DMTF Cloud incubator. Back in September, VMWare submitted its vCloud API (or rather a &#8220;reader&#8217;s digest&#8221; version of it) to the group. Last week, the group released a white paper titled &#8220;Interoperable Clouds&#8221;. And a second submission, from Fujitsu, was made last week and publicly announced today.
The Fujitsu submission [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1295' rel='bookmark' title='Permanent Link: HP has submitted a specification to the DMTF Cloud incubator'>HP has submitted a specification to the DMTF Cloud incubator</a></li>
<li><a href='http://stage.vambenepe.com/archives/936' rel='bookmark' title='Permanent Link: VMWare publishes (and submits) vCloud API'>VMWare publishes (and submits) vCloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/667' rel='bookmark' title='Permanent Link: Open Cloud Manifesto, circa 2004'>Open Cloud Manifesto, circa 2004</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Things are heating up in the <a href="http://www.dmtf.org/about/cloud-incubator">DMTF Cloud incubator</a>. Back in September, VMWare <a href="http://www.vmware.com/company/news/releases/vcloud-api-vmworld09.html">submitted</a> its <a href="http://communities.vmware.com/community/developer/forums/vcloudapi">vCloud API</a> (or rather <a href="http://communities.vmware.com/static/vcloudapi/vCloud_API_Specification_v0.8.pdf">a &#8220;reader&#8217;s digest&#8221; version of it</a>) to the group. Last week, the group released a <a href="http://www.dmtf.org/about/cloud-incubator/DSP_IS0101_1.0.0.pdf">white paper</a> titled &#8220;Interoperable Clouds&#8221;. And a second submission, from Fujitsu, was made last week and publicly <a href="http://www.fujitsu.com/global/news/pr/archives/month/2009/20091119-01.html">announced</a> today.</p>
<p>The Fujitsu submission is called an &#8220;API design&#8221;. What this means is that it doesn&#8217;t tell you anything about what things look like on the wire. It could materialize as another &#8220;XML over HTTP&#8221; protocol (with or without SOAP wrapper), but it could just as well be implemented as a binary RPC protocol. It&#8217;s really more of an esquisse of a resource model than a remote API. The only invocation-related aspect of the document is that it defines explicit operations on various resources (though not their input and outputs). This suggest that the most obvious mapping would be to some XML/HTTP RPC protocol (SOAPy or not). In that sense, it stands out a bit from the more recent Cloud API proposals that take a &#8220;RESTful&#8221; rather than RPC approach. But in these days of enthusiastic REST-washing I am pretty sure a determined designer could produce a RESTful-looking (but contorted) set of resources that would channel the operations in the specification as HTTP-like verbs on these resources.</p>
<p>Since there are few protocol aspects to this &#8220;API design&#8221;, if we are to compare it to other &#8220;Cloud APIs&#8221;, it&#8217;s really the resource model that&#8217;s worth evaluating. The obvious comparison is to the EC2 model as it provides a pretty similar set of infrastructure resources (it&#8217;s entirely focused on the IaaS layer). It lacks EC2 capabilities around availability, security and monitoring. But it adds to the EC2 resource model the notions of VDC (&#8220;virtual data center&#8221;, a container of IaaS resources), VSYS (see below) and a lightly-defined EFM (Extended Function Module) concept which intends to encompass all kinds of network/security appliances (and presumably makes up for the lack of security groups).</p>
<p>The heart of the specification is the VSYS and its accompanying VSYS Descriptor. We are encouraged to think of the VSYS Descriptor as an extension of OVF that lets you specify this kind of environment:</p>
<div id="attachment_1111" class="wp-caption aligncenter" style="width: 727px"><img class="size-full wp-image-1111" title="VSYS Descriptor" src="http://stage.vambenepe.com/wp-content/uploads/fujitsu-vsys-descriptor.png" alt="Example content for a VSYS Descriptor" width="717" height="443" /><p class="wp-caption-text">Example content for a VSYS Descriptor</p></div>
<p>By forcing the initial VSYS instance to be based on a VSYS Descriptor, but then allowing the VSYS to drift away from the descriptor via direct management actions, the specification takes a middle-of-the-road approach to the &#8220;model-based versus procedural&#8221; debate. Disciples of the procedural approach will presumably start from a very generic and unconstrained VSYS Descriptor and, from there, script their way to happiness. Model geeks will look for a way to keep the system configuration in sync with a VSYS Descriptor.</p>
<p>How this will work is completely undefined. There is supposed to be a getVSYSConfiguration() operation which <em>&#8220;returns the configuration information on the VSYS&#8221;</em> but there is no format/content proposed for the response payload. Is this supposed to return every single config file, every setting (OS, MW, application) on all the servers in the VSYS? Surely not. But what then is it supposed to return? The specification defines five VSYS attributes (VSYSID, creator, createTime, description and baseDescriptor) so I know what getSYSAttributes() returns. But leaving getVSYSConfiguration() undefined is like handing someone an airplane maintenance manual that simply reads <em>&#8220;put the right part in the right place&#8221;</em>. A similar feature is also left as an exercise to the reader in section that sketches an &#8220;external configuration service&#8221;. We are provided with a URL convention to address the service, but zero information about the format and content of the configuration instructions provided to the VServer.</p>
<p>EC2 has a keypair access mechanism for Linux instances and a clumsy password-retrieval system for Windows instances. The Fujitsu proposal adopts the lowest common denominator (actually the greatest common divisor, but that&#8217;s a lost rhetorical cause): random password generation/retrieval for everyone.</p>
<p>I also noticed the statement that a VServer must be <em>&#8220;implemented as a virtual machine&#8221;</em> which is an <a href="http://stage.vambenepe.com/archives/976">unnecessary constraint/assumption</a>. The opposite statement is later made for EFMs, which <em>&#8220;can be implemented in various ways (e.g. run on virtual machines or not)&#8221;</em>, so I don&#8217;t want to read too much into the &#8220;hypervisor-required&#8221; VServer statement which probably just needs an editorial clean-up.</p>
<p>From a political perspective this specification looks more like a case of <em>&#8220;can I play with you? I brought some marbles&#8221;</em> than a more aggressive <em>&#8220;listen everybody, we&#8217;re playing soccer now and I am the captain&#8221;</em>. In other words, this may not be as much an attempt to shape the outcome of the incubator as much as to contribute to its work and position Fujitsu as a respected member whose participation needs to be acknowledged.</p>
<p>While this is an alternative submission to the vCloud API, I don&#8217;t think VMWare will feel very challenged by it. The specification&#8217;s core (VSYS Descriptor) intends to build on OVF, which should be music to VMWare&#8217;s ears (it&#8217;s <a href="http://stage.vambenepe.com/archives/943">the model, not the protocol</a>, which is strategic). And it is light enough on technical details that it will be pretty easy for vCloud to claim that it, indeed, aligns with the intent of this &#8220;design&#8221;.</p>
<p>All in all, it is good to see companies take the time to write down what they expect out of the DMTF work. And it&#8217;s refreshing to see genuine single-company contributions rather than pre-negotiated documents by a clique. Whether they look more like implementable specifications of position paper, they all provide good input to the DMTF Cloud incubator.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1295' rel='bookmark' title='Permanent Link: HP has submitted a specification to the DMTF Cloud incubator'>HP has submitted a specification to the DMTF Cloud incubator</a></li>
<li><a href='http://stage.vambenepe.com/archives/936' rel='bookmark' title='Permanent Link: VMWare publishes (and submits) vCloud API'>VMWare publishes (and submits) vCloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/667' rel='bookmark' title='Permanent Link: Open Cloud Manifesto, circa 2004'>Open Cloud Manifesto, circa 2004</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1108/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>OWL news you can use</title>
		<link>http://stage.vambenepe.com/archives/1053</link>
		<comments>http://stage.vambenepe.com/archives/1053#comments</comments>
		<pubDate>Wed, 28 Oct 2009 08:25:38 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[Semantic tech]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1053</guid>
		<description><![CDATA[The W3C released OWL 2 today. Most readers of this blog are IT management people (whether they call it &#8220;cloud computing&#8221; or &#8220;boring old system management&#8221;) and don&#8217;t follow RDF, OWL, SPARQL etc too closely (if at all). Yet there is a lot of potential value in using these technologies for IT management, so I [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/496' rel='bookmark' title='Permanent Link: A new SPIN on enriching a model with domain knowledge (constraints and inferences)'>A new SPIN on enriching a model with domain knowledge (constraints and inferences)</a></li>
<li><a href='http://stage.vambenepe.com/archives/246' rel='bookmark' title='Permanent Link: All I know about RDF/OWL I learned in preschool'>All I know about RDF/OWL I learned in preschool</a></li>
<li><a href='http://stage.vambenepe.com/archives/212' rel='bookmark' title='Permanent Link: Mapping CIM associations to CMDBf relationships'>Mapping CIM associations to CMDBf relationships</a></li>
<li><a href='http://stage.vambenepe.com/archives/372' rel='bookmark' title='Permanent Link: Oslo name clarification'>Oslo name clarification</a></li>
<li><a href='http://stage.vambenepe.com/archives/199' rel='bookmark' title='Permanent Link: Oracle Enterprise Manager in the news'>Oracle Enterprise Manager in the news</a></li>
<li><a href='http://stage.vambenepe.com/archives/175' rel='bookmark' title='Permanent Link: Oracle semantic technologies resources'>Oracle semantic technologies resources</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The W3C <a href="http://www.w3.org/News/2009#entry-8640">released OWL 2</a> today. Most readers of this blog are IT management people (whether they call it &#8220;cloud computing&#8221; or &#8220;boring old system management&#8221;) and don&#8217;t follow RDF, OWL, SPARQL etc too closely (if at all). Yet there is a lot of potential value in using these technologies for IT management, so I thought it might be helpful to provide some practical resources on the topic. I have selected articles that cover the special (some may say &#8220;twisted&#8221;) approach of using OWL and its friends for validation rather than just inference, as this use case is very relevant to IT management.</p>
<ul>
<li>Dave Reynolds&#8217; <a href="http://www.amberdown.net/2009/10/owl2-for-rdf-vocabs/">overview of OWL2</a>, with a focus on vocabularies and validation.</li>
<li>A good <a href="http://clarkparsia.com/weblog/category/semweb/owl/pellet/integrity-constraints/">series of articles</a> from Clark&amp;Parsia, starting with <a href="http://clarkparsia.com/weblog/2009/02/11/integrity-constraints-for-owl/">this one</a>.</li>
<li><a href="http://spinrdf.org/">SPIN</a> (which I <a href="http://stage.vambenepe.com/archives/496">blogged about before</a>), from the TopQuadrant guys, who produce the TopBraid tool (their <a href="http://www.topquadrant.com/products/TB_Composer.html#free">free edition</a> is a great way to get started using Semantic Web technologies).</li>
</ul>
<p>Of course you can also go to the W3C standard itself, starting with the <a href="http://www.w3.org/TR/owl2-overview/">overview of OWL 2</a>.</p>
<p>Just so you don&#8217;t feel lonely if you decide to explore this path, have a look at <a href="http://www.elastra.com/technology">Elastra&#8217;s sexy technology stack</a>. <a href="http://www.elastra.com/sites/default/files/ecml_2009_03.ttl">ECML</a>, <a href="http://www.elastra.com/sites/default/files/edml_2009_03.ttl">EDML</a> and <a href="http://www.elastra.com/sites/default/files/emml_2009_03.ttl">EMML</a> are all defined as OWL ontologies.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/496' rel='bookmark' title='Permanent Link: A new SPIN on enriching a model with domain knowledge (constraints and inferences)'>A new SPIN on enriching a model with domain knowledge (constraints and inferences)</a></li>
<li><a href='http://stage.vambenepe.com/archives/246' rel='bookmark' title='Permanent Link: All I know about RDF/OWL I learned in preschool'>All I know about RDF/OWL I learned in preschool</a></li>
<li><a href='http://stage.vambenepe.com/archives/212' rel='bookmark' title='Permanent Link: Mapping CIM associations to CMDBf relationships'>Mapping CIM associations to CMDBf relationships</a></li>
<li><a href='http://stage.vambenepe.com/archives/372' rel='bookmark' title='Permanent Link: Oslo name clarification'>Oslo name clarification</a></li>
<li><a href='http://stage.vambenepe.com/archives/199' rel='bookmark' title='Permanent Link: Oracle Enterprise Manager in the news'>Oracle Enterprise Manager in the news</a></li>
<li><a href='http://stage.vambenepe.com/archives/175' rel='bookmark' title='Permanent Link: Oracle semantic technologies resources'>Oracle semantic technologies resources</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1053/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Missing out on the OCCI fun</title>
		<link>http://stage.vambenepe.com/archives/1042</link>
		<comments>http://stage.vambenepe.com/archives/1042#comments</comments>
		<pubDate>Wed, 21 Oct 2009 07:30:58 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[SOAP header]]></category>
		<category><![CDATA[SOAP processing model]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1042</guid>
		<description><![CDATA[As a recovering &#8220;design by committee&#8221; offender I have to be careful when lurking near standards groups mailing list, for fear my instincts may take over and I might join the fray. But tonight a few tweets containing alluring words like &#8220;header&#8221; and &#8220;metadata&#8221; got the better of me and sent me plowing through a [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1504' rel='bookmark' title='Permanent Link: Dear Cloud API, your fault line is showing'>Dear Cloud API, your fault line is showing</a></li>
<li><a href='http://stage.vambenepe.com/archives/1261' rel='bookmark' title='Permanent Link: Can Cloud standards be saved?'>Can Cloud standards be saved?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1284' rel='bookmark' title='Permanent Link: Waiting for events (in Cloud APIs)'>Waiting for events (in Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/559' rel='bookmark' title='Permanent Link: Is notification wrapping getting a bum rap?'>Is notification wrapping getting a bum rap?</a></li>
<li><a href='http://stage.vambenepe.com/archives/308' rel='bookmark' title='Permanent Link: CMIS, APP, Zen-SOAP and WS-KitchenSink: some data points'>CMIS, APP, Zen-SOAP and WS-KitchenSink: some data points</a></li>
<li><a href='http://stage.vambenepe.com/archives/194' rel='bookmark' title='Permanent Link: Unhealthy fun with IP aspects of optionality in specifications'>Unhealthy fun with IP aspects of optionality in specifications</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>As a recovering &#8220;design by committee&#8221; offender I have to be careful when lurking near standards groups mailing list, for fear my instincts may take over and I might join the fray. But tonight a few tweets containing <a href="http://twitter.com/samj/status/5037202759">alluring words like &#8220;header&#8221; and &#8220;metadata&#8221;</a> got the better of me and sent me plowing through a long and <a href="http://www.ogf.org/pipermail/occi-wg/2009-October/thread.html#1315">heated discussion thread</a> in the OGF OCCI mailing list archive.</p>
<p>I found the discussion fascinating, both from a technical perspective and a theatrical perspective.</p>
<p>Technically, the discussion is about whether to use HTTP headers to carry &#8220;metadata&#8221; (by which I think they  mean everything that&#8217;s not part of the business payload, e.g. an OVF document or other domain-specific payload). I don&#8217;t have enough context on the specific proposal to care to express my opinion on its merits, but what I find very interesting is that this shines another light on the age-old issue of how to carry non-payload info when designing a protocol. Whatever you call these data fields, you have to specify (by decreasing order of architectural importance):</p>
<ul>
<li>How you deal with unknown fields: mustUnderstand or mustIgnore semantics.</li>
<li>How you keep them apart (prevent two people defining fields by the same name, telling different versions apart).</li>
<li>How you parse their content (and are they all parsed in the same manner or is it specific to each field).</li>
<li>Where they go.</li>
</ul>
<p>SOAP provides one set of answers.</p>
<ul>
<li>You can tag each one with a mustUnderstand attribute to force any consumer who doesn&#8217;t understand them to fault.</li>
<li>They are namespace-qualified.</li>
<li>They are XML-formatted.</li>
<li>They go at the top of the XML doc, in a section called the SOAP header.</li>
</ul>
<p>You may agree or not with the approach SOAP took, but it&#8217;s important to realize that at its core SOAP is just this: the answer (in the form of the SOAP processing model) to these simple questions (here is <a href="http://stage.vambenepe.com/archives/118">more about the SOAP processing model and the abuses it has suffered</a> if you&#8217;re interested). WSDL is something else. The WS-* stack is also something else. It&#8217;s probably too late to rescue SOAP from these associations, but I wanted to point this out for the record.</p>
<p>Whatever you answer to the four &#8220;non-payload data fields&#8221; questions above, there are many practical concerns that you have to consider when validating your proposal. They may not all be relevant to your use case, but then explicitly decide that they are not. They are things like:</p>
<ul>
<li>Performance</li>
<li>Ability to process in a stream-based system</li>
<li>Ease of development (tool support, runtime accessibility&#8230;)</li>
<li>Ease of debugging</li>
<li>Field length limitations</li>
<li>Security</li>
<li>Ability to structure the data in the fields</li>
<li>Ability to use different transports (way overplayed in SOAP, but not totally irrelevant either)</li>
<li>Ability to survive intermediaries / proxies</li>
</ul>
<p>Now leaving the technology aside, this OCCI email thread is also interesting from a human and organizational perspective. Another take on the good old <a href="http://stage.vambenepe.com/archives/96">Commedia dell standarte</a>. Again, I don&#8217;t have enough context in the history of this specific group to have an opinion about the dynamics. I&#8217;ll just say that things are a bit more &#8220;free-flowing&#8221; than when people like my friend Dave Snelling were in charge in OGF. In any case, it&#8217;s great that the debate is taking place in public. If it had been a closed discussion they probably would not have benefited from Tim Bray dropping in to share his experience. On the plus side, they would have avoided my pontifications&#8230;</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1504' rel='bookmark' title='Permanent Link: Dear Cloud API, your fault line is showing'>Dear Cloud API, your fault line is showing</a></li>
<li><a href='http://stage.vambenepe.com/archives/1261' rel='bookmark' title='Permanent Link: Can Cloud standards be saved?'>Can Cloud standards be saved?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1284' rel='bookmark' title='Permanent Link: Waiting for events (in Cloud APIs)'>Waiting for events (in Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/559' rel='bookmark' title='Permanent Link: Is notification wrapping getting a bum rap?'>Is notification wrapping getting a bum rap?</a></li>
<li><a href='http://stage.vambenepe.com/archives/308' rel='bookmark' title='Permanent Link: CMIS, APP, Zen-SOAP and WS-KitchenSink: some data points'>CMIS, APP, Zen-SOAP and WS-KitchenSink: some data points</a></li>
<li><a href='http://stage.vambenepe.com/archives/194' rel='bookmark' title='Permanent Link: Unhealthy fun with IP aspects of optionality in specifications'>Unhealthy fun with IP aspects of optionality in specifications</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1042/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The future (2006 version), has arrived</title>
		<link>http://stage.vambenepe.com/archives/1007</link>
		<comments>http://stage.vambenepe.com/archives/1007#comments</comments>
		<pubDate>Fri, 25 Sep 2009 06:47:53 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[CMDB]]></category>
		<category><![CDATA[CMDB Federation]]></category>
		<category><![CDATA[CMDBf]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Desired state]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[SML]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[WS-Management]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1007</guid>
		<description><![CDATA[Remember 2006? Things were starting to fall into place for IT management integration and automation:

 SDD was already on its way to cleanly describe/package/manage the lifecycle of simple and composite applications alike,
the first version of SML came out to capture all the relevant constraints of complex and composite systems and open the door to &#8220;desired-state [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/328' rel='bookmark' title='Permanent Link: Last call for SML and SML-IF'>Last call for SML and SML-IF</a></li>
<li><a href='http://stage.vambenepe.com/archives/1383' rel='bookmark' title='Permanent Link: Enterprise application integration patterns for IT management: a blast from the past or from the future?'>Enterprise application integration patterns for IT management: a blast from the past or from the future?</a></li>
<li><a href='http://stage.vambenepe.com/archives/700' rel='bookmark' title='Permanent Link: A post-mortem on the previous IT management revolution'>A post-mortem on the previous IT management revolution</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/128' rel='bookmark' title='Permanent Link: Review of the CMDBf specification version 1.0'>Review of the CMDBf specification version 1.0</a></li>
<li><a href='http://stage.vambenepe.com/archives/582' rel='bookmark' title='Permanent Link: CMDBf is a lot more and a lot less than you think'>CMDBf is a lot more and a lot less than you think</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Remember 2006? Things were starting to fall into place for IT management integration and automation:</p>
<ul>
<li> SDD was already <a href="http://www.businesswire.com/portal/site/google/index.jsp?ndmViewId=news_view&amp;newsId=20050517005642&amp;newsLang=en">on its way</a> to cleanly describe/package/manage the lifecycle of simple and composite applications alike,</li>
<li>the first version of SML <a href="http://stage.vambenepe.com/archives/21">came out</a> to capture all the relevant constraints of complex and composite systems and open the door to &#8220;desired-state management&#8221;,</li>
<li>the CMDBf effort <a href="http://stage.vambenepe.com/archives/32">was started</a> to seamlessly integrate all sources of configuration and provide a bird-eye view of your entire IT infrastructure, and</li>
<li>the WSDM/WS-Management convergence/reconciliation was <a href="http://stage.vambenepe.com/archives/35">announced</a> and promised to free management consoles from supporting many resource discovery, collection and control mechanisms and from having platform/library dependencies between the manager and its targets.</li>
</ul>
<p>It looked like we were a year or two from standardization on all these and another year or two from shipping implementations. Things were looking good.</p>
<p>Good news: the schedule was respected. SDD, SML and CMDBf are now all standards (at OASIS, W3C and DMTF respectively). And today the Eclipse COSMOS project <a href="http://dev.eclipse.org/blogs/cosmos/2009/09/24/cosmos-11-is-alive/">announced</a> the release of COSMOS 1.1 which <a href="http://wiki.eclipse.org/COSMOS_1.1GA_Announce">implements them all</a>. The WSDM/WS-Management convergence is the only one that didn&#8217;t quite go according to the plan but it is about to come out as a standard too (in a <a href="http://www.w3.org/2002/ws/ra/">pared-down form</a>).</p>
<p>Bad news: nobody cares. We&#8217;ve moved on to &#8220;private clouds&#8221;.</p>
<p>Having been involved with these specifications in various degrees (a little bit on SDD, a fair amount on SML and a lot on CMDBf and WSDM/WS-Management) I am not as detached as my sarcastic tone may suggest. But as they say in action movies, &#8220;don&#8217;t let sentiments get in the way of the mission&#8221;.</p>
<p>There is still a chance to reuse parts of this stack (e.g. the CMDBf query language) and there are lessons to learn from our errors. The over-promising, the technical misjudgments, the political bickering, the lack of concrete customer validation, etc. To some extent this work was also victim of collateral damages from the excesses of WS-* (I am looking at you WS-Addressing). We also failed to notice the rise of the hypervisor in our peripheral vision.</p>
<p>I tried to capture some important lessons in this <a href="http://stage.vambenepe.com/archives/700">post-mortem</a>. For the edification of the cloud generation. I also see a pendulum in action. Where we over-engineered I now see some under-engineering (overly granular interaction models, overemphasis on the virtual machine as the unit of everything, simplistic constraint models, <a href="http://www.rationalsurvivability.com/blog/?p=1354">underestimation of config/patching issues</a>&#8230;). Things will come around and may eventually look familiar (suggested exercise: compare <a href="http://code.google.com/p/pubsubhubbub/">PubSubHubBub</a> with <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsn">WS-Notification</a>).</p>
<p>As long as each iteration gets us closer to the goal things are good.</p>
<p>See you in 2012. Same place, same day, same time.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/328' rel='bookmark' title='Permanent Link: Last call for SML and SML-IF'>Last call for SML and SML-IF</a></li>
<li><a href='http://stage.vambenepe.com/archives/1383' rel='bookmark' title='Permanent Link: Enterprise application integration patterns for IT management: a blast from the past or from the future?'>Enterprise application integration patterns for IT management: a blast from the past or from the future?</a></li>
<li><a href='http://stage.vambenepe.com/archives/700' rel='bookmark' title='Permanent Link: A post-mortem on the previous IT management revolution'>A post-mortem on the previous IT management revolution</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/128' rel='bookmark' title='Permanent Link: Review of the CMDBf specification version 1.0'>Review of the CMDBf specification version 1.0</a></li>
<li><a href='http://stage.vambenepe.com/archives/582' rel='bookmark' title='Permanent Link: CMDBf is a lot more and a lot less than you think'>CMDBf is a lot more and a lot less than you think</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1007/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>REST-*: good specs, bad branding?</title>
		<link>http://stage.vambenepe.com/archives/966</link>
		<comments>http://stage.vambenepe.com/archives/966#comments</comments>
		<pubDate>Thu, 17 Sep 2009 07:09:45 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=966</guid>
		<description><![CDATA[In an earlier post, I argued for standardization of some basic REST-inspired mechanisms for the narrow goal of supporting control interfaces for different forms of Cloud Computing. As I was doing so, I noticed the first report of something called REST-*, introduced by RedHat&#8217;s Mark Little and I ended my post by wondering whether we [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/225' rel='bookmark' title='Permanent Link: WS Resource Access at W3C: the good, the bad and the ugly'>WS Resource Access at W3C: the good, the bad and the ugly</a></li>
<li><a href='http://stage.vambenepe.com/archives/1161' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 3: wrap-up)'>REST in practice for IT and Cloud management (part 3: wrap-up)</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/100' rel='bookmark' title='Permanent Link: SML versus the fat-bottomed specs'>SML versus the fat-bottomed specs</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/447' rel='bookmark' title='Permanent Link: Who said WS-Transfer is for REST?'>Who said WS-Transfer is for REST?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In an <a href="http://stage.vambenepe.com/archives/943">earlier post</a>, I argued for standardization of some basic REST-inspired mechanisms for the narrow goal of supporting control interfaces for different forms of Cloud Computing. As I was doing so, I noticed the <a href="http://www.infoworld.com/d/developer-world/red-hat-eyes-rest-standardization-532">first report</a> of something called REST-*, introduced by RedHat&#8217;s Mark Little and I ended my post by wondering whether we were talking about the same thing or not.</p>
<p>Now that more information has <a href="http://reststar.wordpress.com/2009/09/16/rest-launched/">emerged</a> it seems pretty clear that we are not.</p>
<p>Mark Little understands transactions very well. No argument. He is not happy with some aspects of how they are supported over SOAP. Fine. He thinks it can be done better (at least for 80% of the cases and with lower barriers to entry) directly on top of HTTP (no envelope). Fine. He would like this to be standardized so that middleware stacks can interoperate. Fine. Same applies for pub/sub and p2p messaging, the other initial project out of the REST-* effort. All good.</p>
<p>Where it all goes wrong is the attempt to get on the REST bandwagon. REST is not the only proper way to write distributed applications. It&#8217;s a good way to do it for a specific (through arguably very large) set of distributed applications. One that may not include financial trading or RFID-enabled inventory tracking. More specifically, REST might not be the appropriate approach for all parts of all distributed applications. Working on smoothly connecting the REST and non-REST parts is interesting. Working on forcing the non-REST parts under the REST mantle less so.</p>
<p>By REST here I mean REST-the-architectural-style (narrowly <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">defined</a>), not REST-the-brand (much more broadly <a href="http://www.google.com/search?q=REST+web">defined</a>). Even if your work does not fall under the umbrella of REST-the-architectural-style, you may choose to position it under REST-the-brand as a pragmatic calculation (like a police department might pragmatically include a <a href="http://www.mercurynews.com/breaking-news/ci_13310719">plasma TV</a> in the &#8220;terrorism preparation&#8221; accounting category). In the &#8220;pros&#8221; category, positioning it as REST gives you instantaneous <a href="http://www.infoworld.com/d/developer-world/red-hat-eyes-rest-standardization-532">press coverage</a>. In the &#8220;cons&#8221; category, it gives you instantaneous twitter coverage (of the kind that Steve Jones <a href="http://service-architecture.blogspot.com/2009/09/rest-can-you-please-grow-up.html">reports</a>). All in all, it seems like a bad bargain to me if you want to get things done. But Bill Burke (who works with Mark on this) has <a href="http://bill.burkecentral.com/2009/09/08/what-rest-has-to-be/">chosen to accept it</a>: <em>&#8220;I really don’t care in the end if any of the architectural principles of Roy’s thesis are broken as long these requirements are met&#8221;</em>. As a side note, the REST-* announcement puts <a href="http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-836">this comment</a> by Bill on Roy&#8217;s blog in context&#8230;</p>
<p>In any case, the way the proposed <a href="http://www.jboss.org/reststar">umbrella organization</a> is shaping up is also giving me concerns. Less about some nefarious intent than about a certain tone-deafness regarding how it comes across. I am not talking about details such as the REST-* moniker, the fact that http://rest-star.org is just a facade that redirects to http://www.jboss.org/reststar or the fact that their <a href="http://reststar.wordpress.com/feed/">blog feed</a> uses RSS rather than Atom (way to get the REST crowd on your side). Rather I am thinking of <a href="http://www.jboss.org/reststar/community/governance.html">statements</a> like <em>&#8220;Red Hat, as the founder of REST-*, gets a permanent seat on the board. All other board members must be elected by the overall membership once a year&#8221;</em>. Which suggests (probably incorrectly) more arrogance than even Microsoft and IBM combined were able to muster when setting up <a href="http://ws-i.org/">WS-I</a> (modulo the Sun snub). Speaking of Sun, if the JCP (and Sun&#8217;s position in it) is the model that RedHat has in mind it might be helpful to point out to them that Sun invented the language after all&#8230;</p>
<p>All in all, the specifications Mark and team have in mind may make perfect sense, but they way they are going about it leaves me highly skeptical.</p>
<p>[UPDATE 2009/9/17: More <a href="http://apsblog.burtongroup.com/2009/09/rest-ive-got-a-bad-feeling-about-this.html">REST-* skepticism</a>. But it looks like Mark and Bill are taking it in stride, acknowledging a <a href="http://markclittle.blogspot.com/2009/09/best-laid-plans.html">less-than-optimal</a> execution and <a href="http://blogs.jboss.org/blog/mlittle/2009/09/16/REST_announcement.txt">trying to fix things</a>. I doubt this specific initiative can be salvaged, but I think a lot of the goals are good and need to be realized.  Though my intuition is that it is more likely to get done in a piecemeal fashion, distributed between specialized communities (e.g. the Cloud people, the messaging/AMQP people...) who take on, in a very practical way, the portions most relevant to their needs. Whether all the pieces then get pulled together in one place with a nice bow is not important right now.]</p>
<p>[UPDATED 2009/9/18: <a href="http://bill.burkecentral.com/2009/09/18/were-listening-rest-org-changes/">Changes</a>!]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/225' rel='bookmark' title='Permanent Link: WS Resource Access at W3C: the good, the bad and the ugly'>WS Resource Access at W3C: the good, the bad and the ugly</a></li>
<li><a href='http://stage.vambenepe.com/archives/1161' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 3: wrap-up)'>REST in practice for IT and Cloud management (part 3: wrap-up)</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/100' rel='bookmark' title='Permanent Link: SML versus the fat-bottomed specs'>SML versus the fat-bottomed specs</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/447' rel='bookmark' title='Permanent Link: Who said WS-Transfer is for REST?'>Who said WS-Transfer is for REST?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/966/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Data Management Interface (CDMI) draft released</title>
		<link>http://stage.vambenepe.com/archives/957</link>
		<comments>http://stage.vambenepe.com/archives/957#comments</comments>
		<pubDate>Tue, 15 Sep 2009 08:14:34 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Storage]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=957</guid>
		<description><![CDATA[Have you developed &#8220;Cloud API fatigue&#8221; from seeing too many IaaS &#8220;Cloud APIs&#8221; lately? Are you starting to wonder how many different ways there can possibly be to launch a virtual machine via an HTTP POST? Are you wondering why everybody else seems to equate Cloud computing with on-demand server instances?
If yes, then CDMI will [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1504' rel='bookmark' title='Permanent Link: Dear Cloud API, your fault line is showing'>Dear Cloud API, your fault line is showing</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/1161' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 3: wrap-up)'>REST in practice for IT and Cloud management (part 3: wrap-up)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Have you developed &#8220;Cloud API fatigue&#8221; from seeing too many IaaS &#8220;Cloud APIs&#8221; lately? Are you starting to wonder how many different ways there can possibly be to launch a virtual machine via an HTTP POST? Are you wondering why everybody else seems to equate Cloud computing with on-demand server instances?</p>
<p>If yes, then CDMI will come as a breath of fresh air. This <a href="http://www.snia.org/tech_activities/publicreview/CDMI_Spec_v08.pdf">specification</a> (just a draft at this point) is a rare example of a different beast. Coming out of SNIA, it endeavors to standardize the way storage resources are managed and accessed in a Cloud environment. They call this DaaS (Data storage as a Service).</p>
<p>The specification has two components (which may benefit from being separated in two specifications at some point). One (called &#8220;control paths&#8221;) is an interface to manage a data storage service. That interface is expected to work across many forms of data storage from block storage (like AWS EBS) to filesystems (e.g. NFS) to object stores with a CRUD interface (similar to the <a href="http://kenai.com/projects/suncloudapis/pages/CloudAPIVDCRequests#Create_Volume">WebDAV volumes of the Sun API</a>). It also mentions a &#8220;simple table space storage&#8221; storage form, but that part is pretty fuzzy.</p>
<p>The second component of CDMI (called &#8220;data paths&#8221;) only applies to the CRUD object store and it describes a RESTful interface for accessing it. This figure from the specification does a good job of illustrating the two different APIs in the specification (and the different types of storage envisioned).</p>
<p><img class="alignnone" title="CDMI overview" src="http://stage.vambenepe.com/pages/cdmi-overview.png" alt="" width="489" height="432" /></p>
<p>One of the most interesting sections in the document describes the way in which the authors envision the ability to export the storage resources provisioned/managed through CDMI to other Cloud APIs. They illustrate it in an example involving OCCI (see also this joint <a href="http://www.snia.org/cloud/CloudStorageForCloudComputing.pdf">white paper</a>). This is very interesting and another sign that we need a shared RESTful resource control framework for Cloud computing as a first layer of standardization. One of the reasons I used to <a href="http://stage.vambenepe.com/archives/943"> justify this claim</a> two weeks ago was that <em>&#8220;there will not be one API that provides control of [all the different forms of Cloud Computing], but they can share a base protocol that will make life a lot easier for developers. These Clouds won’t be isolated, developers will use them as a continuum.&#8221;</em> One week later, this draft specification illustrates the point very well.</p>
<p>[As a somewhat related side note, this <a href="http://googleappengine.blogspot.com/2009/09/migration-to-better-datastore.html">interesting post</a> about what it takes to provide a large-scale resilient data service (the Google App Engine data store). And <a href="http://www.theregister.co.uk/2009/08/12/google_file_system_part_deux/">more</a> about the Google File System in general.]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1504' rel='bookmark' title='Permanent Link: Dear Cloud API, your fault line is showing'>Dear Cloud API, your fault line is showing</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/1161' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 3: wrap-up)'>REST in practice for IT and Cloud management (part 3: wrap-up)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/957/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 2.136 seconds -->
