<?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; Manageability</title>
	<atom:link href="http://stage.vambenepe.com/archives/category/manageability/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>PaaS portability challenges and the VMforce example</title>
		<link>http://stage.vambenepe.com/archives/1440</link>
		<comments>http://stage.vambenepe.com/archives/1440#comments</comments>
		<pubDate>Thu, 29 Apr 2010 06:19:49 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></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[Middleware]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[Portability]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[VMforce]]></category>
		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1440</guid>
		<description><![CDATA[The VMforce announcement is a great step for SalesForce, in large part because it lets them address a recurring concern about the force.com PaaS offering: the lack of portability of Apex applications. Now they can be written using Java and Spring instead. A great illustration of how painful this issue was for SalesForce is to [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1432' rel='bookmark' title='Permanent Link: Analyzing the VMforce announcement'>Analyzing the VMforce announcement</a></li>
<li><a href='http://stage.vambenepe.com/archives/684' rel='bookmark' title='Permanent Link: Reality check on Cloud portability'>Reality check on Cloud portability</a></li>
<li><a href='http://stage.vambenepe.com/archives/1496' rel='bookmark' title='Permanent Link: From VMWare + SalesForce.com (VMForce) to VMWare + Google: VMWare&#8217;s PaaS milestones'>From VMWare + SalesForce.com (VMForce) to VMWare + Google: VMWare&#8217;s PaaS milestones</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/906' rel='bookmark' title='Permanent Link: Thoughts on VMWare, SpringSource and PaaS'>Thoughts on VMWare, SpringSource and PaaS</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>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The VMforce announcement is a great step for SalesForce, in large part because it lets them address a recurring concern about the force.com PaaS offering: the lack of portability of Apex applications. Now they can be written using Java and Spring instead. A great illustration of how painful this issue was for SalesForce is to see the contortions that Peter Coffee goes through <a href="http://cloudblog.salesforce.com/2010/04/vmforce-broadspectrum-choice-in-the-cloud.html">just to acknowledge it</a>: <em>&#8220;On the downside, a project might be delayed by debates—some in good faith, others driven by vendor FUD—over the perception of platform lock-in. Political barriers, far more than technical barriers, have likely delayed many organizations&#8217; return on the advantages of the cloud&#8221;</em>. The issue is not lock-in it&#8217;s the potential delays that may come from the perception of lock-in. Poetic.</p>
<p>Similarly, portability between clouds is also a big theme in <a href="http://blogs.vmware.com/console/2010/04/vmforce-and-vmwares-open-paas-strategy.html">Steve Herrod&#8217;s blog covering VMforce</a> as illustrated by the figure below. The message is that &#8220;write once run anywhere&#8221; is coming to the Cloud.</p>
<p><img class="aligncenter size-full wp-image-1445" title="vmforce-portability" src="http://stage.vambenepe.com/wp-content/uploads/vmforce-portability1.png" alt="" width="620" height="508" /></p>
<p>Because this is such a big part of the VMforce value proposition, both from the SalesForce and the VMWare/SpringSource side (as well as for PaaS in general), it&#8217;s worth looking at the portability aspect in more details. At least to the extent that we can do so based on this pre-announcement (VMforce is not open for developers yet). And while I am taking VMforce as an example, all the considerations below apply to any enterprise PaaS offering. VMforce just happens to be one of the brave pioneers, willing to take a first step into the jungle.</p>
<p>Beyond the use of Java as a programming language and Spring as a framework, the portability also comes from the supporting tools. This is something I did not cover in my <a href="http://stage.vambenepe.com/archives/1432">initial analysis of VMforce</a> but that Michael Cote covers well <a href="http://www.redmonk.com/cote/2010/04/28/vmforce/">on his blog</a> and Carl Brooks in his <a href="http://stage.vambenepe.com/archives/1432#comment-105698">comment</a>. Unlike the more general considerations in my previous post, these matters of tooling are hard to discuss until the tools are actually out. We can describe what they &#8220;could&#8221;, &#8220;should&#8221; and &#8220;would&#8221; do all day long, but in the end we need to look at the application in practice and see what, if anything, needs to change when I redirect my deployment target from one cloud to the other. As SalesForce&#8217;s Umit Yalcinalp <a href="http://stage.vambenepe.com/archives/1432#comment-105710">commented</a>, <em>&#8220;the details are going to be forthcoming in the coming months and it is too early to speculate&#8221;</em>.</p>
<p>So rather than speculating on what VMforce tooling will do, I&#8217;ll describe what portability questions any PaaS platform would have to address (or explicitly decline to address).</p>
<p><strong>Code portability</strong></p>
<p>That&#8217;s the easiest to address. Thanks to Java, the runtime portability problem for the core language is pretty much solved. Still, moving applications around require changes to way the application communicates with its infrastructure. Can your libraries and frameworks for data access and identity, for example, successfully encapsulate and hide the different kinds of data/identity stores behind them? Even when the stores are functionally equivalent (e.g. SQL, LDAP), they may have operational differences that matter for an enterprise application. Especially if the database is delivered (and paid for) as a service. I may well design my application differently depending on whether I am charged by the amount of data in the DB, by the number of requests to the DB, by the quantity of app-to-DB traffic or by the total processing time of my requests in the DB. Apparently force.com considers the number of &#8220;database objects&#8221; in its <a href="http://www.salesforce.com/platform/platform-edition/">pricing plans</a> and going over 200 pushes you from the &#8220;Enterprise&#8221; version to the more expensive &#8220;Unlimited&#8221; version. If I run against my local relational database I don&#8217;t think twice about having 201 &#8220;database objects&#8221;. But if I run in force.com and I otherwise can live within the limits of the &#8220;Enterprise&#8221; version I&#8217;d probably be tempted to slightly alter my data model to fit under 200 objects. The example is borderline silly, but the underlying truth is that not all differences in application infrastructure can be automatically encapsulated by libraries.</p>
<p>While code portability is a solvable problem for a reasonably large set of use cases, things get hairier for the more demanding applications. A large part of the PaaS value proposition is contingent on the willingness to give up some low-level optimizations. This, and harder portability in some cases, may just have to be part of the cost of running demanding applications in a PaaS environment. Or just keep these off PaaS for now. This is part of the <a href="http://stage.vambenepe.com/archives/1198">backward-compatible versus forward compatible Cloud dilemma</a>.</p>
<p><strong>Data portability</strong></p>
<p>I have covered data portability in the <a href="http://stage.vambenepe.com/archives/1432">previous entry</a>, in response to Steve Herrod&#8217;s comment that <em>“you should be able to extract the code from the cloud it currently runs in and move it, along with its data, to another cloud choice”</em>. Your data in the force.com database can already be moved somewhere else&#8230; as long as you&#8217;re willing to write code to get it and perform any needed transformation. In theory, any data that you can read is data that you can move (thus fulfilling Steve&#8217;s promise). The question is at what cost. Presumably Steve is referring to data migration tools that VMWare will build (or acquire) and make part of its cloud enablement platform. Another way in which VMWare is trying to assemble a more complete middleware portfolio (see <a href="http://www.oracle.com/technology/products/oracle-data-integrator/index.html">Oracle ODI</a> for an example of a complete data integration offering, which goes far beyond ETL).</p>
<p>There is a subtle difference between the intrinsic portability of Java (which will run in any JRE, modulo JDK version) and the extrinsic portability of data which can in theory be moved anywhere but each place you move it to may require a different process. A car and an oak armoire are both &#8220;portable&#8221;, but one is designed for moving while the other will only move if you bring a truck and two strong guys.</p>
<p><strong>Application service portability</strong></p>
<p>I covered this in my previous entry and Bob Warfield <a href="http://smoothspan.wordpress.com/2010/04/27/vmforce-salesforce-and-vmwares-cool-new-platform-as-a-service/">summarized</a> it as “take advantage of all those juicy services and it will be hard to back out of that platform, Java or no Java”. He is referring to all the platform services (search, reporting, mobile, integration, BPM, IdM, administration) that make a large part of the force.com value proposition. They won&#8217;t be waiting for you in your private cloud (though some may be remotely invocable, depending on how SalesForce wants to play its cards). Applications that depend on them will have to be changed, at least until we have standards interfaces for all these services (don&#8217;t hold your breath).</p>
<p><strong>Management portability</strong></p>
<p>Even if you can seamlessly migrate your application and your data from your internal servers to force.com, what do you think is going to happen to your management console, especially if it uses operating system agents? These agents are not coming along for the ride, that&#8217;s for sure. Are you going to tell your administrators that rather than having a centralized configuration/monitoring/event console they are going to have to look at cute &#8220;monitoring&#8221; web pages for each application? And all the transaction tracing, event correlation, configuration policy and end-user monitoring features they were relying on are unfortunate victims of the relentless march of progress? Good luck with that sale.</p>
<p>VMWare&#8217;s answer will probably be that they will eventually provide you with all the management capabilities that you need. And it&#8217;s a fair one, along the lines of the &#8220;Application-to-Disk Management&#8221; message at the <a href="http://www.oracle.com/oms/enterprisemanager11g/webcast-067871.html">recent launch of Oracle Enterprise Manager 11G</a>. With the difference that EM is not the only way to manage a top-to-bottom Oracle stack, just the one that we think is the best. BMC and HP aren&#8217;t locked out.</p>
<p>VMWare and SpringSource (+Hyperic) could indeed theoretically assemble a full-fledged management solution. But this doesn&#8217;t happen overnight, even with acquisitions as I know from experience both at HP Software and currently at Oracle. Integration (of management domains across the stack, of acquired application management products, of support data/services from oracle.com) is one of the main advances in <a href="http://www.oracle.com/oms/enterprisemanager11g/index.html">Enterprise Manager 11G</a> and it took work.</p>
<p>And even then, this leads to the next logical question. If you can move from cloud to cloud but you are forced to use VMWare development, deployment and management tools, haven&#8217;t you traded one lock-in problem for another?</p>
<p>Not to mention that your portability between clouds, if it depends on VMWare tools, is limited to VMWare-powered clouds (private or public). In effect, there are now three levels of portability:</p>
<ul>
<li>not portable (only runs on VMforce)</li>
<li>portable to any cloud (public or private) built using VMWare infrastructure</li>
<li>portable to any Java/Spring Cloud platform</li>
</ul>
<p>Is your application portable the way cash is portable, or the way a gift  card is portable (across stores of a retail chain)?</p>
<p>If this reminds you of the java portability debates of the early days of Enterprise Java that&#8217;s no surprise. Remember, <a href="http://stage.vambenepe.com/archives/1407">we&#8217;re replaying the tape</a>.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1432' rel='bookmark' title='Permanent Link: Analyzing the VMforce announcement'>Analyzing the VMforce announcement</a></li>
<li><a href='http://stage.vambenepe.com/archives/684' rel='bookmark' title='Permanent Link: Reality check on Cloud portability'>Reality check on Cloud portability</a></li>
<li><a href='http://stage.vambenepe.com/archives/1496' rel='bookmark' title='Permanent Link: From VMWare + SalesForce.com (VMForce) to VMWare + Google: VMWare&#8217;s PaaS milestones'>From VMWare + SalesForce.com (VMForce) to VMWare + Google: VMWare&#8217;s PaaS milestones</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/906' rel='bookmark' title='Permanent Link: Thoughts on VMWare, SpringSource and PaaS'>Thoughts on VMWare, SpringSource and PaaS</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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1440/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>Oracle acquires Amberpoint</title>
		<link>http://stage.vambenepe.com/archives/1247</link>
		<comments>http://stage.vambenepe.com/archives/1247#comments</comments>
		<pubDate>Mon, 08 Feb 2010 14:13:51 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Governance]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Web services]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1247</guid>
		<description><![CDATA[Oracle just announced that it has purchased Amberpoint. If you have ever been interested in Web services management, then you surely know about Amberpoint. The company has long led the pack of best-of-breed vendors for Web services and SOA Management. My history with them goes back to the old days of the OASIS WSDM technical [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/258' rel='bookmark' title='Permanent Link: Oracle acquires ClearApp for composite application management'>Oracle acquires ClearApp for composite application management</a></li>
<li><a href='http://stage.vambenepe.com/archives/537' rel='bookmark' title='Permanent Link: Oracle acquires mValent for application config management'>Oracle acquires mValent for application config management</a></li>
<li><a href='http://stage.vambenepe.com/archives/1187' rel='bookmark' title='Permanent Link: Book on Middleware Management with Oracle Enterprise Manager'>Book on Middleware Management with Oracle Enterprise Manager</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/183' rel='bookmark' title='Permanent Link: Oracle acquires e-TEST from Empirix'>Oracle acquires e-TEST from Empirix</a></li>
<li><a href='http://stage.vambenepe.com/archives/289' rel='bookmark' title='Permanent Link: SOA management: round-up of recent news'>SOA management: round-up of recent news</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Oracle just <a href="http://www.oracle.com/us/corporate/press/048842">announced</a> that it has purchased Amberpoint. If you have ever been interested in Web services management, then you surely know about Amberpoint. The company has long led the pack of best-of-breed vendors for Web services and SOA Management. My history with them goes back to the old days of the OASIS WSDM technical committee, where their engineers brought to the group a unique level of experience and practical-mindedness.</p>
<p>The <a href="http://www.oracle.com/amberpoint/index.html">official page</a> has more details. In short, Amberpoint is going to reinforce Oracle Enterprise Manager, especially in these areas:</p>
<ul>
<li>Business Transaction Management</li>
<li>SOA Management</li>
<li>Application Performance Management</li>
<li>SOA Governance (BTW, Oracle Enterprise Repository 11g was <a href="http://blogs.oracle.com/governance/2010/01/oracle_enterprise_repository_1_1.html">released</a> just over a week ago)</li>
</ul>
<p>I am looking forward to working with my new colleagues from Amberpoint.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/258' rel='bookmark' title='Permanent Link: Oracle acquires ClearApp for composite application management'>Oracle acquires ClearApp for composite application management</a></li>
<li><a href='http://stage.vambenepe.com/archives/537' rel='bookmark' title='Permanent Link: Oracle acquires mValent for application config management'>Oracle acquires mValent for application config management</a></li>
<li><a href='http://stage.vambenepe.com/archives/1187' rel='bookmark' title='Permanent Link: Book on Middleware Management with Oracle Enterprise Manager'>Book on Middleware Management with Oracle Enterprise Manager</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/183' rel='bookmark' title='Permanent Link: Oracle acquires e-TEST from Empirix'>Oracle acquires e-TEST from Empirix</a></li>
<li><a href='http://stage.vambenepe.com/archives/289' rel='bookmark' title='Permanent Link: SOA management: round-up of recent news'>SOA management: round-up of recent news</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1247/feed</wfw:commentRss>
		<slash:comments>1</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>Desirable technical characteristics of PaaS</title>
		<link>http://stage.vambenepe.com/archives/1096</link>
		<comments>http://stage.vambenepe.com/archives/1096#comments</comments>
		<pubDate>Tue, 10 Nov 2009 10:12:26 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></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[Middleware]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1096</guid>
		<description><![CDATA[PaaS can most dramatically improve the IT experience in four areas:

Hosting/operations efficiency
Application-centric management
Development productivity
Security

To do so, there are technical characteristics that PaaS frameworks should eventually exhibit. These are not technical characteristics of a given PaaS container, they are shared characteristics that go across all container types, no matter what the operational capabilities of the containers [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1078' rel='bookmark' title='Permanent Link: Enumeration of PaaS container types'>Enumeration of PaaS container types</a></li>
<li><a href='http://stage.vambenepe.com/archives/1025' rel='bookmark' title='Permanent Link: Cloud platform patching conundrum: PaaS has it much worse than IaaS and SaaS'>Cloud platform patching conundrum: PaaS has it much worse than IaaS and SaaS</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>
<li><a href='http://stage.vambenepe.com/archives/1173' rel='bookmark' title='Permanent Link: PaaS as the path to MDA?'>PaaS as the path to MDA?</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/1453' rel='bookmark' title='Permanent Link: Flavors of PaaS'>Flavors of PaaS</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>PaaS can most dramatically improve the IT experience in four areas:</p>
<ul>
<li>Hosting/operations efficiency</li>
<li>Application-centric management</li>
<li>Development productivity</li>
<li>Security</li>
</ul>
<p>To do so, there are technical characteristics that PaaS frameworks should eventually exhibit. These are not technical characteristics of a given PaaS container, they are shared characteristics that go across <a href="http://stage.vambenepe.com/archives/1078">all container types</a>, no matter what the operational capabilities of the containers are.</p>
<p>Here is a rough and unorganized list of the desirable characteristics (meta-capabilities) of PaaS Cloud containers:</p>
<ul>
<li>An application component model that supports deployment/configuration across all PaaS container types.</li>
<li>Explicit interactions/invocations between application components (resilient connections between component: infrastructure-level retry/reroute)</li>
<li>Uniform and consistent request tracking across all components. Ability to intercept component-to-component communication.</li>
<li>Short-term (or externally persisted) state so that all instances can be quickly redirected out of any one node.</li>
<li>Subset of platform management interface exposed to consumer, along with out of the box application management. Application metrics consolidated at application level rather than node level.</li>
<li>Consistent, model-based application management interface across all container types. Hooks for component code to provide its manageability in the same framework.</li>
<li>Minimal footprint of any container node for limited patching requirements.</li>
<li>Assistance for debugging platform-hosted code (see <a href="http://stage.vambenepe.com/archives/1025">this entry</a>).</li>
<li>No encroachment of container technology on application contract (e.g. no forced URL structure).</li>
<li>Application uniformly scalable to the limit of the underlying hardware (no imposed partitioning).</li>
<li>Shared authentication / authorization / auditing across containers.</li>
<li>Minimum contract/interface exposed by each container.</li>
<li>Governance of application services, aligned (in model/protocols) with the container management interfaces.</li>
<li>[UPDATE: need to add metering+billing as William Louth pointed out in a comment]</li>
</ul>
<p>This applies across the board to public, private and hybrid PaaS. The distinctions between these delivery models are real but at a different level. The important thing is that the PaaS administrator is different from the application administrator in all cases. On the other hand, most of these technical characteristics are not achievable for lower-level Cloud resources (like virtual hosts and low-level storage) which is why the IaaS form of Cloud leaves the Cloud promise only partially fulfilled.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1078' rel='bookmark' title='Permanent Link: Enumeration of PaaS container types'>Enumeration of PaaS container types</a></li>
<li><a href='http://stage.vambenepe.com/archives/1025' rel='bookmark' title='Permanent Link: Cloud platform patching conundrum: PaaS has it much worse than IaaS and SaaS'>Cloud platform patching conundrum: PaaS has it much worse than IaaS and SaaS</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>
<li><a href='http://stage.vambenepe.com/archives/1173' rel='bookmark' title='Permanent Link: PaaS as the path to MDA?'>PaaS as the path to MDA?</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/1453' rel='bookmark' title='Permanent Link: Flavors of PaaS'>Flavors of PaaS</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1096/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Would you like some management with that appliance?</title>
		<link>http://stage.vambenepe.com/archives/1064</link>
		<comments>http://stage.vambenepe.com/archives/1064#comments</comments>
		<pubDate>Tue, 03 Nov 2009 05:55:19 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Desired state]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[OVM]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle Open World]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[Virtual appliance]]></category>
		<category><![CDATA[WS-Management]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1064</guid>
		<description><![CDATA[Andi Mann recently wrote an interesting post about virtual appliances . He uses the domain name pleasediscuss.com for his blog so I figured I&#8217;d do just that. More specifically, I have three comments on his article.
Opaque or transparent appliance
Andi&#8217;s concerns about the security and management problems posed by virtual appliances are real, but he seems [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/201' rel='bookmark' title='Permanent Link: Various IT management stories'>Various IT management stories</a></li>
<li><a href='http://stage.vambenepe.com/archives/1142' rel='bookmark' title='Permanent Link: Cloud + proprietary software = ♥'>Cloud + proprietary software = ♥</a></li>
<li><a href='http://stage.vambenepe.com/archives/589' rel='bookmark' title='Permanent Link: Managing the stack from top to bottom, including virtualization'>Managing the stack from top to bottom, including virtualization</a></li>
<li><a href='http://stage.vambenepe.com/archives/1400' rel='bookmark' title='Permanent Link: A week of Oracle Middleware, Management and Cloud'>A week of Oracle Middleware, Management and Cloud</a></li>
<li><a href='http://stage.vambenepe.com/archives/258' rel='bookmark' title='Permanent Link: Oracle acquires ClearApp for composite application management'>Oracle acquires ClearApp for composite application management</a></li>
<li><a href='http://stage.vambenepe.com/archives/331' rel='bookmark' title='Permanent Link: Application management roundtable'>Application management roundtable</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Andi Mann recently wrote an <a href="http://pleasediscuss.com/andimann/20091029/virtual-appliances-risk-reward/">interesting post about virtual appliances</a> . He uses the domain name <em>pleasediscuss.com</em> for his blog so I figured I&#8217;d do just that. More specifically, I have three comments on his article.</p>
<p><strong>Opaque or transparent appliance</strong></p>
<p>Andi&#8217;s concerns about the security and management problems posed by virtual appliances are real, but he seems to assume that the content of the appliance is necessarily opaque to the customer and under the responsibility of the appliance provider. Why can&#8217;t a virtual appliance be transparent in the sense that the customer is able to efficiently manage at least some aspects of the software installed on it? <em>&#8220;You can’t put agents on most virtual appliances, they don’t come with WMI, and most have only a GUI for management&#8221;</em> says Andi. Why can&#8217;t an appliance come with an agent (especially in these days of consolidation where many vendors provide many layers of the stack &#8211; hypervisor / OS / application container / application / management tools &#8211; including their agent)? Why can&#8217;t it implement a standard management API (most servers nowadays implement WBEM, WS-Management and/or IPMI pre-boot &#8211; on the motherboard &#8211; which is a lot more challenging to do than supporting a similar protocol in a virtual appliance). Andi is really criticizing the current offering more than the virtual appliance model per se and in this I can join him.</p>
<p>Let me put it differently, since this is probably just a question of definition: what would Andi call a virtual appliance that does expose management APIs for its infrastructure (e.g. WS-Management for the OS, JMX for the java stack) or that comes with an agent (HP, IBM, BMC, Oracle&#8230;) installed on it?</p>
<p>Such an appliance (let&#8217;s call it a &#8220;transparent virtual appliance&#8221; for now) doesn&#8217;t provide all the commonly claimed benefits of an appliance (zero config/admin) but as Andi points out these benefits come with major intrinsic drawbacks. A <em>transparent virtual appliance</em> still drastically simplifies installation (especially useful for test/dev/demo/POC). It doesn&#8217;t entirely free you of monitoring and configuration but at least it provides you with a very consistent and controlled starting point, manageable from the start (no need to subsequently install an agent). In addition, it can be made &#8220;just enough&#8221; (just enough OS, just enough app server&#8230;) to require a lot less maintenance than an application stack that you assemble yourself out of generic parts. We&#8217;ll always have trade offs between how optimized/customized it is versus how uniform your overall environment can be, but I don&#8217;t see the use of an appliance as a delivery mechanism as necessarily cornering you into a completely opaque situation, from a management perspective.</p>
<p>Those who attended Oracle Open World a few weeks ago were treated to an example of such an appliance, if they attended any of the sessions that covered Oracle&#8217;s Appliance Builder (the main one was, I believe, <em>Virtualizing Oracle Fusion Middleware in the Modern Data Center</em>, in case you have access to the Open World On Demand replay and slides). I believe it&#8217;s probably the same content that @jayfry3 was shown when he <a href="http://twitter.com/jayfry3/status/5377284767">tweeted</a> about &#8220;<span><span>Oracle is demoing their private cloud self-service app&#8221;. These appliances are not at all opaque from a management perspective. To the contrary, they are highly manageable, coming with an Enterprise Manager agent installed that can manage everything in the appliance (and when that &#8220;everything&#8221; doesn&#8217;t include the OS, it&#8217;s because there isn&#8217;t one thanks to JRockit Virtual Edition, making things slimmer, faster, safer and more manageable). And of course the OVM-based environment in which you deploy these appliances is also managed by Enterprise Manager. OK, my point here wasn&#8217;t to go into marketing mode, but this is cool stuff and an example of what virtual appliances should be. BTW, this was also demonstrated during Hasan Rizvi&#8217;s keynote at OpenWorld, including the management of these systems through Enterprise Manager.<br />
</span></span></p>
<p><strong>In the long run it&#8217;s irrelevant</strong></p>
<p>As with all things computer-related, the issue is going to get blurrier and then irrelevant . The great thing about software is that there is no solid line. In this case, we will eventually get more customized appliances (via appliance builders or model-driven appliance generation) blurring the line between installed software and appliance-based software.</p>
<p><strong>Waiting for PaaS</strong></p>
<p>Towards the end of his post, Andi paints an optimistic vision of the future: <em>&#8220;I also think that virtual appliances have a bright future – but in some ways I continue to see them as a beta version of what could (or should) come next.  By adding in capabilities for responsible and accountable management, they could form the basis of more fully-functional virtual service management containers. These in turn could form the basis of elastic, mobile, network-deployed, responsible cloud appliances that deliver complete end-to-end service management without regard to physical location or domain of control.&#8221;</em></p>
<p>I mostly agree with this vision, though when I describe it it is in the guise of a PaaS platform. Where your appliance (which today goes from the OS all the way to the app) has shrunk to an application template that you deploy in the PaaS environment (rather than in a hypervisor). If/when the underlying PaaS environment has reached the right level of management automation you get all the benefits of an appliance while maintaining the consistency of your environment and its adherence to your management policies (because the environment is the PaaS platform and its management is driven from your policies).</p>
<p>[As is often the case, this started as a comment (on Andi's blog) and quickly outgrew that environment, leading to this new post. Plus, Andi's blog is brand new and seems to be well worth spreading the word about (Andi himself is <a href="http://twitter.com/vambenepe/status/5195987036">under-marketing</a> <a href="http://twitter.com/AndiMann/statuses/5196255286">it</a>).]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/201' rel='bookmark' title='Permanent Link: Various IT management stories'>Various IT management stories</a></li>
<li><a href='http://stage.vambenepe.com/archives/1142' rel='bookmark' title='Permanent Link: Cloud + proprietary software = ♥'>Cloud + proprietary software = ♥</a></li>
<li><a href='http://stage.vambenepe.com/archives/589' rel='bookmark' title='Permanent Link: Managing the stack from top to bottom, including virtualization'>Managing the stack from top to bottom, including virtualization</a></li>
<li><a href='http://stage.vambenepe.com/archives/1400' rel='bookmark' title='Permanent Link: A week of Oracle Middleware, Management and Cloud'>A week of Oracle Middleware, Management and Cloud</a></li>
<li><a href='http://stage.vambenepe.com/archives/258' rel='bookmark' title='Permanent Link: Oracle acquires ClearApp for composite application management'>Oracle acquires ClearApp for composite application management</a></li>
<li><a href='http://stage.vambenepe.com/archives/331' rel='bookmark' title='Permanent Link: Application management roundtable'>Application management roundtable</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1064/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cloud platform patching conundrum: PaaS has it much worse than IaaS and SaaS</title>
		<link>http://stage.vambenepe.com/archives/1025</link>
		<comments>http://stage.vambenepe.com/archives/1025#comments</comments>
		<pubDate>Thu, 15 Oct 2009 07:58:53 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Governance]]></category>
		<category><![CDATA[ITIL]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1025</guid>
		<description><![CDATA[The potential user impact of changes (e.g. patches or config changes) made on the Cloud infrastructure (by the Cloud provider) is a sore point in the Cloud value proposition (see Hoff&#8217;s take for example). You have no control over patching/config actions taken by the provider, any of which could potentially affect you. In a traditional [...]


Related posts:<ol><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/1355' rel='bookmark' title='Permanent Link: &#8220;Freeing SaaS from Cloud&#8221;: slides and notes from Cloud Connect keynote'>&#8220;Freeing SaaS from Cloud&#8221;: slides and notes from Cloud Connect keynote</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/1078' rel='bookmark' title='Permanent Link: Enumeration of PaaS container types'>Enumeration of PaaS container types</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/1216' rel='bookmark' title='Permanent Link: Generalizing the Cloud vs. SOA Governance debate'>Generalizing the Cloud vs. SOA Governance debate</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The potential user impact of changes (e.g. patches or config changes) made on the Cloud infrastructure (by the Cloud provider) is a sore point in the Cloud value proposition (see <a href="http://www.rationalsurvivability.com/blog/?p=1354">Hoff&#8217;s take</a> for example). You have no control over patching/config actions taken by the provider, any of which could potentially affect you. In a traditional data center, you can test the various changes on specific applications; you don&#8217;t have to apply them at the same time on all servers; and you can even decide to skip some infrastructure patches not relevant to your application (&#8220;if it aint&#8217; broken&#8230;&#8221;). Not so in a Cloud environment, where you may not even know about a change until after the fact. And you have no control over the timing and the roll-out of the patch, so that some of your instances may be running on patched nodes and others may not (good luck with troubleshooting that).</p>
<p>Unfortunately, this is even worse for PaaS than IaaS. Simply because you seat on a lot more infrastructure that is opaque to you. In a IaaS environment, the only thing that can change is the hardware (rarely a cause of problem) and the hypervisor (or equivalent Cloud OS). In a PaaS environment, it&#8217;s all that plus whatever flavor of OS and application container is used. Depending on how streamlined this all is (just enough OS/AS versus a traditional deployment), that&#8217;s potentially a lot of code and configuration. Troubleshooting is also somewhat easier in a IaaS setup because the error logs are <a href="http://www.docstoc.com/docs/13182961/Where-Logs-Hide-Logs-in-Virtualized-Environments">localized (or localizable)</a> to a specific instance. Not necessarily so with PaaS (and even if you could localize the error, you couldn&#8217;t guarantee that your troubleshooting test runs on the same node anyway).</p>
<p>In a way, PaaS is squeezed between IaaS and SaaS on this. IaaS gets away with a manageable problem because the opaque infrastructure is not too thick. For SaaS it&#8217;s manageable too because the consumer is typically either a human (who is a lot more resilient to change) or a very simple and well-understood interface (e.g. IMAP or some Web services). Contrast this with PaaS where the contract is that of an application container (e.g. JEE, RoR, Django).There are all kinds of subtle behaviors (e.g, timing/ordering issues) that are not part of the contract and can surface after a patch: for example, a bug in the application that was never found because before the patch things always happened in a certain order that the application implicitly &#8211; and erroneously &#8211; relied on. That&#8217;s exactly why you always test your key applications today even if the OS/AS patch should, in theory, not change anything for the application. And it&#8217;s not just patches that can do that. For example, network upgrades can introduce timing changes that surface new issues in the application.</p>
<p>And it goes both ways. Just like you can be hurt by the Cloud provider patching things, you can be hurt by them <em>not</em> patching things. What if there is an obscure bug in their infrastructure that only affects your application. First you have to convince them to troubleshoot with you. Then you have to convince them to produce (or get their software vendor to produce) and deploy a patch.</p>
<p>So what are the solutions? Is PaaS doomed to never go beyond <a href="http://stage.vambenepe.com/archives/1014">hobbyists</a>? Of course not. The possible solutions are:</p>
<ul>
<li>Write a bug-free and high-performance PaaS infrastructure from the start, one that never needs to be changed in any way. How hard could it be? ;-)</li>
<li>More realistically, narrowly define container types to reduce both the contract and the size of the underlying implementation of each instance. For example, rather than deploying a full JEE+SOA container componentize the application so that each component can deploy in a small container (e.g. a servlet engine, a process management engine, a rule engine, etc). As a result, the interface exposed by each container type can be more easily and fully tested. And because each instance is slimmer, it requires fewer patches over time.</li>
<li>PaaS providers may give their users some amount of visibility and control over this. For example, by announcing upgrades ahead of time, providing updated nodes to test on early and allowing users to specify &#8220;freeze&#8221; periods where nothing changes (unless an urgent security patch is needed, presumably). Time for a Cloud &#8220;refresh&#8221; in ITIL/ITSM-land?</li>
<li>The PaaS providers may also be able to facilitate debugging of infrastructure-related problem. For example by stamping the logs with a version ID for the infrastructure on the node that generated the log entry. And the ability to request that a test runs on a node with the same version. Keeping in mind that in a SOA / Composite world, the root cause of a problem found on one node may be a configuration change on a different node&#8230;</li>
</ul>
<p>Some closing notes:</p>
<ul>
<li>Another incarnation of this problem is likely to show up in the form of PaaS certification. We should not assume that just because you use a PaaS you are the developer of the application. Why can&#8217;t I license an ISV app that runs on GAE? But then, what does the ISV certify against? A given PaaS provider, e.g. Google? A given version of the PaaS infrastructure (if there is such a thing&#8230; Google advertises versions of the GAE SDK, but not of the actual GAE runtime)? Or maybe a given PaaS software stack, e.g. the Oracle/Microsoft/IBM/VMWare/JBoss/etc, meaning that any Cloud provider who uses this software stack is certified?</li>
<li>I have only discussed here changes to the underlying platform that do not change the contract (or at least only introduce backward-compatible changes, i.e. add APIs but don&#8217;t remove any). The matter of non-compatible platform updates (and version coexistence) is also a whole other ball of wax, one that comes with echoes of SOA governance discussions (because in PaaS we are talking about pure software contracts, not hardware or hardware-like contracts). Another area in which PaaS has larger challenges than IaaS.</li>
<li>Finally, for an illustration of how a highly focused and specialized container cuts down on the need for config changes, look at this photo from earlier today during the presentation of JRockit Virtual Edition at Oracle Open World. This slide shows (in font size 3, don&#8217;t worry you&#8217;re not supposed to be able to read), the list of configuration files present on a normal Linux instance, versus a stripped-down (&#8220;JeOS&#8221;) Linux, versus JRockit VE.</li>
</ul>
<p><a href="http://stage.vambenepe.com/pages/JRockit-config-compare.jpg"><img src="http://stage.vambenepe.com/pages/JRockit-config-compare-small.png" alt="" width="509" height="375" /></a><br />
By the way, JRockit VE is very interesting and the environment today is much more favorable than when BEA first did it, but that&#8217;s a topic for another post.</p>
<p>[UPDATED 2009/10/22: For more on this (in an EC2-centric context) see section 4 ("service problem resolution") of this <a href="http://www.cs.cornell.edu/projects/ladis2009/papers/sripanidkulchai-ladis2009.pdf">IBM paper</a>. It ends with "another possible direction is to develop new mechanisms or APIs to enable cloud users to directly and automatically query and correlate application level events with lower level hardware information to better identify the root cause of the problem".]</p>


<p>Related posts:<ol><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/1355' rel='bookmark' title='Permanent Link: &#8220;Freeing SaaS from Cloud&#8221;: slides and notes from Cloud Connect keynote'>&#8220;Freeing SaaS from Cloud&#8221;: slides and notes from Cloud Connect keynote</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/1078' rel='bookmark' title='Permanent Link: Enumeration of PaaS container types'>Enumeration of PaaS container types</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/1216' rel='bookmark' title='Permanent Link: Generalizing the Cloud vs. SOA Governance debate'>Generalizing the Cloud vs. SOA Governance debate</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1025/feed</wfw:commentRss>
		<slash:comments>7</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>Thoughts on the &#8220;Simple Cloud API&#8221;</title>
		<link>http://stage.vambenepe.com/archives/984</link>
		<comments>http://stage.vambenepe.com/archives/984#comments</comments>
		<pubDate>Tue, 22 Sep 2009 19:00:16 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[Portability]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=984</guid>
		<description><![CDATA[PHP developers with Cloud aspirations rejoice! Zend has announced a PHP toolkit (called the Simple Cloud API project) to abstract and access application-level Cloud services. This is not just YACA (yet another Cloud API), as there are interesting differences between this and all the other Cloud toolkits out there.
First it&#8217;s PHP, which was not covered [...]


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/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/906' rel='bookmark' title='Permanent Link: Thoughts on VMWare, SpringSource and PaaS'>Thoughts on VMWare, SpringSource and PaaS</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/889' rel='bookmark' title='Permanent Link: Cloud catalog catalyst or cloud catalog cataclysm?'>Cloud catalog catalyst or cloud catalog cataclysm?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>PHP developers with Cloud aspirations rejoice! Zend has <a href="http://www.businesswire.com/portal/site/home/permalink/?ndmViewId=news_view&amp;newsId=20090922006086&amp;newsLang=en">announced</a> a PHP toolkit (called the <a href="http://www.simplecloud.org/">Simple Cloud API</a> project) to abstract and access application-level Cloud services. This is not just YACA (yet another Cloud API), as there are interesting differences between this and all the other <a href="http://stage.vambenepe.com/archives/951">Cloud toolkits</a> out there.</p>
<p>First it&#8217;s PHP, which was not covered by the existing toolkits. Considering how many web applications are written in PHP (including the one that serves this very blog) this may seem strange, until you realize that most Cloud toolkits out there are focused on provisioning/managing low-level compute resources of the IaaS kind. Something that is far out of PHP&#8217;s sweetspot and much more practically handled with Java, Python, Ruby or some .NET language accessible via PowerShell.</p>
<p>Which takes us to the second, and arguably most interesting, characteristic of this toolkit: it is focused on application-level Cloud services (files, documents and queues for now) rather than infrastructure-level. In other word, it&#8217;s the first (to my knowledge) PaaS toolkit.</p>
<p>I also notice that Zend has gotten endorsements from IBM, Microsoft, Nirvanix, Rackspace and GoGrid. The first two especially seem to have <a href="http://www.infoworld.com/d/developer-world/simple-cloud-api-project-offers-portability-hopes-629">impressed</a> InfoWorld. Let&#8217;s keep in mind that at this point all we are talking about are canned quotes in a press release. Which rank only above politician campaign promises as predictor of behavior. In any case that can&#8217;t be the full extent of IBM and Microsoft&#8217;s response to the VMWare/Cisco push on IaaS standards. But it may suggest that their response will move the battlefield to include PaaS, which would be a smart move.</p>
<p>Now for a few more acerbic comments:</p>
<ul>
<li>It has &#8220;simple&#8221; in its name, like SOAP (as Pete Lacey <a href="http://72.249.21.88/nonintersecting/2006/11/15/the-s-stands-for-simple/?year=2006&amp;monthnum=11&amp;day=15&amp;name=the-s-stands-for-simple&amp;page=">famously lampooned</a>). In the long term this tends to negatively correlate with simplicity, just like the presence of &#8220;democratic&#8221; in the official name of a country <a href="http://en.wikipedia.org/wiki/German_Democratic_Republic">does</a> <a href="http://en.wikipedia.org/wiki/Democratic_Republic_of_the_Congo">not</a> <a href="http://en.wikipedia.org/wiki/Democratic_Republic_of_Afghanistan">bode</a> <a href="http://en.wikipedia.org/wiki/Democratic_Republic_of_Vietnam">well</a> for actual democracy.</li>
<li>Please, don&#8217;t shorten &#8220;Simple Cloud API&#8221; to SCA which is <a href="http://www.osoa.org/display/Main/Home">already claimed</a> in a (potentially) closely related field.</li>
<li>Reuven Cohen is technically correct to <a href="http://www.elasticvapor.com/2009/09/new-simple-cloud-storage-api-launched.html">see it</a> as <em>&#8220;a way to create other higher level programmatic API interfaces such as REST or SOAP using an easy, yet portable PHP programming environment&#8221;</em>. But pay attention to how many turtles are on this pile: the native provider API, the adapter to the &#8220;simple cloud API&#8221;, the SOAP or REST remote API and the consuming application&#8217;s native API. How much real isolation are you getting when you build your house on such a wobbly foundation</li>
</ul>
<p>[UPDATE: Comments from <a href="http://blog.maartenballiauw.be/post/2009/09/22/Simple-API-for-Cloud-Application-Services.aspx">someone in the know</a>:  a programmer working on adding Azure support for this Simple Cloud API project.]</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/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/906' rel='bookmark' title='Permanent Link: Thoughts on VMWare, SpringSource and PaaS'>Thoughts on VMWare, SpringSource and PaaS</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/889' rel='bookmark' title='Permanent Link: Cloud catalog catalyst or cloud catalog cataclysm?'>Cloud catalog catalyst or cloud catalog cataclysm?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/984/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Toolkits to wrap and bridge Cloud management protocols</title>
		<link>http://stage.vambenepe.com/archives/951</link>
		<comments>http://stage.vambenepe.com/archives/951#comments</comments>
		<pubDate>Sat, 12 Sep 2009 05:59:12 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=951</guid>
		<description><![CDATA[Cloud development toolkits like Libcloud (for Python) and jcloud (for Java) have been around for some time, but over the last two months they have been joined by several other open source contenders. They all claim to abstract the on-the-wire Cloud management protocols sufficiently to let you access different Clouds via the same code; while [...]


Related posts:<ol><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/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/984' rel='bookmark' title='Permanent Link: Thoughts on the &#8220;Simple Cloud API&#8221;'>Thoughts on the &#8220;Simple Cloud API&#8221;</a></li>
<li><a href='http://stage.vambenepe.com/archives/210' rel='bookmark' title='Permanent Link: Recent IT management announcements'>Recent IT management announcements</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>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Cloud development toolkits like Libcloud (for Python) and jcloud (for Java) have been around for some time, but over the last two months they have been joined by several other open source contenders. They all claim to abstract the on-the-wire Cloud management protocols sufficiently to let you access different Clouds via the same code; while at the same time providing objects in your programming language of choice and saving you the trouble of dealing with on-the-wire messages. By focusing on interoperability, they slot themselves below the larger role of a &#8220;Cloud broker&#8221; (which also deals with tasks like transfer and choice). Here is the list, starting with the more recent contenders:</p>
<ul>
<li><a href="http://www.cloudloop.com/">CloudLoop</a> (here is the <a href="http://www.cloudloop.com/blog/?p=3">announcement</a>) &#8211; focused on storage</li>
<li><a href="http://www.opennebula.org/doku.php">OpenNebula</a> (here is the <a href="http://blog.dsa-research.org/?p=199">announcement</a>)</li>
<li><a href="http://dasein-cloud.sourceforge.net/">Dasein</a> (here is the <a href="http://broadcast.oreilly.com/2009/08/dasein-open-cloud-api.html">announcement</a>)</li>
<li><a href="http://code.google.com/p/jclouds/">jclouds</a></li>
<li><a href="http://libcloud.org/">Libcloud</a></li>
</ul>
<p><a href="http://deltacloud.org/">DeltaCloud</a> shares the same goal of translating between different Cloud management protocols but they present their own interface as yet another Cloud REST API/protocol rather than a language-specific toolkit. More along the lines of what <a href="http://code.google.com/p/unifiedcloud/">UCI</a> is trying to do (not sure what&#8217;s up with that project, I recorded my <a href="http://stage.vambenepe.com/archives/530">skepticism</a> earlier and am still waiting to be pleasantly surprised).</p>
<p>Of course there are also programming toolkits that are specific to one Cloud provider. They are language-specific wrappers around one Cloud management protocol. AWS protocols (EC2, S3, etc&#8230;) represent the most common case, for example <a href="http://amazon-ec2.rubyforge.org/">amazon-ec2</a> (a Ruby Gem), <a href="http://code.google.com/p/power-ec2dream/">Power-EC2Dream</a> (in C# which gives it the tantalizing advantage of being invokable via PowerShell) and <a href="http://code.google.com/p/typica/">typica</a> (for Java). For Clouds beyond AWS, check out the various <a href="http://rightscale.rubyforge.org/">RightScale Ruby Gems</a>.</p>
<p>The main point of this entry was to list the cross-Cloud development toolkits in the bullet list above. But if you&#8217;re in the mood for some pontification you can keep reading.</p>
<p>For some reason, what used to be called &#8220;protocols&#8221; is often called &#8220;APIs&#8221; in Cloud settings. Witness the Sun Cloud &#8220;API&#8221; or the vCloud &#8220;API&#8221; which only define XML formats for on-the-wire messages. I have never heard of CIM/XML over HTTP, WSDM or WS-Management being referred as APIs though they occupy a very similar place. They are usually considered &#8220;protocols&#8221;.</p>
<p>It&#8217;s a just question of definition whether an on-the-wire protocol (rather than a language-specific set of objects/methods) qualifies as an &#8220;Application Programming Interface&#8221;. It&#8217;s not an &#8220;interface&#8221; in the Java sense of the term. But I can &#8220;program&#8221; against it so it could go either way. On this blog I have gone along with the &#8220;API&#8221; term because that seemed widely used, though in verbal conversations I have tended to stick to &#8220;protocol&#8221;. One problem with &#8220;API&#8221; is that it pushes you towards mixing the &#8220;what&#8221; and the &#8220;how&#8221; and not respecting the <a href="http://stage.vambenepe.com/archives/943">protocol/model dichotomy</a>.</p>
<p>Where is becomes relevant is when you start to see language-specific APIs for Cloud control pop-up as listed above. You now have two classes of things called &#8220;API&#8221; and it gets a bit confusing. Is it time to bring back the &#8220;protocol&#8221; term for on-the-wire definitions?</p>
<p>As a developer, whether you&#8217;re better off eating your Cloud noodles using chopsticks (on-the-wire protocol definitions) or a fork (language-specific APIs) is an important decision that will stay with you and may come back to bit you (e.g. when the interfaces are versioned). There is a place for both of course, but if we are to learn anything from WS-* it&#8217;s that we went way too far in the &#8220;give me a java stub&#8221; direction. Which doesn&#8217;t mean there is no room for them, but be careful how far from the wire semantics you get. It become even trickier when your stub tries not jsut to bridge between XML and Java but also to smooth out the differences between several on-the-wire protocols, as the toolkits above do. The hope, of course, is that there will eventually be enough standardization of on-the-wire protocols to make this a moot point.</p>


<p>Related posts:<ol><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/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/984' rel='bookmark' title='Permanent Link: Thoughts on the &#8220;Simple Cloud API&#8221;'>Thoughts on the &#8220;Simple Cloud API&#8221;</a></li>
<li><a href='http://stage.vambenepe.com/archives/210' rel='bookmark' title='Permanent Link: Recent IT management announcements'>Recent IT management announcements</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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/951/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Separating model from protocol in Cloud APIs</title>
		<link>http://stage.vambenepe.com/archives/943</link>
		<comments>http://stage.vambenepe.com/archives/943#comments</comments>
		<pubDate>Sat, 05 Sep 2009 05:46:38 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<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[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=943</guid>
		<description><![CDATA[What happened to the separation between the model and the protocol in management APIs? For all the arguments we had in the design of WSDM and WS-Management, this was one fundamental concept that took little discussion before everyone agreed: that the protocol (the interaction model and the on-the-wire shape of the messages used) should be [...]


Related posts:<ol><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/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/1311' rel='bookmark' title='Permanent Link: Two versions of a protocol is one too many'>Two versions of a protocol is one too many</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/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/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>What happened to the separation between the model and the protocol in management APIs? For all the arguments we had in the design of <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsdm">WSDM</a> and <a href="http://www.dmtf.org/standards/wsman">WS-Management</a>, this was one fundamental concept that took little discussion before everyone agreed: that the protocol (the interaction model and the on-the-wire shape of the messages used) should be defined in a way that is agnostic to the type of resource being managed (computers, elevators or toasters &#8212; the perennial silly example). To this end, WSDM took pains to release MUWS (Management Using Web Services) and MOWS (Management Of Web Services) as two different specifications.</p>
<p>Contrast that to the different <a href="http://spreadsheets.google.com/ccc?key=pGccO5mv6yH8Y4wV1ZAJrbQ&amp;hl=en">Cloud APIs</a> (there is a new one released every other day). If they have one thing in common it is that they happily ignore this principle and tackle protocol concerns alongside the resource model. Here are my guesses as to why that is:</p>
<p><strong>1) It&#8217;s a land grad</strong></p>
<p>The goal is not to produce the best long-term API, it&#8217;s to be out early, to stake your claim and to gain leverage, so that you can steer the final standard close to your implementation. Editorial niceties like properly factoring the specification are not major concerns, there will be plenty of time for this during the standardization process. In fact, leaving such improvements for the standardization phase is a nice way to make it look like the group is not just rubberstamping, while not changing much that actually impacts your implementation. The good old &#8220;give them something insignificant to argue about&#8221; trick. It works BTW.</p>
<p>As an example of how rushed some of these submissions can be, did you notice that what VMWare submitted to DMTF this week is the <a href="http://communities.vmware.com/static/vcloudapi/vCloud_API_Specification_v0.8.pdf">vCloud API Specification v0.8</a> (a 7-page document that is simply a list of operations), not the accompanying <a href="http://communities.vmware.com/static/vcloudapi/vCloud_API_Programming_Guide_v0.8.pdf">vCloud API programming guide v0.8</a> which is ten times longer and is the real specification, the place where the operation semantics, payload formats and protocol considerations are actually described and without which the previous document cannot possibly be implemented. Presumably the VMWare team was pressed to release on time for a VMWorld announcement and they came up with this to be able to submit without finishing all the needed editorial work. I assume this will follow soon and in the meantime the DMTF members will retrieve the programming guide from the VMWare site in order to make sense of what was submitted to them.</p>
<p>This kind of rush is not rare in the history of specification submission, even those that have been in the work for a long time . For example, the initial <a href="http://lists.oasis-open.org/archives/wsdm/200308/msg00052.html">CBE submission</a> by IBM had &#8220;IBM Confidential&#8221; all over the <a href="http://xml.coverpages.org/IBMCommonBaseEventV111.pdf">specification</a> and a mention that one should retrieve the most up to date version from the <em>&#8220;Autonomic Computing Problem Determination Offering Team Notes Database&#8221;</em> (presumably non-IBMers were supposed to break into the server).</p>
<p>If lack of time is the main reason why all these APIs do not factor out the protocol aspects then I have no problem, there is plenty of time to address it. But I suspect that there may be other reasons, that some may see it as a feature rather than a bug. For example:</p>
<p><strong>2) Anything but WS-*</strong></p>
<p>SOAP-based interfaces (WS-* or WS-DeathStar) have a bad rap and doing anything in the opposite way is a crowd pleaser (well, in the blogosphere at least). Modularity and composition of specifications is a major driving force behind the WS-* work, therefore it is bad and we should make all specifications of the new REST order stand-alone.</p>
<p><strong>3) Keep it simple</strong></p>
<p>A more benevolent way to put it is the concern to keep things simple. If you factor specifications out you put on the developer the burden of assembling the complete documentation, plus you introduce versioning issues between the parts. One API document that fully describes the contract is simpler.</p>
<p><strong>4) We don&#8217;t need no stinking&#8217; protocol, we have HTTP<br />
</strong></p>
<p>Isn&#8217;t <a href="http://www.ietf.org/rfc/rfc2616.txt">this</a> the protocol? Through the magic of REST, all that&#8217;s needed is a resource model, right? But if you look in the specifications you see sections about authentication, fault handling, <a href="http://www.tbray.org/ongoing/When/200x/2009/07/02/Slow-REST">long-lived operations</a>, enumeration of long result sets, etc&#8230; Things that have nothing to do with the resource model.</p>
<p><strong>So what?</strong></p>
<p>Why is this confluence of model and protocol in one specification bad? If nothing else, the &#8220;keep it simple&#8221; argument (#3) above has plenty of merits, doesn&#8217;t it? Aren&#8217;t WSDM and WS-Management just over-engineered?</p>
<p>They may be, but not because they offer this separation. Consider the following practical benefits of separating the protocol from the model:</p>
<p><strong>1) We can at least agree on one part<br />
</strong></p>
<p>Thanks to the &#8220;REST is the new black&#8221; attitude in Cloud circles, there are lots of commonalities between these various Cloud APIs. Especially the more recent ones, those that I think of as &#8220;second generation&#8221; APIs: vCloud, Sun API, GoGrid and OCCI (Amazon EC2 is the main &#8220;1st generation&#8221; Cloud API, back when people weren&#8217;t too self-conscious about not just using HTTP but really &#8220;doing REST&#8221;). As an example of convergence between second generation specifications, see for example, how vCloud and the Sun API <a href="http://stage.vambenepe.com/archives/936">both use</a> <em>&#8220;202 Accepted&#8221;</em> and a dedicated &#8220;status&#8221; resource to handle long-lived operations. More comparisons <a href="http://stage.vambenepe.com/archives/863">here</a>.</p>
<p>Where they differ on such protocol matters, it wouldn&#8217;t be hard to modify one&#8217;s implementation to use an alternative approach. Things become a lot more sensitive when you touch the resource model, which reflects the actual capabilities of the Cloud management infrastructure. How much flexibility in the network setup? What kind of application provisioning? What affinity/anti-affinity control level? Can I get block-level storage? Etc. Having to implement the other guy&#8217;s interface in these matters is not just a matter of glue code, it&#8217;s a major product feature. As a result, the resource model is a much more strategic control point than the protocol. Would you rather dictate the terms of a contract or the color of the ink in which it is printed?</p>
<p>That being the case, I suspect that there could be relatively quick and painless agreement on that first layer of the Cloud API: a set of protocol considerations, based on HTTP and REST, that provide a resource control framework with support for security, events, long-running operations, faults, many-as-one semantics, enumeration, etc. Or rather, that if there is to be a &#8220;quick and painless&#8221; agreement on anything related to Cloud computing standards it can only be on something that is limited to protocol concerns. It doesn&#8217;t have to be long and complex. It doesn&#8217;t have to be factored in 8 different specifications like WS-* did. It can be just one specification. Keep it simple, ignore all use cases that aren&#8217;t related to Cloud Computing. In the end, please call it MUR (Management Using REST)&#8230; ;-)</p>
<p><strong>2) Many Clouds, one protocol to rule them all</strong></p>
<p>Whichever Cloud taxonomy strikes your fancy (I am so disappointed that <a href="http://stage.vambenepe.com/archives/523">SADIST-PIMP</a> hasn&#8217;t caught on), it&#8217;s pretty clear that there will not be one kind of Cloud. There will be at least some IaaS, some PaaS and plenty of SaaS. There will not be one API that provides control of them all, but they can share a base protocol that will make life a lot easier for developers. These Clouds won&#8217;t be isolated, developers will use them as a continuum.</p>
<p><strong>3) Not just one access model</strong></p>
<p>As much as it makes sense to start from simple and mostly synchronous operations, there will be many different interaction models for Cloud Computing. In addition to the base operations, we may get more of a desired-state/blueprint interaction pattern, based on the same resource model. Or, somewhere in-between, some kind of stored execution flow where modules are passed around rather than individual operations. Also, as the level of automation increases you may want a base framework that is more event-friendly for rapid close-loop management. And there are other considerations involved (like resource monitoring, policies&#8230;) not currently covered by these specifications but that can surely reuse the protocol aspects. By factoring out the resource model, you make it possible for these other interaction patterns to emerge in a compatible way.</p>
<p>The current Cloud APIs are not far away from this clean factoring. It would be an easy task to extract protocol considerations as a separate document, in large part due to the fact that REST prevents you from burying the resource model inside convoluted operation semantics. To some extent it&#8217;s just a partitioning issue, but the same can be said of many intractable and bloody armed conflicts around the world&#8230; Good fences make good neighbors in the world of IT specs too.</p>
<p>[UPDATE: Soon after this entry went to "press" (meaning soon after I pressed the publish button), I noticed this <a href="http://www.infoworld.com/d/developer-world/red-hat-eyes-rest-standardization-532">report</a> of a "REST-*" proposal by Mark Little of RedHat/JBOSS. I will reserve judgment until Mark has <a href="http://markclittle.blogspot.com/">blogged</a> about it or I have seen some other authoritative description. We may be talking about the same thing here. Or maybe not. The REST-* name surprises me a bit as I would expect opponents of such a proposal to name it just this way. We'll see.]</p>
<p>[UPDATE 2009/9/6: Apparently I am something like the <a href="http://www.elasticvapor.com/2009/09/one-cloud-standard-to-rule-them-all.html">26th person</a> to think of the "one protocol/API to rule them all" sentence. We geeks have such a shallow set of shared cultural references it's scary at times.]</p>
<p>[UPDATED 2009/11/12: Lori MacVittie has a very nice follow-up on this, with examples and interesting analogies. <a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/12/cloud-standards-and-pants.aspx">Check it out</a>.]</p>


<p>Related posts:<ol><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/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/1311' rel='bookmark' title='Permanent Link: Two versions of a protocol is one too many'>Two versions of a protocol is one too many</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/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/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/943/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Cloud catalog catalyst or cloud catalog cataclysm?</title>
		<link>http://stage.vambenepe.com/archives/889</link>
		<comments>http://stage.vambenepe.com/archives/889#comments</comments>
		<pubDate>Tue, 28 Jul 2009 06:23:45 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Governance]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Portability]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=889</guid>
		<description><![CDATA[Like librarians, we IT wonks tend to like things cataloged. To date, the last instance of this has been SOA governance and its various registries and repositories. With UDDI limping along as some kind of organizing standard for the effort. One issue I have with UDDI  is that its technical awkwardness is preventing us from [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1216' rel='bookmark' title='Permanent Link: Generalizing the Cloud vs. SOA Governance debate'>Generalizing the Cloud vs. SOA Governance debate</a></li>
<li><a href='http://stage.vambenepe.com/archives/1355' rel='bookmark' title='Permanent Link: &#8220;Freeing SaaS from Cloud&#8221;: slides and notes from Cloud Connect keynote'>&#8220;Freeing SaaS from Cloud&#8221;: slides and notes from Cloud Connect keynote</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>
<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/1025' rel='bookmark' title='Permanent Link: Cloud platform patching conundrum: PaaS has it much worse than IaaS and SaaS'>Cloud platform patching conundrum: PaaS has it much worse than IaaS and SaaS</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>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Like librarians, we IT wonks tend to like things cataloged. To date, the last instance of this has been SOA governance and its various registries and repositories. With UDDI limping along as some kind of organizing standard for the effort. One issue I have with UDDI  is that its technical awkwardness is preventing us from learning from its failure to realize its ambitious goals (<a href="http://web.archive.org/web/20001018125313/http://www.devx.com/free/hotlinks/2000/ednote090600.asp">&#8220;e-business heaven&#8221;</a>). It would be too easy to attribute the UDDI disappointment to UDDI. Rather, it should be laid at the feet of unreasonable initial expectations.</p>
<p>The SOA governance saga is still ongoing, now away from the spotlight and mostly from an implementation perspective rather than a standard perspective (by the way, what&#8217;s up with <a href="http://stage.vambenepe.com/archives/155">GIF</a>?). Instead, the spotlight has turned to Cloud computing and that&#8217;s what we are supposedly going to control through cataloging next.</p>
<p>Earlier this year, I <a href="http://stage.vambenepe.com/archives/569">commented</a> on the <a href="http://www.servicecatalogs.com/servicecatalogs/2009/02/announcing-serv.html">release</a> of an ITSM catalog product for Cloud computing (though I was addressing the convergence of ITSM and Cloud computing more than catalogs per se).</p>
<p>More recently, Lori MacVittie <a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/02/governance-service-catalogs-and-the-cloud.aspx">related</a> SOA governance to the need for Cloud catalogs. She makes some good points, but I also see some familiar-looking &#8220;irrational exuberance&#8221;. The idea of dynamically discovering and invoking a Cloud service reminds me too much of the initial &#8220;yellow pages&#8221; scenarios for UDDI (which quickly got dropped in favor of a more modest internal governance focus).</p>
<p>I am not convinced by the reason Lori gives for why things are different this time around (<em>&#8220;one of the interesting things virtualization brings to the table that SOA did not is the ability to abstract management of services&#8221;</em>). She argues that SOA governance only gave you access to the operational WSDL of a Web service, while Cloud catalogs will give you access to their management API. But if your service is an IT service, then your so-called management API (launch/configure/control VMs) is really its operational interface. The real management interface is the one Amazon uses under the cover and they are not going to expose it to you anymore than your bank is going to expose its application server administration console to you (if they do, move your money somewhere else before someone does it for you).</p>
<p>After all, isn&#8217;t SOA governance pretty close to a SaaS catalog which is itself a small part of the overall Cloud (IaaS+PaaS+SaaS) catalog question? If we still haven&#8217;t succeeded in the smaller scope, what are the odds of striking gold quickly in the larger effort?</p>
<p><a href="http://www.datacenterknowledge.com/archives/2009/07/27/cloud-brokers-the-next-big-opportunity/">Some</a> <a href="http://www.gartner.com/it/page.jsp?id=1064712">analysts</a> take a more pragmatic view, involving active brokers rather than simply a new DNS record type. I am doubtful about these brokers (0.2 probability, as Gartner would put it) but at least this moves the question onto business terms (leverage, control) rather than technical terms. Which is where the battle will be fought.</p>
<p>When it comes to Cloud catalogs, I think they are needed (if only for the categorization of Cloud services that they require) but will only play a supporting role, if any, in any move towards dynamic Cloud provisioning. As with SOA governance it&#8217;s as an internal tool, supported by strong processes, that they will be most useful.</p>
<p>Throughout human history, catalogs have been substitutes for control more often than instruments of control. Think of astronomy, zoology and&#8230; <a href="http://en.wikipedia.org/wiki/Nephology">nephology</a> for example. What kind will IT Cloud catalogs be?</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1216' rel='bookmark' title='Permanent Link: Generalizing the Cloud vs. SOA Governance debate'>Generalizing the Cloud vs. SOA Governance debate</a></li>
<li><a href='http://stage.vambenepe.com/archives/1355' rel='bookmark' title='Permanent Link: &#8220;Freeing SaaS from Cloud&#8221;: slides and notes from Cloud Connect keynote'>&#8220;Freeing SaaS from Cloud&#8221;: slides and notes from Cloud Connect keynote</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>
<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/1025' rel='bookmark' title='Permanent Link: Cloud platform patching conundrum: PaaS has it much worse than IaaS and SaaS'>Cloud platform patching conundrum: PaaS has it much worse than IaaS and SaaS</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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/889/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>REST in practice for IT and Cloud management (part 1: Cloud APIs)</title>
		<link>http://stage.vambenepe.com/archives/863</link>
		<comments>http://stage.vambenepe.com/archives/863#comments</comments>
		<pubDate>Thu, 16 Jul 2009 08:15:31 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Amazon]]></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[REST]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[SOAP header]]></category>
		<category><![CDATA[SOAP processing model]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=863</guid>
		<description><![CDATA[In this entry I compare four public Cloud APIs (AWS EC2, GoGrid, Rackspace and Sun Cloud) to see what practical benefits REST provides for resource management protocols.
As someone who was involved with the creation of the WS-* stack (especially the parts related to resource management) and who genuinely likes the SOAP processing model I have [...]


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/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/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/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/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>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In this entry I compare four public Cloud APIs (AWS EC2, GoGrid, Rackspace and Sun Cloud) to see what practical benefits REST provides for resource management protocols.</p>
<p>As someone who was involved with the creation of the WS-* stack (especially the parts related to resource management) and who genuinely likes the <a href="http://stage.vambenepe.com/archives/118">SOAP processing model</a> I have a tendency to be a little defensive about REST, which is often defined in opposition to WS-*. On the other hand, as someone who started writing web apps when the state of the art was a CGI Perl script, who loves on-the-wire protocols (e.g. this <a href="http://stage.vambenepe.com/archives/816">recent</a> <a href="http://stage.vambenepe.com/archives/837">exploration</a> of the Windows management stack from an on-the-wire perspective), who is happy to deal with raw XML (as long as I get to do it with a <a href="http://www.xom.nu/">good library</a>), who appreciates the semantic web, and who values models over protocols the REST principles are very natural to me.</p>
<p>I have read the <a href="http://www.infoq.com/articles/rest-introduction">introduction</a> and the <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">bible</a> but beyond this I haven&#8217;t seen a lot of practical and profound information about using REST (by &#8220;profound&#8221; I mean something that is not obvious to anyone who has written web applications). I had high hopes when Pete Lacey <a href="http://72.249.21.88/nonintersecting/2009/01/17/introducing-the-xprest-project/">promised</a> to deliver this through a realistic example, but it seems to have stalled after <a href="http://72.249.21.88/nonintersecting/2009/01/23/lesson-zero/">two</a> <a href="http://72.249.21.88/nonintersecting/2009/01/30/lesson-one-rest-from-the-beginning/">posts</a>. Still, his <a href="http://www.infoq.com/interviews/pete-lacey-rest">conversation with Stefan Tilkov</a> (video + transcript) remains the most informed comparison of WS-* and REST.</p>
<p>The domain I care the most about is IT resource management (which includes &#8220;Cloud&#8221; in my view). I am familiar with most of the remote API mechanisms in this area (SNMP to WBEM to WMI to JMX/RMI to OGSI, to WSDM/WS-Management to a flurry of proprietary interfaces). I can think of ways in which some REST principles would help in this area, but they are mainly along the lines of &#8220;any consistent set of principles would help&#8221; rather than anything specific to REST. For a while now I have been wondering if I am missing something important about REST and its applicability to IT management or if it&#8217;s mostly a matter of &#8220;just pick one protocol and focus on the model&#8221; (as well as simply avoiding the various drawbacks of the alternative methods, which is a valid reason but not an intrinsic benefit of REST).</p>
<p>I have been trying to learn from others, by looking at how they apply REST to IT/Cloud management scenarios. The Cloud area has been especially fecund in such specifications so I will focus on this for part 1. Here is what I think we can learn from this body of work.</p>
<p><strong>Amazon EC2</strong></p>
<p>When it came out a few years ago, the Amazon <a href="http://docs.amazonwebservices.com/AWSEC2/2006-10-01/DeveloperGuide/">EC2 API</a>, with its equivalent SOAP and plain-HTTP alternatives, did nothing to move me from the view that it&#8217;s just a matter of picking a protocol and being consistent. They give you the choice of plain HTTP versus SOAP, but it&#8217;s just a matter of tweaking how the messages are serialized (URL parameters versus a SOAP message in the input; whether or not there is a SOAP wrapper in the output). The operations are the same whether you use SOAP or not. The responses don&#8217;t even contain URLs. For example, &#8220;RunInstances&#8221; returns the IDs of the instances, not a URL for each of them. You then call &#8220;TerminateInstances&#8221; and pass these instance IDs as parameters rather than doing a &#8220;delete&#8221; on an instance URL. This API seems to have served Amazon (and their ecosystem) well. It&#8217;s easy to understand, easy to use and it provides a convenient way to handle many instances at once. Since no SOAP header is supported, the SOAP wrapper adds no value (I remember reading that the adoption rate for the EC2 SOAP API reflect this though I don&#8217;t have a link handy).</p>
<p>Overall, seeing the EC2 API did not weaken my suspicion that there was no fundamental difference between REST and SOAP in the IT/Cloud management field. But I was very aware that Amazon didn&#8217;t really &#8220;do&#8221; REST in the EC2 API, so the possibility remained that someone would, in a way that would open my eyes to the benefits of true REST for IT/Cloud management.</p>
<p>Fast forward to 2009 and many people have now created and published RESTful APIs for Cloud computing. APIs that are backed by real implementations and that explicitly claim RESTfulness (unlike Amazon). Plus, their authors have great credentials in datacenter automation and/or REST design. First came GoGrid, then the Sun Cloud API and recently Rackspace. So now we have concrete specifications to analyze to understand what REST means for resource management.</p>
<p>I am not going to do a detailed comparative review of these three APIs, though I may get to that in a future post. Overall, they are pretty similar in many dimensions. They let you do similar things (create server instances based on images, destroy them, assign IPs to them&#8230;). Some features differ: GoGrid supports more load balancing features, Rackspace gives you control of backup schedules, Sun gives you clusters (a way to achieve the kind of manage-as-group features inherent in the EC2 API), etc. Leaving aside the feature-per-feature comparison, here is what I learned about what REST means in practice for resource management from each of the three specifications.</p>
<p><strong>GoGrid</strong></p>
<p>Though it calls itself &#8220;REST-like&#8221;, the <a href="http://wiki.gogrid.com/wiki/index.php/API">GoGrid API</a> is actually more along the lines of EC2. The first version of their API claimed that &#8220;the API is a REST-like API meaning all API calls are submitted as HTTP GET or POST requests&#8221; which is the kind of &#8220;HTTP ergo REST&#8221; declaration that makes me cringe. It&#8217;s been somewhat rephrased in later versions (thank you) though they still use the undefined term &#8220;REST-like&#8221;. Maybe it refers to their use of <a href="http://wiki.gogrid.com/wiki/index.php/API:Common_API_Call_Patterns">&#8220;call patterns&#8221;</a>. The main difference with EC2 is that they put the operation name in the URI path rather than the arguments. For example, EC2 uses</p>
<p><em>https://ec2.amazonaws.com/?Action=<strong>TerminateInstances</strong>&amp;InstanceId.1=i-2ea64347&amp;&#8230;(auth-parameters)&#8230;</em></p>
<p>while GoGrid uses</p>
<p><em>https://api.gogrid.com/api/grid/server/<strong>delete</strong>?name=My+Server+Name&amp;&#8230;(auth-parameters)&#8230;</em></p>
<p>So they have action-specific endpoints rather than a do-everything endpoint. It&#8217;s unclear to me that this change anything in practice. They don&#8217;t pass resource-specific URLs around (especially since, like EC2, they include the authentication parameters in the URL), they simply pass IDs, again like EC2 (but unlike EC2 they only let you delete one server at a time). So whatever &#8220;REST-like&#8221; means in their mind, it doesn&#8217;t seem to be &#8220;RESTful&#8221;. Again, the EC2 API gets the job done and I have no reason to think that GoGrid doesn&#8217;t also. My comments are not necessarily a criticism of the API. It&#8217;s just that it doesn&#8217;t move the needle for my appreciation of REST in the context of IT management. But then again, &#8220;instruct William Vambenepe&#8221; was probably not a goal in their functional spec</p>
<p><strong>Rackspace</strong></p>
<p>In this <a href="http://blog.mosso.com/2009/07/an-interview-with-the-architects-of-the-cloud-servers-api/">&#8220;interview&#8221;</a> to announce the release of the <a href="http://www.rackspacecloud.com/cloud_hosting_products/servers/api">Rackspace &#8220;Cloud Servers&#8221; API</a>, lead architects Erik Carlin and Jason Seats make a big deal of their goal to apply REST principles: <em>&#8220;We wanted to adhere as strictly as possible to RESTful practice. We iterated several times on the design to make it more and more RESTful. We actually did an update this week where we made some final changes because we just didn’t feel like it was RESTful enough&#8221;</em>. So presumably this API should finally show me the benefits of true REST in the IT resource management domain. And to be sure it does a better job than EC2 and GoGrid at applying REST principles. The authentication uses HTTP headers, keeping URLs clean. They use the different HTTP verbs the way they are intended. Well mostly, as some of the logic escapes me: doing a GET on /servers/<em>id</em> (where <em>id</em> is the server ID) returns the details of the server configuration, doing a DELETE on it terminates the server, but doing a PUT on the same URL changes the admin username/password of the server. Weird. I understand that the output of a GET can&#8217;t always have the same content as the input of a PUT on the same resource, but here they are not even similar. For non-CRUD actions, the API introduces a special URL (/servers/<em>id</em>/action) to which you can POST. The type of the payload describes the action to execute (reboot, resize, rebuild&#8230;). This is very similar to Sun&#8217;s &#8220;controller URLs&#8221; (see below).</p>
<p>I came out thinking that this is a nice on-the-wire interface that should be easy to use. But it&#8217;s not clear to me what REST-specific benefit it exhibits. For example, how would this API be less useful if &#8220;delete&#8221; was another action POSTed to /servers/<em>id</em>/action rather than being a DELETE on /servers/<em>id</em>? The authors carefully define the HTTP behavior (content compression, caching&#8230;) but I fail to see how the volume of data involved in using this API necessitates this (we are talking about commands here, not passing disk images around). Maybe I am a lazy pig, but I would systematically bypass the cache because I suspect that the performance benefit would be nothing in comparison to the cost of having to handle in my code the possibility of caching taking place (<em>&#8220;is it ok here that the content might be stale? what about here? and here?&#8221;</em>).</p>
<p><strong>Sun</strong></p>
<p>Like Rackspace, the <a href="http://kenai.com/projects/suncloudapis/pages/Home">Sun Cloud API</a> is explicitly RESTful. And, by virtue of Tim Bray being on board, we benefit from not just seeing the API but also <a href="http://www.tbray.org/ongoing/When/200x/2009/03/16/Sun-Cloud">reading</a> in well-explained <a href="http://www.tbray.org/ongoing/When/200x/2009/07/02/Slow-REST">details</a> the issues, alternatives and choices that went into it. It is pretty similar to the Rackspace API (e.g. the &#8220;controller URL&#8221; approach mentioned above) but I like it a bit better and not just because the underlying model is richer (and getting richer every day as I just realized by re-reading it tonight). It handles many-as-one management through clusters in a way that is consistent with the direct resource access paradigm. And what you PUT on a resource is closely related to what you GET from it.</p>
<p>I have <a href="http://stage.vambenepe.com/archives/632">commented before</a> on the Sun Cloud API (though the increasing richness of their model is starting to make my comments less understandable, maybe I should look into changing the links to a point-in-time version of Kenai). It shows that at the end it&#8217;s the model, not the protocol that matters. And Tim is right to see REST in this case as more of a set of hygiene guidelines for on-the-wire protocols then as the enabler for some unneeded scalability (which takes me back to wondering why the Rackspace guys care so much about caching).</p>
<p><strong>Anything learned?</strong></p>
<p>So, what do these APIs teach us about the practical value of REST for IT/Cloud management?</p>
<p>I haven&#8217;t written code against all of them, but I get the feeling that the Sun and Rackspace APIs are those I would most enjoy using (Sun because it&#8217;s the most polished, Rackspace because it doesn&#8217;t force me to use JSON). The JSON part has two component. One is simply my lack of familiarity with using it compared to XML, but I assume I&#8217;ll quickly get over this when I start using it. The second is my concern that it will be cumbersome when the models handled get more complex, heterogeneous and versioned, chiefly from the lack of namespace support. But this is a topic for another day.</p>
<p>I can&#8217;t tell if it&#8217;s a coincidence that the most attractive APIs to me happen to be the most explicitly RESTful. On the one hand, I don&#8217;t think they would be any less useful if all the interactions where replaced by XML RPC calls. Where the payloads of the requests and responses correspond to the parameters the APIs define for the different operations. The Sun API could still return resource URLs to me (e.g. a VM URL as a result of creating a VM) and I would send reboot/destroy commands to this VM via XML RPC messages to this URL. How would it matter that everything goes over HTTP POST instead of skillfully choosing the right HTTP verb for each operation? BTW, whether the XML RPC is SOAP-wrapped or not is only a secondary concern.</p>
<p>On the other hand, maybe the process of following REST alone forces you to come up with a clear resource model that makes for a clean API, independently of many of the other REST principles. In this view, REST is to IT management protocol design what classical music training is to a rock musician.</p>
<p>So, at least for the short-term expected usage of these APIs (automating deployments, auto-scaling, cloudburst, load testing, etc) I don&#8217;t think there is anything inherently beneficial in REST for IT/Cloud management protocols. What matter is the amount of thought you put into it and that it has a clear on-the-wire definition.</p>
<p>What about longer term scenarios? Wouldn&#8217;t it be nice to just use a Web browser to navigate HTML pages representing the different Cloud resources? Could I use these resource representations to create mashups tying together current configuration, metrics history and events from wherever they reside? In other words, could I throw away my IT management console because all the pages it laboriously generates today would exist already in the ether, served by the controllers of the resources. Or rather as a mashup of what is served by these controllers. Such that my IT management console is really &#8220;in the cloud&#8221;, meaning not just running in somebody else&#8217;s datacenter but rather assembled on the fly from scattered pieces of information that live close to the resources managed. And wouldn&#8217;t this be especially convenient if/when I use a &#8220;federated&#8221; cloud, one that spans my own datacenter and/or multiple Cloud providers? The scalability of REST could then become more relevant, but more importantly its mashup-friendliness and location transparency would be essential.</p>
<p>This, to me, is the intriguing aspect of using REST for IT/Cloud management. This is where the Sun Cloud API would beat the EC2 API. Tim says that in the Sun Cloud &#8220;the router is just a big case statement over URI-matching regexps&#8221;. Tomorrow this router could turn into five different routers deployed in different locations and it wouldn&#8217;t change anything for the API user. Because they&#8217;d still just follow URLs. Unlike all the others APIs listed above, for which you know the instance ID but you need to somehow know which controller to talk to about this instance. Today it doesn&#8217;t matter because there is one controller per Cloud and you use one Cloud at a time. Tomorrow? As Tim says, &#8220;the API doesn’t constrain the design of the URI space at all&#8221; and this, to me, is the most compelling long-term reason to use REST. But it only applies if you use it properly, rather than just calling your whatever-over-HTTP interface RESTful. And it won&#8217;t differentiate you in the short term.</p>
<p>The second part in the &#8220;REST in practice for IT and Cloud management&#8221; series will be about the use of REST for configuration management and especially federation. Where you can expect to read more about the benefits of links (I mean &#8220;hypermedia&#8221;).</p>
<p>[UPDATE: <a href="http://stage.vambenepe.com/archives/894">Part 2</a> is now available. Also make sure to read the <a href="http://stage.vambenepe.com/archives/863#comments">comments</a> bellow.]</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/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/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/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/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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/863/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>YACSOE</title>
		<link>http://stage.vambenepe.com/archives/856</link>
		<comments>http://stage.vambenepe.com/archives/856#comments</comments>
		<pubDate>Mon, 13 Jul 2009 17:26:10 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DMTF]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Grid]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=856</guid>
		<description><![CDATA[Yet another cloud standards organization effort. This one is better than the others because it has the best domain name.
A press release to announce a Wiki. Sure. Whatever. Electrons are cheap.
Cynicism aside, it can&#8217;t hurt. But what would be really useful is if all these working groups opened up their mailing list archives and document [...]


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/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/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/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/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/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>Yet another cloud standards organization effort. This one is better than the others because it has the best domain name.</p>
<p>A <a href="http://cloud-standards.org/wiki/index.php?title=Press_Release">press release</a> to announce a <a href="http://cloud-standards.org/wiki/index.php?title=Main_Page">Wiki</a>. Sure. Whatever. Electrons are cheap.</p>
<p>Cynicism aside, it can&#8217;t hurt. But what would be really useful is if all these working groups opened up their mailing list archives and document repositories so that the Wiki can be a launching pad to actual content rather than a set of one-line descriptions of what each group is supposed to work on. With useful direct links to the most recent drafts and lists of issues under consideration. Similar to the home page of a W3C working group, but across groups. Let&#8217;s hope this is a first step in that direction.</p>
<p>I am also interested in where they&#8217;ll draw the line between Cloud computing and IT management. If such a line remains.</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/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/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/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/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/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/856/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>File upload/download and remote program execution using WS-Management &#8211; a practical solution</title>
		<link>http://stage.vambenepe.com/archives/844</link>
		<comments>http://stage.vambenepe.com/archives/844#comments</comments>
		<pubDate>Wed, 01 Jul 2009 06:29:33 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[Manageability]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Portability]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[WS-Management]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=844</guid>
		<description><![CDATA[The previous blog post described a way to upload and (in theory at least) download text files to/from a remote Windows machine using WS-Management. In practice, the applicability of the method is  limited for upload (text files only, slow for large files) and almost nonexistent for download. Here is a much improved version.
This is another [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/837' rel='bookmark' title='Permanent Link: Uploading a file to a Windows machine via WMI/WS-Management'>Uploading a file to a Windows machine via WMI/WS-Management</a></li>
<li><a href='http://stage.vambenepe.com/archives/816' rel='bookmark' title='Permanent Link: Native &#8220;SSH&#8221; on Windows via WS-Management'>Native &#8220;SSH&#8221; on Windows via 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/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/203' rel='bookmark' title='Permanent Link: JSR262 public review ballot'>JSR262 public review ballot</a></li>
<li><a href='http://stage.vambenepe.com/archives/200' rel='bookmark' title='Permanent Link: WS-ManagementHammer: don&#8217;t do it but if you are going to do it anyway then&#8230;'>WS-ManagementHammer: don&#8217;t do it but if you are going to do it anyway then&#8230;</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://stage.vambenepe.com/archives/837">previous blog post</a> described a way to upload and (in theory at least) download text files to/from a remote Windows machine using WS-Management. In practice, the applicability of the method is  limited for upload (text files only, slow for large files) and almost nonexistent for download. Here is a much improved version.</p>
<p>This is another example of something that was too obvious for me to see last weekend when I was in the thick of fighting with WS-Management SOAP messages and learning about WMI classes. It just took a day of not thinking about it to have the solution pop in my mind: use ftp.exe. For the longest time (at least since Windows NT) Windows has been shipping with this FTP client. And the <a href="http://www.nsftools.com/tips/MSFTP.htm">documentation</a> shows that you can call it from the command line and provide it with the name of a text file containing the commands to execute. Bingo.</p>
<p>Specifically, here are the steps. Let&#8217;s say that I want to run a program called task.exe on a remote Windows machine and that program takes a large binary file (data.bin) as input. I want to transfer both to the remote machine and then run the program. This can be done in 3 simple steps:</p>
<p><strong>Step 1</strong>: upload the FTP command file to the remote Windows machine. The content of the command file is below. <em>mgmtserver.myco.com</em> is the name of the machine from which the two files can be retrieved over FTP. I use anonymous FTP here, but you could just as well provide a username and password.</p>
<pre>open mgmtserver.myco.com
anonymous
binary
get task.exe
get data.bin
quit</pre>
<p><strong>Step 2</strong>: execute the FTP commands above. This downloads task.exe and data.bin from <em>mgmtserver.myco.com</em> onto the remote Windows machine.</p>
<p><strong>Step 3</strong>: execute the program on the remote Windows machine (&#8220;task.exe data.bin&#8221;).</p>
<p>Here are the on-the-wire messages corresponding to each step:</p>
<p><strong>Step 1</strong>: upload the FTP command file to the remote Windows machine</p>
<pre>&lt;s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
  xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing"
  xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"&gt;
  &lt;s:Header&gt;
    &lt;a:To&gt;http://server:80/wsman&lt;/a:To&gt;
    &lt;w:ResourceURI s:mustUnderstand="true"&gt;http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Process &lt;/w:ResourceURI&gt;
    &lt;a:ReplyTo&gt;
    &lt;a:Address s:mustUnderstand="true"&gt;http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous&lt;/a:Address&gt;
    &lt;/a:ReplyTo&gt;
    &lt;a:Action s:mustUnderstand="true"&gt;http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Process/Create&lt;/a:Action&gt;
    &lt;a:MessageID&gt;uuid:9A989269-283B-4624-BAC5-BC291F72E854&lt;/a:MessageID&gt;
  &lt;/s:Header&gt;
  &lt;s:Body&gt;
    &lt;p:Create_INPUT xmlns:p="http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Process"&gt;
      &lt;p:CommandLine&gt;cmd /c echo open mgmtserver.myco.com&gt;ftpscript&amp;amp;&amp;amp;echo
      anonymous&gt;&gt;ftpscript&amp;amp;&amp;amp;echo binary&gt;&gt;ftpscript&amp;amp;&amp;amp;echo get
      task.exe&gt;&gt;ftpscript&amp;amp;&amp;amp;echo get data.bin&gt;&gt;ftpscript&amp;amp;&amp;amp;echo
      quit&gt;&gt;ftpscript&lt;/p:CommandLine&gt;
      &lt;p:CurrentDirectory&gt;C:\data\winrm-test\&lt;/p:CurrentDirectory&gt;
    &lt;/p:Create_INPUT&gt;
  &lt;/s:Body&gt;
&lt;/s:Envelope&gt;</pre>
<p>As before, you need to set the Content-Type HTTP header to &#8220;application/soap+xml;charset=UTF-8&#8243; (or UTF-16).</p>
<p><strong>Step 2</strong>: execute the FTP commands to download the files from your server</p>
<p>It&#8217;s the same message, except the &lt;p:CommandLine&gt; element now has this value:</p>
<pre>&lt;p:CommandLine&gt;ftp -s:ftpscript&lt;/p:CommandLine&gt;</pre>
<p><strong>Step 3</strong>: execute the task.exe program on the remote Windows machine</p>
<p>Again, the same message except that the command line is simply:</p>
<pre>&lt;p:CommandLine&gt;C:\data\winrm-test\task.exe data.bin&lt;/p:CommandLine&gt;</pre>
<p>Note that I have broken this down in three messages for clarity, but you can easily bundle all three steps in one SOAP message. Just use this command line:</p>
<pre>&lt;p:CommandLine&gt;cmd /c echo open mgmtserver.myco.com&gt;ftpscript&amp;amp;&amp;amp;echo
anonymous&gt;&gt;ftpscript&amp;amp;&amp;amp;echo binary&gt;&gt;ftpscript&amp;amp;&amp;amp;echo get
task.exe&gt;&gt;ftpscript&amp;amp;&amp;amp;echo get data.bin&gt;&gt;ftpscript&amp;amp;&amp;amp;echo
quit&gt;&gt;ftpscript&amp;amp;&amp;amp;ftp -s:ftpscript&amp;amp;&amp;amp;C:\data\winrm-test\task.exe
data.bin&lt;/p:CommandLine&gt;</pre>
<p>Of course this can also be used in reverse, to download files from the remote Windows machine rather than upload files to it. Just use PUT or MPUT as FTP commands instead of GET or MGET.</p>
<p>This mechanism is a major improvement, for many use cases, over what I originally described. I feel a bit like someone who just changed a flat tire by loosening the lug nuts with his teeth and then found the lug wrench under the spare tire.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/837' rel='bookmark' title='Permanent Link: Uploading a file to a Windows machine via WMI/WS-Management'>Uploading a file to a Windows machine via WMI/WS-Management</a></li>
<li><a href='http://stage.vambenepe.com/archives/816' rel='bookmark' title='Permanent Link: Native &#8220;SSH&#8221; on Windows via WS-Management'>Native &#8220;SSH&#8221; on Windows via 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/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/203' rel='bookmark' title='Permanent Link: JSR262 public review ballot'>JSR262 public review ballot</a></li>
<li><a href='http://stage.vambenepe.com/archives/200' rel='bookmark' title='Permanent Link: WS-ManagementHammer: don&#8217;t do it but if you are going to do it anyway then&#8230;'>WS-ManagementHammer: don&#8217;t do it but if you are going to do it anyway then&#8230;</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/844/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

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