<?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; Automation</title>
	<atom:link href="http://stage.vambenepe.com/archives/category/automation/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>CMDB in the Cloud: not your father&#8217;s CMDB</title>
		<link>http://stage.vambenepe.com/archives/1527</link>
		<comments>http://stage.vambenepe.com/archives/1527#comments</comments>
		<pubDate>Wed, 16 Jun 2010 09:03:34 +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[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[ITIL]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1527</guid>
		<description><![CDATA[Bernd Harzog recently wrote a blog entry to examine whether &#8220;the CMDB [is] irrelevant in a Virtual and Cloud based world&#8220;. If I can paraphrase, his conclusion is that there will be something that looks like a CMDB but the current CMDB products are ill-equipped to fulfill that function. Here are the main reasons he [...]


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/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/673' rel='bookmark' title='Permanent Link: &#8220;Federationing&#8221;'>&#8220;Federationing&#8221;</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/773' rel='bookmark' title='Permanent Link: IT automation: the seven roads to management middleware'>IT automation: the seven roads to management middleware</a></li>
<li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Bernd Harzog recently wrote a blog entry to examine whether &#8220;<a href="http://www.virtualizationpractice.com/blog/?p=5726">the CMDB [is] irrelevant in a Virtual and Cloud based world</a>&#8220;. If I can paraphrase, his conclusion is that there will be something that looks like a CMDB but the current CMDB products are ill-equipped to fulfill that function. Here are the main reasons he gives for this prognostic:</p>
<ol>
<li><em>A whole new class of data gets created by the virtualization platform – specifically how the virtualization platform itself is configured in support of the guests and the applications that run on the guest.</em></li>
<li><em>A whole new set of relationships between the elements in this data get created – specifically new relationships between hosts, hypervisors, guests, virtual networks and virtual storage get created that existing CMDB’s were not built to handle.</em></li>
<li><em>New information gets created at a very rapid rate. Hundreds of new guests can get provisioned in time periods much too short to allow for the traditional Extract, Transform and Load processes that feed CMDB’s to be able to keep up.</em></li>
<li><em>The environment can change at a rate that existing CMDB’s cannot keep up with. Something as simple as vMotion events can create thousands of configuration changes in a few minutes, something that the entire CMDB architecture is simply not designed to keep up with.</em></li>
<li><em>Having portions of IT assets running in a public cloud introduces significant data collection challenges. Leading edge APM vendors like New Relic and AppDynamics have produced APM products that allow these products to collect the data that they need in a cloud friendly way. However, we are still a long way away from having a generic ability to collect the configuration data underlying a cloud based IT infrastructure – notwithstanding the fact that many current cloud vendors would not make this data available to their customers in the first place.</em></li>
<li><em>The scope of the CMDB needs to expand beyond just asset and configuration data and incorporate Infrastructure Performance, Applications Performance and Service assurance information in order to be relevant in the virtualization and cloud based worlds.</em></li>
</ol>
<p>I wanted to expand on some of these points.</p>
<p><strong>New model elements for Cloud (bullets #1 and #2)</strong></p>
<p>These first bullets are not the killers. Sure, the current CMDBs were designed before the rise of virtualized environment, but they are usually built on a solid modeling foundation that can easily be extend with new resources classes. I don&#8217;t think that extending the model to describe VM, VNets, Volumes, hypervisors and their relationships to the physical infrastructure is the real challenge.</p>
<p><strong>New approach to &#8220;discovery&#8221; (bullets #3 and #4)</strong></p>
<p>This, on the other hand is much more of a &#8220;dinosaurs meet meteorite&#8221; kind of historical event. A large part of the value provided by current CMDBs is their ability to automate resource discovery. This is often achieved via polling/scanning (at the hardware level) and heuristics/templates (directory names, port numbers, packet inspection, bird entrails&#8230;) for application discovery. It&#8217;s imprecise but often good enough in static environments (and when it fails, the CMDB complements the automatic discovery with a reconciliation process to let the admin clean things up). And it used to be all you could get anyway so there wasn&#8217;t much point complaining about the limitations. The crown jewel of many of today&#8217;s big CMDBs can often be traced back to smart start-ups specialized in application discovery/mapping, like Appilog (now HP, by way of Mercury) and nLayers (now EMC). And more recently the purchase of Tideway by BMC (ironically &#8211; but unsurprisingly &#8211; <a href="http://virtualization.com/acquisitions-acquisition-takeover/2009/10/20/bmc-software-snaps-up-tideway/">often</a> <a href="http://www.bsmreview.com/blog/2009/10/what-the-bmc-acquisition-of-tideway-means-to-the-bsm-market.htm">cast</a> in <a href="http://cloudstoragestrategy.com/2009/10/bmcs-tideway-acquisition-a-stairway-to-the-cloud.html ">Cloud terms</a>).</p>
<p>But this is not going to cut it in &#8220;the Cloud&#8221; (by which I really mean in a highly automated IT environment). As Bernd Harzog explains, the rate of change can completely overwhelm such discovery heuristics (plus, some of the network scans they sometimes use will get you in trouble in public clouds). And more importantly, there now is a better way. Why discover when you can ask? If resources are created via API calls, there are also API calls to find out which resources exist and how they are configured. This goes beyond the resources accessible via IaaS APIs, like what VMWare, EC2 and OVM let you retrieve. This &#8220;don&#8217;t guess, ask&#8221; approach to discovery needs to also apply at the application level. Rather than guessing what software is installed via packet inspection or filesystem spelunking, we need application-aware discovery that retrieves the application and configuration and dependencies from the application itself (or its underlying framework). And builds a model in which the connections between application entities are expressed in terms of the configuration settings that drive them rather than the side effects by which they can be noticed.</p>
<p>If I can borrow the <a href="http://lewsblog.newrelic.com/2010/06/08/make-no-small-plans/">words of Lew Cirne</a>:</p>
<p style="padding-left: 30px;"><em>&#8220;All solutions built in the pre-cloud era are modeled on jvms (or their equivalent), hosts and ports, rather than the logical application running in a more fluid environment. If the solution identifies a web application by host/port or some other infrastructural id, then you cannot effectively manage it in a cloud environment, since the app will move and grow, and your management system (that is, everything offered by the Big 4, as well as all infrastructure management companies that pay lip service to the application) will provide nearly-useless visibility and extraordinarily high TCO.&#8221;</em></p>
<p>I don&#8217;t agree with everything in Lew Cirne&#8217;s post, but this diagnostic is correct and well worded. He later adds:</p>
<p style="padding-left: 30px;"><em>&#8220;So application management becomes the strategic center or gravity for the client of a public or private cloud, and infrastructure-centric tools (even ones that claim to be cloudy) take on a lesser role.&#8221;</em></p>
<p>Which is also very true even if counter-intuitive for those who think that</p>
<p style="text-align: center;"><em>cloud = virtualization (in the &#8220;<a href="http://stage.vambenepe.com/archives/135">fake machine</a>&#8221; interpretation of virtualization)</em></p>
<p>Embracing such a VM-centric view naturally raises the profile of infrastructure management compared to application management, which is a fallacy in Cloud computing.</p>
<p><strong>Drawing the line between Cloud infrastructure management and application management (bullet #5)</strong></p>
<p>This is another key change that traditional CMDBs are going to have a hard time with. In a Big-4 CMDB, you&#8217;re after the mythical &#8220;single source of truth&#8221;. Even in a federated CMDB (which doesn&#8217;t really exist anyway), you&#8217;re trying to have a unified logical (if not physical) repository of information. There is an assumption that you want to manage everything from one place, so you can see all the inter-dependencies, across all layers of the stack (even if individual users may have a scope that is limited by permissions). Not so with public Clouds and even, I would argue, any private Cloud that is more than just a &#8220;cloud&#8221; sticker slapped on an old infrastructure. The fact that there is a clean line between the infrastructure model and the application model is not a limitation. It is empowering. Even if your Cloud provider was willing to expose a detailed view of the underlying infrastructure you should resist the temptation to accept. Despite the fact that it might be handy in the short term and provide an interesting perspective, it is self-defeating in the long term from the perspective of realizing the productivity improvements promised by the Cloud. These improvements require that the infrastructure administrator be freed from application-specific issues and focus on meeting the contract of the platform. And that the application administrator be freed from infrastructure-level concerns (while at the same time being empowered to diagnose application-level concerns). This doesn&#8217;t mean that the application and infrastructure models should be disconnected. There is a contract and both models (infrastructure and consumption) should represent it in the same way. It draws a line, albeit one with some width.</p>
<p><strong>Blurring the line between configuration and monitoring (bullet #6)</strong></p>
<p>This is another shortcoming of current CMDBs, but one that I think is more easily addressed. The &#8220;contract&#8221; between the Cloud infrastructure and the consuming application materializes itself in a mix of configuration settings, administrative capabilities and monitoring data. This contract is not just represented by the configuration-centric Cloud API that immediately comes to mind. It also includes the management capabilities and monitoring points of the resulting instances/runtimes.</p>
<p><strong>Wither CMDB?</strong></p>
<p>Whether all these considerations mean that traditional CMDBs are doomed in the Cloud as Bernd Harzog posits, I don&#8217;t know. In <a href="http://communities.bmc.com/communities/blogs/exitrow/2010/01/29/why-applications-matter-in-the-cloud">this post</a>, BMC&#8217;s Kia Behnia acknowledges the importance of application management, though it&#8217;s not clear that he agrees with their primacy. I am also waiting to see whether the application management portfolio he has assembled can really maps to the new methods of application discovery and management.</p>
<p>But these are resourceful organization, with plenty of smart people (as I can testify: in the end of my HP tenure I worked with the very sharp CMDB team that came from the Mercury acquisition). And let&#8217;s keep in mind that customers also value the continuity of support of their environment. Most of them will be dealing with a mix of old-style and Cloud applications and they&#8217;ll be looking for a unified management approach. This helps CMDB incumbents. If you doubt the power to continuity, take a minute to realize that the entire value proposition of hypervisor-style virtualization is centered around it. It&#8217;s the value of <a href="http://stage.vambenepe.com/archives/1198">backward-compatibility versus forward-compatibility</a>. in addition, CMDBs are evolving into CMS and are a lot more than configuration repositories. They are an important supporting tool for IT management processes. Whether, and how, these processes apply to &#8220;the Cloud&#8221; is a topic for another post. In the meantime, read what the <a href="http://www.itskeptic.org/does-cloud-computing-infrastructure-obviate-need-i">IT Skeptic</a> and <a href="http://www.cloudfrontoffice.com/2010/05/clouderati-vs-itilista-thoughts-on-the-linkage-of-cloud-and-itil-and-where-twain-fails-to-meet.html">Rodrigo Flores</a> have to say.</p>
<p>I wouldn&#8217;t be so quick to count the Big-4 out, even though I work every day towards that goal, building Oracle&#8217;s application and middleware management capabilities in conjunction with my colleagues focused on infrastructure management.</p>
<p>If the topic of application-centric management in the age of Cloud is of interest to you (and it must be if you&#8217;ve read this long entry all the way to the end), You might also find this previous entry relevant: &#8220;<a href="http://stage.vambenepe.com/archives/1216">Generalizing the Cloud vs. SOA Governance debate</a>&#8220;.</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/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/673' rel='bookmark' title='Permanent Link: &#8220;Federationing&#8221;'>&#8220;Federationing&#8221;</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/773' rel='bookmark' title='Permanent Link: IT automation: the seven roads to management middleware'>IT automation: the seven roads to management middleware</a></li>
<li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1527/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dear Cloud API, your fault line is showing</title>
		<link>http://stage.vambenepe.com/archives/1504</link>
		<comments>http://stage.vambenepe.com/archives/1504#comments</comments>
		<pubDate>Wed, 26 May 2010 04:10:08 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Utility computing]]></category>

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


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


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/936' rel='bookmark' title='Permanent Link: VMWare publishes (and submits) vCloud API'>VMWare publishes (and submits) vCloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/1284' rel='bookmark' title='Permanent Link: Waiting for events (in Cloud APIs)'>Waiting for events (in Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1108' rel='bookmark' title='Permanent Link: Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF'>Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1504/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The battle of the Cloud Frameworks: Application Servers redux?</title>
		<link>http://stage.vambenepe.com/archives/1407</link>
		<comments>http://stage.vambenepe.com/archives/1407#comments</comments>
		<pubDate>Thu, 22 Apr 2010 03:58:26 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Big picture]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1407</guid>
		<description><![CDATA[The battle of the Cloud Frameworks has started, and it will look a lot like the battle of the Application Servers which played out over the last decade and a half. Cloud Frameworks (which manage IT automation and runtime outsourcing) are to the Programmable Datacenter what Application Servers are to the individual IT server. In [...]


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/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/186' rel='bookmark' title='Permanent Link: SpringSource Application Management Suite'>SpringSource Application Management Suite</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/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/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The battle of the Cloud Frameworks has started, and it will look a lot like the battle of the Application Servers which played out over the last decade and a half. Cloud Frameworks (which manage IT automation and runtime outsourcing) are to the <a href="http://stage.vambenepe.com/archives/565">Programmable Datacenter</a> what Application Servers are to the individual IT server. In the longer term, these battlefronts may merge, but for now we&#8217;ve been transported back in time, to the early days of Web programming. The underlying dynamic is the same. It starts with a disruptive IT event (part new technology, part new mindset). 15 years ago the disruptive event was the Web. Today it&#8217;s Cloud Computing.</p>
<p><strong>Stage 1</strong></p>
<p>It always starts with very simple use cases. For the Web, in the mid-nineties, the basic use case was &#8220;how do I return HTML that is generated by a script as opposed to a static file&#8221;. For Cloud Computing today, it is &#8220;how do I programmatically create, launch and stop servers as opposed to having to physically install them&#8221;.</p>
<p>In that sense, the IaaS APIs of today are the equivalent of the Common Gateway Interface (CGI) circa 1993/1994. Like the EC2 API and its brethren, CGI was not optimized, not polished, but it met the basic use cases and allowed many developers to write their first Web apps (which we just called &#8220;CGI scripts&#8221; at the time).</p>
<p><strong>Stage 2</strong></p>
<p>But the limitations became soon apparent. In the CGI case, it had to do with performance (the cost of the &#8220;one process per request&#8221; approach). Plus, the business potential was becoming clearer and attracted a different breed of contenders than just academic and research institutions. So we got NSAPI, ISAPI, FastCGI, Apache Modules, JServ, ZDAC&#8230;</p>
<p>We haven&#8217;t reached that stage for Cloud yet. That will be when the IaaS APIs start to support events, enumerations, queries, federated identity etc&#8230;</p>
<p><strong>Stage 3</strong></p>
<p>Stage 2 looked like the real deal, when we were in it, but little did we know that we were still just nibbling on the hors d&#8217;oeuvres. And it was short-lived. People quickly decided that they wanted more than a way to handle HTTP requests. If the Web was going to be central to most programs, then all aspects of programming had to fit well in the context of the Web. We didn&#8217;t want Web servers anymore, we wanted application servers (re-purposing a term that had been used for client-server). It needed more features, covering data access, encapsulation, UI frameworks, integration, sessions. It also needed to meet non-functional requirements: availability, scalability (hello clustering), management, identity&#8230;</p>
<p>That turned into the battle between the various Java application servers as well as between Java and Microsoft (with .Net coming along), along with other technology stacks. That&#8217;s where things got really interesting too, because we explored different ways to attack the problem. People could still program at the HTTP request level. They could use MVC framework, ColdFusion/ASP/JSP/PHP-style markup-driven applications, or portals and other higher-level modular authoring frameworks. They got access to adapters, message buses, process flows and other asynchronous mechanisms. It became clear that there was not just one way to write Web applications. And the discovery is still going on, as illustrated by the later emergence of Ruby on Rails and similar frameworks.</p>
<p><strong>Stage 4</strong></p>
<p>Stage 3 is not over for Web applications, but stage 4 is already there, as illustrated by the fact that some of the gurus of stage 3 have <a href="http://www.tbray.org/ongoing/When/201x/2010/03/15/Joining-Google">jumped</a> to stage 4. It&#8217;s when the Web is everywhere. Clients are everywhere and so are servers for that matter. The distinction blurs. We&#8217;re just starting to figure out the applications that will define this stage, and the frameworks that will best support them. The game is far from over.</p>
<p><strong>So what does it mean for Cloud Frameworks?</strong></p>
<p>If, like me, you think that the development of Cloud Frameworks will follow a path similar to that of Application Servers, then the quick retrospective above can be used as a (imperfect) crystal ball. I don&#8217;t pretend to be a Middleware historian or that these four stages are the most accurate representation, but I think they are a reasonable perspective. And they hold some lessons for Cloud Frameworks.</p>
<p><strong>It&#8217;s early</strong></p>
<p>We are at stage 1. I&#8217;ll admit that my decision to separate stages 1 and 2 is debatable and mainly serves to illustrate how early in the process we are with Cloud frameworks. Current IaaS APIs (and the toolkits that support them) are the equivalent of CGI (and the early httpd), something that&#8217;s still around (Google App Engine emulates CGI in its Python incarnation) but almost no-one programs to directly anymore. It&#8217;s raw, it&#8217;s clunky, it&#8217;s primitive. But it was a needed starting point that launched the whole field of Web development. Just like IaaS APIs like EC2 have launched the field Cloud Computing.</p>
<p>Cloud Frameworks will need to go through the equivalent of all the other stages. First, the IaaS APIs will get more optimized and capable (stage 2). Then, at stage 3, we will focus on higher-level, more productive abstraction layers (generally referred to as PaaS) at which point we should expect a thousand different approaches to bloom, and several of them to survive. I will not hazard a guess as to what stage 4 will look like (here is my guess for stage 3, in <a href="http://stage.vambenepe.com/archives/1078">two</a> <a href="http://stage.vambenepe.com/archives/1096">parts</a>).</p>
<p><strong>No need to rush standards</strong></p>
<p>One benefit of this retrospective is to highlight <a href="http://stage.vambenepe.com/archives/1344">the tragedy of Cloud standards</a> compared to Web development standards. Wouldn&#8217;t we be better off today if the development leads of AWS and a couple of other Cloud providers had been openly cooperating in a Cloud equivalent of the www-talk mailing list of yore? Out of it came a rough agreement on HTML and CGI that allowed developers to write basic Web applications in a reasonably portable way. If the same informal collaboration had taken place for IaaS APIs, we&#8217;d have a simple de-facto consensus that would support the low-hanging fruits of basic IaaS. It would allow Cloud developers to support the simplest use cases, and relieve the self-defeating pressure to standardize too early. Standards played a huge role in the development of Application Servers (especially of the Java kind), but that really took place as part of stage 3. In the absence of an equivalent to CGI in the Cloud world, we are at risk of rushing the standardization without the benefit of the experimentation and lessons that come in stage 3.</p>
<p>I am not trying to sugar-coat the history of Web standards. The HTML saga is nothing to be inspired by. But there was an original effort to build consensus that wasn&#8217;t even attempted with Cloud APIs. I like the staged process of a rough consensus that covers the basic use cases, followed by experimentation and proprietary specifications and later a more formal standardization effort. If we skip the rough consensus stage, as we did with Cloud, we end up rushing to do final step (to the tune of &#8220;customers demand Cloud standards&#8221;) even though all we need for now is an interoperable way to meet the basic use cases.</p>
<p><strong>Winners and losers</strong></p>
<p>Whoever you think of as the current leaders of the Application Server battle (hint: I work for one), they were not the obvious leaders of stages 1 and 2. So don&#8217;t be in too much of a hurry to crown the Cloud Framework kings. Those you think of today may turn out to be the Netscapes of that battle.</p>
<p><strong>New roles</strong></p>
<p>It&#8217;s not just new technology. The development of Cloud Frameworks will shape the roles of the people involved. We used to have designers who thought their job was done when they produced a picture or at best a FrameMaker or QuarkXPress document, which is what they were used to. We had &#8220;webmasters&#8221; who thought they were set for life with their new Apache skills, then quickly had to evolve or make way, a lesson for IaaS gurus of today. Under terms like <a href="http://stage.vambenepe.com/archives/1393">&#8220;DevOps&#8221;</a> new roles are created and existing roles are transformed. Nobody yet knows what will stick. But if I was an EC2 guru today I&#8217;d make sure to not get stuck providing just that. Don&#8217;t wait for other domains of Cloud expertise to be in higher demand than your current IaaS area, as by then you&#8217;ll be too late.</p>
<p><strong>It&#8217;s the stack</strong></p>
<p>There aren&#8217;t many companies out there making a living selling a stand-alone Web server. Even <a href="http://www.zeus.com/">Zeus</a>, who has a nice one, seems to be downplaying it on its site compared to its application delivery products. The combined pressure of commoditization (hello Apache) and of the demand for a full stack has made it pretty hard to sell just a Web server.</p>
<p>Similarly, it&#8217;s going to be hard to stay in business selling just portions of a Cloud Framework. For example, just provisioning, just monitoring, just IaaS-level features, etc. That&#8217;s well-understood and it&#8217;s fueling a lot of the acquisitions (e.g. VMWare&#8217;s <a href="http://blogs.vmware.com/console/2009/08/vmware-acquires-springsource.html">purchase of SpringSource</a> which in turn recently <a href="http://www.virtualization.info/2010/04/vmwarespringsource-acquires-rabbit.html">purchased RabbitMQ</a>) and partnerships (e.g. recently <a href="http://www.mspmentor.net/2010/04/09/eucalyptus-groundwork-partner-on-cloud-app-monitoring/">between Eucalyptus and GroundWork</a> though rarely do such &#8220;partnerships&#8221; rise to the level of integration of a real framework).</p>
<p>It&#8217;s not even clear what the right scope for a Cloud Framework is. What makes a full stack and what is beyond it? Is it just software to manage a private Cloud environment and/or deployments into public Clouds? Does the framework also include the actual public Cloud service? Does it include hardware in some sort of &#8220;private Cloud in a box&#8221;, of the kind that this recent <a href="http://www.thevarguy.com/2010/03/24/dell-backs-ubuntu-enterprise-cloud/">Dell/Ubuntu announcement</a> seems to be inching towards?</p>
<p><strong>Integration</strong></p>
<p>If indeed we can go by the history of Application Server to predict the future of Cloud Frameworks, then we&#8217;ll have a few stacks (with different levels of completeness, standardized or proprietary). This is what happened for Web development (the JEE stack, the .Net stack, a more loosely-defined alternative stack which is mostly open-source, niche stacks like the backend offered by Adobe for Flash apps, etc) and at some point the effort moved from focusing on standardizing the different application environment technology alternatives (e.g. J2EE) towards standardizing how the different platforms can interoperate (e.g. WS-*). I expect the same thing for Cloud Frameworks, especially as they grow out of stages 1 and 2 and embrace what we call today PaaS. At which point the two battlefields (Application Servers and Cloud Frameworks) will merge. And when this happens, I just can&#8217;t picture how one stack/framework will suffice for all. So we&#8217;ll have to define meaningful integration between them and make them work.</p>
<p>If you&#8217;re a spectator, grab plenty of popcorn. If you&#8217;re a soldier in this battle, get ready for a long campaign.</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/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/186' rel='bookmark' title='Permanent Link: SpringSource Application Management Suite'>SpringSource Application Management Suite</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/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/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/1407/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Enterprise application integration patterns for IT management: a blast from the past or from the future?</title>
		<link>http://stage.vambenepe.com/archives/1383</link>
		<comments>http://stage.vambenepe.com/archives/1383#comments</comments>
		<pubDate>Fri, 02 Apr 2010 08:11:30 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[CA]]></category>
		<category><![CDATA[CMDB]]></category>
		<category><![CDATA[CMDB Federation]]></category>
		<category><![CDATA[CMDBf]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[WS-Management]]></category>
		<category><![CDATA[Web services]]></category>

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


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


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/138' rel='bookmark' title='Permanent Link: Manageability, management integration and WS-Management'>Manageability, management integration and WS-Management</a></li>
<li><a href='http://stage.vambenepe.com/archives/700' rel='bookmark' title='Permanent Link: A post-mortem on the previous IT management revolution'>A post-mortem on the previous IT management revolution</a></li>
<li><a href='http://stage.vambenepe.com/archives/204' rel='bookmark' title='Permanent Link: I have seen the future of CMDBf'>I have seen the future of CMDBf</a></li>
<li><a href='http://stage.vambenepe.com/archives/283' rel='bookmark' title='Permanent Link: CMDBf interop demo'>CMDBf interop demo</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1383/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smoothing a discrete world</title>
		<link>http://stage.vambenepe.com/archives/1378</link>
		<comments>http://stage.vambenepe.com/archives/1378#comments</comments>
		<pubDate>Wed, 31 Mar 2010 04:44: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[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1378</guid>
		<description><![CDATA[For the short term (until we sell one) there are three cars in my household. A manual transmission, an automatic and a CVT (continuous variable transmission). This makes me uniquely qualified to write about Cloud Computing.
That&#8217;s because Cloud Computing is yet another area in which the manual/automatic transmission analogy can be put to good use. [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/612' rel='bookmark' title='Permanent Link: Exploring &#8220;IT management in a changing IT world&#8221;'>Exploring &#8220;IT management in a changing IT world&#8221;</a></li>
<li><a href='http://stage.vambenepe.com/archives/151' rel='bookmark' title='Permanent Link: IT management in a world of utility IT'>IT management in a world of utility IT</a></li>
<li><a href='http://stage.vambenepe.com/archives/1116' rel='bookmark' title='Permanent Link: Can your hypervisor radio for air support?'>Can your hypervisor radio for air support?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1192' rel='bookmark' title='Permanent Link: Taxonomy of Cloud Computing Benefits'>Taxonomy of Cloud Computing Benefits</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/1527' rel='bookmark' title='Permanent Link: CMDB in the Cloud: not your father&#8217;s CMDB'>CMDB in the Cloud: not your father&#8217;s CMDB</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>For the short term (until we sell one) there are three cars in my household. A manual transmission, an automatic and a CVT (continuous variable transmission). This makes me uniquely qualified to write about Cloud Computing.</p>
<p>That&#8217;s because Cloud Computing is yet another area in which the manual/automatic transmission analogy can be put to good use. We can even stretch it to a 4-layer analogy (now that&#8217;s elasticity):</p>
<p><strong>Manual transmission</strong></p>
<p>That&#8217;s traditional IT. Scaling up or down is done manually, by a skilled operator. It&#8217;s usually not rocket science but it takes practice to do it well. At least if you want it to be reliable, smooth and mostly unnoticed by the passengers.</p>
<p><strong>Manumatic transmission (a.k.a. Tiptronic)</strong></p>
<p>The driver still decides when to shift up or down, but only gives the command. The actual process of shifting is automated. This is how many Cloud-hosted applications work. The scale-up/down action is automated but, still contingent on being triggered by an administrator. Which is what most IaaS-deployed apps should probably aspire to at this point in time despite the glossy brochures about everything being entirely automated.</p>
<p><strong>Automatic transmission</strong></p>
<p>That&#8217;s when the scale up/down process is not just automated in its execution but also triggered automatically, based on some metrics (e.g. load, response time) and some policies. The scenario described in the aforementioned glossy brochures.</p>
<p><strong>Continuous variable transmission</strong></p>
<p>That&#8217;s when the notion of discrete gears goes away. You don&#8217;t think in terms of what gear you&#8217;re in but how much torque you want. On the IT side, you&#8217;re in PaaS territory. You don&#8217;t measure the number of servers, but rather a continuously variable application capacity metric. At least in theory (most PaaS implementations often <a href="http://googleappengine.blogspot.com/2009/12/request-performance-in-java.html">betray the underlying work</a>, e.g. via a spike in application response time when the app is not-so-transparently deployed to a new node).</p>
<p><strong>More?</strong></p>
<p>OK, that&#8217;s the analogy. There are many more of the same kind. Would you like to hear how hybrid Cloud deployments (private+public) are like hybrid cars (gas+electric)? How virtualization is like carpooling (including how you can also be inconvenienced by the BO of a co-hosted VM)? Do you want to know why painting flames on the side of your servers doesn&#8217;t make them go faster?</p>
<p>Driving and IT management have a lot in common, including bringing out the foul-mouth in us when things go wrong.</p>
<p>So, anyone wants to buy a manual VW Golf Turbo? Low mileage. Cloud-checked.</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/612' rel='bookmark' title='Permanent Link: Exploring &#8220;IT management in a changing IT world&#8221;'>Exploring &#8220;IT management in a changing IT world&#8221;</a></li>
<li><a href='http://stage.vambenepe.com/archives/151' rel='bookmark' title='Permanent Link: IT management in a world of utility IT'>IT management in a world of utility IT</a></li>
<li><a href='http://stage.vambenepe.com/archives/1116' rel='bookmark' title='Permanent Link: Can your hypervisor radio for air support?'>Can your hypervisor radio for air support?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1192' rel='bookmark' title='Permanent Link: Taxonomy of Cloud Computing Benefits'>Taxonomy of Cloud Computing Benefits</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/1527' rel='bookmark' title='Permanent Link: CMDB in the Cloud: not your father&#8217;s CMDB'>CMDB in the Cloud: not your father&#8217;s CMDB</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1378/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>HP has submitted a specification to the DMTF Cloud incubator</title>
		<link>http://stage.vambenepe.com/archives/1295</link>
		<comments>http://stage.vambenepe.com/archives/1295#comments</comments>
		<pubDate>Fri, 19 Feb 2010 20:55:30 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DMTF]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[HP]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>

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


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


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

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


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


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/943' rel='bookmark' title='Permanent Link: Separating model from protocol in Cloud APIs'>Separating model from protocol in Cloud APIs</a></li>
<li><a href='http://stage.vambenepe.com/archives/1007' rel='bookmark' title='Permanent Link: The future (2006 version), has arrived'>The future (2006 version), has arrived</a></li>
<li><a href='http://stage.vambenepe.com/archives/559' rel='bookmark' title='Permanent Link: Is notification wrapping getting a bum rap?'>Is notification wrapping getting a bum rap?</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/1504' rel='bookmark' title='Permanent Link: Dear Cloud API, your fault line is showing'>Dear Cloud API, your fault line is showing</a></li>
<li><a href='http://stage.vambenepe.com/archives/1161' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 3: wrap-up)'>REST in practice for IT and Cloud management (part 3: wrap-up)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1284/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Generalizing the Cloud vs. SOA Governance debate</title>
		<link>http://stage.vambenepe.com/archives/1216</link>
		<comments>http://stage.vambenepe.com/archives/1216#comments</comments>
		<pubDate>Wed, 20 Jan 2010 09:20:22 +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[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Governance]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[ITIL]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[SCA]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[WS-Management]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1216</guid>
		<description><![CDATA[There have been some interesting discussions recently about the relationship between Cloud management and SOA management/governance (run-time and design-time). My only regret is that they are a bit too focused on determining winners and loosers rather than defining what victory looks like (a bit like arguing whether the smartphone is the triumph of the phone [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1527' rel='bookmark' title='Permanent Link: CMDB in the Cloud: not your father&#8217;s CMDB'>CMDB in the Cloud: not your father&#8217;s CMDB</a></li>
<li><a href='http://stage.vambenepe.com/archives/523' rel='bookmark' title='Permanent Link: Cloud ontology: to boldly go where ITIL, Grid and SOA have gone before'>Cloud ontology: to boldly go where ITIL, Grid and SOA have gone before</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/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/884' rel='bookmark' title='Permanent Link: A small step for SCA, a giant leap for BSM'>A small step for SCA, a giant leap for BSM</a></li>
<li><a href='http://stage.vambenepe.com/archives/612' rel='bookmark' title='Permanent Link: Exploring &#8220;IT management in a changing IT world&#8221;'>Exploring &#8220;IT management in a changing IT world&#8221;</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>There have been <a href="http://www.infoworld.com/d/cloud-computing/cloud-computing-will-kill-these-3-technologies-196">some</a> <a href="http://kscottmorrison.com/2010/01/07/on-the-death-of-design-time-service-governance/">interesting</a> <a href="http://www.ebizq.net/blogs/ebizq_forum/2010/01/has-the-cloud-killed-design-time-governance.php">discussions</a> <a href="http://www.biske.com/blog/?p=744">recently</a> about the relationship between Cloud management and SOA management/governance (run-time and design-time). My only regret is that they are a bit too focused on determining winners and loosers rather than defining what victory looks like (a bit like arguing whether the smartphone is the triumph of the phone over the computer or of the computer over the phone instead of discussing what makes a good smartphone).</p>
<p>To define victory, we need to answer this seemingly simple question: in what ways is the relationship between a VM and its hypervisor different from the relationship between two communicating applications?</p>
<p>More generally, there are three broad categories of relationships between the &#8220;active&#8221; elements of an IT system (by &#8220;active&#8221; I am excluding configuration, organization, management and security artifacts, like patch, department, ticket and user, respectively, to concentrate instead on the elements that are on the invocation path at runtime). We need to understand if/how/why these categories differ in how we manage them:</p>
<ul>
<li><strong>Deployment relationships</strong>: a machine (or VM) in a physical host (or hypervisor), a JEE application in an application server, a business process in a process engine, etc&#8230;</li>
<li><strong>Infrastructure dependency relationships</strong> (other than containment): from an application to the DB that persists its data, from an application tier to web server that fronts it, from a batch job to the scheduler that launches it, etc&#8230;</li>
<li><strong>Application dependency relationships</strong>: from an application to a web service it invokes, from a mash-up to an Atom feed it pulls, from a portal to a remote portlet, etc&#8230;</li>
</ul>
<p>In the old days, the lines between these categories seemed pretty clear and we rarely even thought of them in the same terms. They were created and managed in different ways, by different people, at different times. Some were established as part of a process, others in a more ad-hoc way. Some took place by walking around with a CD, others via a console, others via a centralized repository. Some of these relationships were inventoried in spreadsheets, others on white boards, some in CMDBs, others just in code and in someone&#8217;s head. Some involved senior IT staff, others were up to developers and others were left to whoever was manning the controls when stuff broke.</p>
<p>It was a bit like the relationships you have with the taxi that takes you to the airport, the TSA agent who scans you and the pilot who flies you to your destination. You know they are all involved in your travel, but they are very distinct in how you experience and approach them.</p>
<p>It all changes with the Cloud (used as a short hand for virtualization, management automation, on-demand provisioning, 3rd-party hosting, metered usage, etc&#8230;). The advent of the hypervisor is the most obvious source of change: relationships that were mostly static become dynamic; also, where you used to manage just the parts (the host and the OS, often even mixed as one), you now manage not just the parts but the <em>relationship</em> between them (the deployment of a VM in a hypervisor). But it&#8217;s not just hypervisors. It&#8217;s frameworks, APIs, models, protocols, tools. Put them all together and you realize that:</p>
<ul>
<li>the IT resources involved in all three categories of relationships can all be thought of as services being consumed (an &#8220;X86+ethernet emulation&#8221; service exposed by the hypervisor, a &#8220;JEE-compatible platform&#8221; service exposed by the application server, an &#8220;RDB service&#8221; expose by the database, a Web services exposed via SOAP or XML/JSON over HTTP, etc&#8230;),</li>
<li>they can also be set up as services, by simply sending a request to the API of the service provider,</li>
<li>not only can they be set up as services, they are also invoked as such, via well-documented (and often standard) interfaces,</li>
<li>they can also all be managed in a similar service-centric way, via performance metrics, SLAs, policies, etc,</li>
<li>your orchestration code may have to deal with all three categories, (e.g. an application slowdown might be addressed either by modifying its application dependencies, reconfiguring its infrastructure or initiating a new deployment),</li>
<li>the relationships in all these categories now have the potential to cross organization boundaries and involve external providers, possibly with usage-based billing,</li>
<li>as a result of all this, your IT automation system really needs a simple, consistent, standard way to handle all these relationships. Automation works best when you&#8217;ve simplified and standardize the environment to which it is applied.</li>
</ul>
<p>If you&#8217;re a SOA person, your mental model for this is SOA++ and you pull out your SOA management and governance (config and runtime) tools. If you are in the WS-* obedience of SOA, you go back to WS-Management, try to see what it would take to slap a WSDL on a hypervisor and start dreaming of OVF over MTOM/XOP. If you&#8217;re into middleware modeling you might start to have visions of SCA models that extend all the way down to the hardware, or at least of getting SCA and OSGi to ally and conquer the world. If you&#8217;re a CMDB person, you may tell yourself that now is the time for the CMDB to do what you&#8217;ve been pretending it was doing all along and actually extend all the way into the application. Then you may have that &#8220;single source of truth&#8221; on which the automation code can reliably work. Or if you see the world through the &#8220;Cloud API&#8221; goggles, then this &#8220;consistent and standard&#8221; way to manage relationships at all three layers looks like what your Cloud API of choice will eventually do, as it grows from IaaS to PaaS and SaaS.</p>
<p>Your background may shape your reference model for this unified service-centric approach to IT management, but the bottom line is that we&#8217;d all like a nice, clear conceptual model to bridge and unify Cloud (provisioning and containment), application configuration and SOA relationships. A model in which we have services/containers with well-defined operational contracts (and on-demand provisioning interfaces). Consumers/components with well-defined requirements. APIs to connect the two, with predictable results (both in functional and non-functional terms). Policies and SLAs to fine-tune the quality of service. A management framework that monitors these policies and SLAs. A common security infrastructure that gets out of the way. A metering/billing framework that spans all these interactions. All this while keeping out of sight all the resource-specific work needed behind the scene, so that the automation code can look as Zen as a Japanese garden.</p>
<p>It doesn&#8217;t mean that there won&#8217;t be separations, roles, processes. We may still want to partition the IT management tasks, but we should first have a chance to rejigger what&#8217;s in each category. It might, for example, make sense to handle provider relationships in a consistent way whether they are &#8220;deployment relationships&#8221; (e.g. EC2 or your private IaaS Cloud) or &#8220;application dependency relationships&#8221; (e.g. SOA, internal or external). On the other hand, some of the relationships currently lumped in the &#8220;infrastructure dependency relationships&#8221; category because they are &#8220;config files stuff&#8221; may find different homes depending on whether they remain low-level and resource-specific or they are absorbed in a higher-level platform contract. Any fracture in the management of this overall IT infrastructure should be voluntary, based on legal, financial or human requirements. And not based on protocol, model, security and tool disconnect, on legacy approaches, on myopic metering, that we later rationalize as &#8220;the way we&#8217;d want things to be anyway because that&#8217;s what we are used to&#8221;.</p>
<p>In the application configuration management universe, there is a planetary collision scheduled between the hypervisor-centric view of the world (where virtual disk formats wrap themselves in OVF, then something like OVA to address, at least at launch time, application and infrastructure dependency relationships) and the application-model view of the world (SOA, SCA, Microsoft Oslo at least as it was initially defined, various application frameworks&#8230;). Microsoft Azure will have an answer, VMWare/Springsouce will have one, Oracle will too (though I can&#8217;t talk about it), Amazon might (especially as it keeps<a href="https://us-amazon.icims.com/jobs/109825/job?in_iframe=1"> adding to its PaaS portfolio</a>) or it might let its ecosystem sort it out, IBM probably has Rational, WebSphere and Tivoli distinguished engineers locked into a room, discussing and over-engineering it at this very minute, etc.</p>
<p>There is a lot at stake, and it would be nice if this was driven (industry-wide or at least within each of the contenders) by a clear understanding of what we are aiming for rather than a race to cobble together partial solutions based on existing control points and products (e.g. the hypervisor-centric party).</p>
<p>[UPDATED 2010/1/25: For an illustration of my statement that "if you’re a SOA person, your mental model for this is SOA++", see Joe McKendrick's <a href="http://www.ebizq.net/blogs/soainaction/2010/01/soas_seven_greatest_mysteries.php">"SOA's Seven Greatest Mysteries Unveiled"</a> (bullet #6: <em>"When you get right down to it, cloud is the acquisition or provisioning of reusable services that cross enterprise walls. (...)  They are service oriented architecture, and they rely on SOA-based principles to function."</em>)]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1527' rel='bookmark' title='Permanent Link: CMDB in the Cloud: not your father&#8217;s CMDB'>CMDB in the Cloud: not your father&#8217;s CMDB</a></li>
<li><a href='http://stage.vambenepe.com/archives/523' rel='bookmark' title='Permanent Link: Cloud ontology: to boldly go where ITIL, Grid and SOA have gone before'>Cloud ontology: to boldly go where ITIL, Grid and SOA have gone before</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/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/884' rel='bookmark' title='Permanent Link: A small step for SCA, a giant leap for BSM'>A small step for SCA, a giant leap for BSM</a></li>
<li><a href='http://stage.vambenepe.com/archives/612' rel='bookmark' title='Permanent Link: Exploring &#8220;IT management in a changing IT world&#8221;'>Exploring &#8220;IT management in a changing IT world&#8221;</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1216/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Taxonomy of Cloud Computing Benefits</title>
		<link>http://stage.vambenepe.com/archives/1192</link>
		<comments>http://stage.vambenepe.com/archives/1192#comments</comments>
		<pubDate>Thu, 07 Jan 2010 07:48:43 +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[Ecology]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Utility computing]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1192</guid>
		<description><![CDATA[One of the heavily discussed Cloud topics in early 2009 was a  Cloud Computing taxonomy. Now that this theme has died down (with limited results), and to start 2010 in a similar form, here is a proposal for a taxonomy of the benefits of Cloud Computing.
Just like the original Cloud Computing taxonomy only had three [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1295' rel='bookmark' title='Permanent Link: HP has submitted a specification to the DMTF Cloud incubator'>HP has submitted a specification to the DMTF Cloud incubator</a></li>
<li><a href='http://stage.vambenepe.com/archives/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/632' rel='bookmark' title='Permanent Link: Cloud computing: would you like flexibility with your simplicity?'>Cloud computing: would you like flexibility with your simplicity?</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/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/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>One of the heavily discussed Cloud topics in early 2009 was a  <a href="http://stage.vambenepe.com/archives/523">Cloud Computing taxonomy</a>. Now that this theme has died down (with limited results), and to start 2010 in a similar form, here is a proposal for a taxonomy of the <em>benefits</em> of Cloud Computing.</p>
<p>Just like the original Cloud Computing taxonomy only had three layers (IaaS/PaaS/SaaS), so does this taxonomy of Cloud benefits. The point of this post is to promote the third layer. I describe layers 1 and 2  mainly to better call out what&#8217;s specific about layer 3.</p>
<p><strong>Layer 1 (infrastructure: &#8220;let someone else do it&#8221;)</strong></p>
<p>This is the bare-bottom, inherent benefit of Cloud Computing: you don&#8217;t have to deal with the hardware. In practice, it means:</p>
<ul>
<li>no need to worry about power/cooling,</li>
<li>on-demand provisioning/deprovisioning (machines appear/disappear in a way physical machines do not),</li>
<li>not responsible for physical security (though responsible for ensuring that the provider has an acceptable security level),</li>
<li>economies of scale (for equipment purchase and operations),</li>
<li><a href="http://www.elasticvapor.com/2009/12/is-cloud-computing-actually.html">potential</a> environmental benefits,</li>
<li>etc&#8230;</li>
</ul>
<p><strong>Layer 2 (management: &#8220;let a program do it&#8221;)</strong></p>
<p>More specifically, more automated IT management. This does not require Cloud Computing (you can have a highly automated IT management environment on premise), but the move to Cloud Computing is the trigger that is making it really happen. While this capability is not an inherent benefit of Cloud Computing, the Cloud makes it:</p>
<ul>
<li>Needed: You don&#8217;t get to put color tags on machines, you don&#8217;t get to bring a DVD to install a new application, you don&#8217;t get to open a machine to insert more memory, you don&#8217;t get to go retrieve a backup tape, label it and put it in a safe, etc. Of course loosing these &#8220;privileges&#8221; doesn&#8217;t sound bad considering that they are mostly chores, but it means that you have to design alternative (and mostly programmatic) ways to perform the functions that these tasks addressed.</li>
<li>Easier: Cloud environments are highly API-driven. Many IT tools from the previous generation were console-centric (people would go out and buy &#8220;a network/event/system management <em>console</em>&#8220;) with APIs/protocols as a secondary thought. In Cloud environments, tools are a lot more API-centric with the console as an adjunct (anyone has stats about the ratio of EC2 instances provisioned via the AWS console versus the APIs?). This is also why even though a lot of people wanted standard management protocols (of the WSDM/WS-Management generation), there wasn&#8217;t as much of a realization of their importance in the old environment (and not as much pressure to create them and eagerness to adopt them). The stakes and visibility are a lot higher in the Cloud environments and that&#8217;s why this second wave of protocols will have to succeed where the previous one came short.</li>
<li>More beneficial: Once you have automated IT management in a traditional data center, what you get is fewer employees needed and somewhat better utilization. But you are still gated by the time/process to purchase/install new machines and the cost of unused machines (at least with automation you don&#8217;t have to pay their power/cooling). You don&#8217;t get the &#8220;just what I need&#8221; level of infrastructure usage that the same automation work allows in a Cloud setting.</li>
</ul>
<p><strong>Layer 3 (applications: &#8220;do it right&#8221;)</strong></p>
<p>In short, use the move to the Cloud as an opportunity to fix some of the key issues of today&#8217;s applications. Think of the Cloud switch as a second Y2K, 10 years later: like in 2000, not only are there things that the transition requires you to fix, there are also many things that aren&#8217;t exactly required to fix but still make sense to fix as part of the larger modernization effort. Of course the Cloud move is missing that ever-so-valuable project management motivator of a firm deadline, but hopefully competitive pressure can play a similar role.</p>
<p>What are these issues? Here is a partial list:</p>
<ul>
<li>Security: at least authentication and authorization. We have SSO/Federation systems, both enterprise-type and Web-centric and they often suck in practice. Whether it&#8217;s because of the protocols, the implementations, the tools or the mindset. Plus, there are too many of them. As applications gained mouths and ears and started to communicate with one another, the problem became obvious. If, in the Cloud, you also want them to grow legs and be able to move around (wholly or in parts) then it really <em>really</em> has to get fixed. Not to mention the &#8220;all or nothing&#8221; delegation model that I am surprised hasn&#8217;t yet created a major disaster (let&#8217;s see what 2010 has in store). I suggested a <a href="http://stage.vambenepe.com/archives/1127">band-aid fix</a> earlier, but this needs a real solution (the <a href="http://www.cloudsecurityalliance.org/">Cloud Security Alliance</a> provides some guidance in <a href="http://www.cloudsecurityalliance.org/csaguide.pdf">this document</a>, see &#8220;domain 12&#8243; for IAM).</li>
<li>Get remote application interfaces right. It&#8217;s been <a href="http://qconsf.com/sf2009/">discussed</a>, <a href="http://www.soa-manifesto.org/">manifesto&#8217;ed</a>, <a href="http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html">buried</a> and <a href="http://geekandpoke.typepad.com/geekandpoke/2009/12/from-hype-to-hype.html">lampooned</a> many times before (<a href="http://stage.vambenepe.com/archives/42">this</a> was my humble take on it). Whether it&#8217;s because of WS-* or, more likely, java2wsdl we have been delayed in this but it simply <em>has</em> to happen. Call it SOAP, zenSOAP, REST, practical REST or whatever you want. Just make sure that all important functions and data are accessible via clear, documented, consistent, easy-to-use, on-the-wire interfaces. Once we have these interfaces, and only then, we can worry about reliably composing/orchestrating applications that cross organizational boundaries.</li>
<li>Related to the previous point, clean up the incestuous relationship between an application and its data. Actually, it&#8217;s not &#8220;its&#8221; data. It&#8217;s the data it works on.</li>
<li>Deliver application-centric IT management. Quit loosing and (badly) re-creating information: for example, an application deployment followed by a black-box discovery (&#8220;what did I just do&#8221;?). Or after-the-fact re-establishing correlations between events on different servers (&#8220;what was this about&#8221;?). Application management too often looks like a day in the life of a senile person.</li>
<li>Fault-tolerance and disaster recovery. It is too often lacking (or untested, which is the same) for applications that are just below the perceived threshold of requiring it to be done right. That threshold needs to be lowered and the move to the Cloud can be used to make this possible.</li>
</ul>
<p>[You should also read <a href="http://www.tbray.org/ongoing/When/201x/2010/01/02/Doing-It-Wrong">Tim Bray's perspective</a> (and <a href="http://www.innoq.com/blog/st/2010/01/are_we_doing_it_wrong.html">Stefan Tilkov's comment</a>) on the process/methodology/tools for enterprise applications, an orthogonal (but related) area of improvement. More fundamental.]</p>
<p>As I mentioned above, these are mostly not Cloud specific (though it is possible to create a Cloud connection for each). They are things that we have known about and tried to fix for a while. But the pace has been pretty slow and there is an opportunity for the Cloud transition to do more than just hand out the keys of the datacenter.</p>
<p>What kinds of benefits are <em>you</em> aiming for in your Cloud plans?</p>
<p>[UPDATED 2010/01/11: An interesting take on a similar topic by Brenda Michelson: <a href="http://www.ebizq.net/blogs/bda/2010/01/5_enduring_aspects_of_cloud_co.php">5 Enduring Aspects of Cloud Computing</a>]</p>
<p>[UPDATED 2010/01/14: Along the same lines (but looking at it in the other direction), an <a href="http://twitpic.com/y2esy">interesting graph</a> from <a href="http://twitter.com/acroll">Alistair Croll</a> of <a href="http://www.bitcurrent.com/">Bitcurrent</a>.]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1295' rel='bookmark' title='Permanent Link: HP has submitted a specification to the DMTF Cloud incubator'>HP has submitted a specification to the DMTF Cloud incubator</a></li>
<li><a href='http://stage.vambenepe.com/archives/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/632' rel='bookmark' title='Permanent Link: Cloud computing: would you like flexibility with your simplicity?'>Cloud computing: would you like flexibility with your simplicity?</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/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/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/1192/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>PaaS as the path to MDA?</title>
		<link>http://stage.vambenepe.com/archives/1173</link>
		<comments>http://stage.vambenepe.com/archives/1173#comments</comments>
		<pubDate>Tue, 29 Dec 2009 07:42:15 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[Business process]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[Oslo]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>

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


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


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

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


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


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/863' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 1: Cloud APIs)'>REST in practice for IT and Cloud management (part 1: Cloud APIs)</a></li>
<li><a href='http://stage.vambenepe.com/archives/951' rel='bookmark' title='Permanent Link: Toolkits to wrap and bridge Cloud management protocols'>Toolkits to wrap and bridge Cloud management protocols</a></li>
<li><a href='http://stage.vambenepe.com/archives/1300' rel='bookmark' title='Permanent Link: Square peg, REST hole'>Square peg, REST hole</a></li>
<li><a href='http://stage.vambenepe.com/archives/447' rel='bookmark' title='Permanent Link: Who said WS-Transfer is for REST?'>Who said WS-Transfer is for REST?</a></li>
<li><a href='http://stage.vambenepe.com/archives/700' rel='bookmark' title='Permanent Link: A post-mortem on the previous IT management revolution'>A post-mortem on the previous IT management revolution</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1161/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Cloud + proprietary software = ♥</title>
		<link>http://stage.vambenepe.com/archives/1142</link>
		<comments>http://stage.vambenepe.com/archives/1142#comments</comments>
		<pubDate>Wed, 02 Dec 2009 10:13:35 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Application management]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtual appliance]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1142</guid>
		<description><![CDATA[When I left HP for Oracle, in the summer of 2007, a friend made the argument that Cloud Computing (I think we were still saying &#8220;Utility Computing&#8221; at the time) would be the death of proprietary software.
There was a lot to support this view. EC2 was one year old and its usage was overwhelmingly based [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/414' rel='bookmark' title='Permanent Link: Dear Microsoft, here is my $0.25 Windows license fee for the month'>Dear Microsoft, here is my $0.25 Windows license fee for the month</a></li>
<li><a href='http://stage.vambenepe.com/archives/1146' rel='bookmark' title='Permanent Link: Can I get a price check on this AMI?'>Can I get a price check on this AMI?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/215' rel='bookmark' title='Permanent Link: BMC acquires ITM Software'>BMC acquires ITM Software</a></li>
<li><a href='http://stage.vambenepe.com/archives/798' rel='bookmark' title='Permanent Link: Interesting links'>Interesting links</a></li>
<li><a href='http://stage.vambenepe.com/archives/442' rel='bookmark' title='Permanent Link: IT management and Cloud: now some products'>IT management and Cloud: now some products</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>When I left HP for Oracle, in the summer of 2007, a friend made the argument that Cloud Computing (I think we were still saying &#8220;Utility Computing&#8221; at the time) would be the death of proprietary software.</p>
<p>There was a lot to support this view. EC2 was one year old and its usage was overwhelmingly based on open source software (OSS). For proprietary software, there was no clear understanding of how licensing terms applied to Cloud deployments. Not only would most sales reps not know the answer, back then they probably wouldn&#8217;t have comprehended the question.</p>
<p>Two and a half years later&#8230; well it doesn&#8217;t look all that different at first blush. EC2 seems to still be a largely OSS-dominated playground. Especially since the most obvious (though not necessarily the most accurate) measure is to peruse the description/content of public AMIs. They are (predictably since you can&#8217;t generally redistribute proprietary software) almost entirely OSS-based, with the exception of the public AMIs provided by software vendors themselves (Oracle, IBM&#8230;).</p>
<p>And yet the situation has improved for usage of proprietary software in the Cloud. Most software vendors have embraced Cloud deployments and clarified licensing issues (taking the example of Oracle, here is its <a href="http://www.oracle.com/technology/tech/cloud/index.html">Cloud Computing Center page</a>, an <a href="http://www.oracle.com/corporate/pricing/cloud-licensing.pdf">overview of the licensing policy for Cloud deployments</a> and the <a href="http://aws.amazon.com/solutions/global-solution-providers/oracle/">AWS/Oracle partnership page</a> to encourage the use of Oracle software on EC2; none of this existed in 2007).</p>
<p>But these can be called reactive adaptations. At best (depending on the variability of your load and whether you use an Unlimited License Agreement), these moves have brought the &#8220;proprietary vs. OSS&#8221; debate in the Cloud back to the same parameters as for on-premise deployments. They have simply corrected the initial challenge of not even knowing how to license proprietary software for Cloud deployments.</p>
<p>But it&#8217;s not stopping here. What we are seeing is some of the parameters for the &#8220;proprietary vs. OSS&#8221; debate become more friendly towards proprietary software in the Cloud than on-premise. I am referring to the emergence of EC2 instances for which the software licenses are included in the per-hour rate for server instances. This pretty much removes license management as a concern altogether. The main example is Windows EC2 instances. As a user, you don&#8217;t have to deal with any Windows license consideration. You just request a machine and use it. Which of course doesn&#8217;t mean you are not paying for Windows. These Windows instances are more expensive than comparable Linux instances (e.g. $0.34 versus $0.48 per hour in the case of a &#8220;standard/large&#8221; instance) and Amazon takes care of paying Microsoft.</p>
<p>The removal of license management as a concern may not make a big difference to large corporations that have an Unlimited License Agreement, but for smaller companies it may take a chunk out of the reasons to use open source software. Not only do you not have to track license usage (and renewal), you never have to spend time with a sales rep. You don&#8217;t have to ask yourself at what point in your beta program you&#8217;ve moved from a legitimate use of the (often free) development license to a situation in which you need a production license. Including the software license directly in the cost of the base Cloud resource (e.g. the virtual machine instance) makes planning (and auto-scaling) easier: you use the same algorithm as in the &#8220;free license&#8221; situation, just with a different per hour cost. The trade-off becomes quantitative rather than qualitative. You can trade a given software stack against a faster CPU or more memory or more storage, depending on which combination serves your needs better. It doesn&#8217;t matter if the value you get from the instance comes from the software in the image or the hardware. This moves IaaS closer to PaaS (force.com doesn&#8217;t itemize your bill between hardware cost and software cost). Anything that makes IaaS more like PaaS is good for IaaS.</p>
<p>From an <a href="http://stage.vambenepe.com/archives/1064">earlier post</a>, about virtual appliances:</p>
<p style="padding-left: 30px;"><em>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.</em></p>
<p>I was referring to a blurring line in terms of how software is managed, but it&#8217;s also true in terms of how it is licensed.</p>
<p>There are of course many other reasons (than license management) why people use open source software rather than proprietary. The most obvious being the cost of the license (which, as we have seen, doesn&#8217;t go away but just gets incorporated in the base Cloud instance rate). Or they may simply prefer a given open source product independently of any licensing aspect. Some need access to the underlying code, to customize/improve it for their purpose. Or they may be leery of depending on one entity for the long-term viability of their platform. There may even be some who suspect any software that they don&#8217;t examine/compile themselves to contain backdoors (though these people are presumably not candidates for Cloud deployments in he first place). Etc. These reasons remain pretty much unchanged in the Cloud. But, anecdotally at least, removing license management concerns from both manual and automated tasks is a big improvement.</p>
<p>If Cloud providers get it right (which would require being smarter than wireless service providers, a low bar) and software vendors play ball, the &#8220;proprietary vs. OSS&#8221; debate may become more favorable to proprietary software in the Cloud than it is on-premise. For the benefit of customers, software vendors and Cloud providers. Hopefully Amazon will succeed where telcos mostly failed, in providing a convenient application metering/billing service for 3rd-party software offered on top of their infrastructural services (without otherwise getting in the way). Anybody remembers the <a href="http://en.wikipedia.org/wiki/Minitel">Minitel</a>? Today we&#8217;d call that a &#8220;Terminal as a Service&#8221; offering and if it did one thing well (beyond displaying green characters) it was billing. Which reminds me, I probably still have one in my parent&#8217;s basement.</p>
<p>[Note: every page of this blog mentions, at the bottom, that <em>"the statements and opinions expressed here are my own and do not necessarily represent those of Oracle Corporation" </em>but in this case I will repeat it here, in the body of the post.]</p>
<p>[UPDATED 2009/12/29: The Register <a href="http://www.theregister.co.uk/2009/12/29/clouds_in_09/">seems to agree</a>. In fact, they come close to paraphrasing this blog entry:</p>
<p><em>"It's proprietary applications offered by enterprise mainstays such as Oracle, IBM, and other big vendors that may turn out to be the big winners. The big vendors simply manipulated and corrected their licensing strategies to offer their applications in an on-demand or subscription manner.</em></p>
<p><em>Amazonian middlemen</em></p>
<p><em>AWS, for example, now offers EC2 instances for which the software licenses are included in the per-hour rate for server instances. This means that users who want to run Windows applications don't have to deal with dreaded Windows licensing - instead, they simply request a machine and use it while Amazon deals with paying Microsoft."</em>]</p>
<p>[UPDATED 2010/1/25: I think this <a href="http://gevaperry.typepad.com/main/2010/01/cloud-as-monetization-for-open-source-springsource.html">"Cloud as Monetization Strategy for Open Source"</a> post by Geva Perry (based on an <a href="http://saviorodrigues.wordpress.com/2010/01/19/has-springsource-rejected-the-open-core-business-model/">earlier post</a> by Savio Rodrigues ) confirms that in the Cloud the line between open source and proprietary software is thinning.]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/414' rel='bookmark' title='Permanent Link: Dear Microsoft, here is my $0.25 Windows license fee for the month'>Dear Microsoft, here is my $0.25 Windows license fee for the month</a></li>
<li><a href='http://stage.vambenepe.com/archives/1146' rel='bookmark' title='Permanent Link: Can I get a price check on this AMI?'>Can I get a price check on this AMI?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/215' rel='bookmark' title='Permanent Link: BMC acquires ITM Software'>BMC acquires ITM Software</a></li>
<li><a href='http://stage.vambenepe.com/archives/798' rel='bookmark' title='Permanent Link: Interesting links'>Interesting links</a></li>
<li><a href='http://stage.vambenepe.com/archives/442' rel='bookmark' title='Permanent Link: IT management and Cloud: now some products'>IT management and Cloud: now some products</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1142/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Expanding on &#8220;twitter with a brain&#8221;</title>
		<link>http://stage.vambenepe.com/archives/1127</link>
		<comments>http://stage.vambenepe.com/archives/1127#comments</comments>
		<pubDate>Mon, 30 Nov 2009 08:54:27 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[Mashup]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[Portability]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Social networks]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://stage.vambenepe.com/?p=1127</guid>
		<description><![CDATA[Chuck Shotton recently made a compelling case (&#8220;Twitter with a Brain&#8220;) for Twitter tools to allow the user to change the protocol endpoint. That is, instead of always going to twitter.com, you can tell your Twitter client to send all requests to myTweetInterceptor.me.com. Why would you do this? You should read his blog entry, but [...]


Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1464' rel='bookmark' title='Permanent Link: Don&#8217;t tell Facebook what you like, tell Twitter'>Don&#8217;t tell Facebook what you like, tell Twitter</a></li>
<li><a href='http://stage.vambenepe.com/archives/1333' rel='bookmark' title='Permanent Link: There should be a word for this (Blog/Twitter edition) part 2'>There should be a word for this (Blog/Twitter edition) part 2</a></li>
<li><a href='http://stage.vambenepe.com/archives/1036' rel='bookmark' title='Permanent Link: There should be a word for this (Blog/Twitter edition)'>There should be a word for this (Blog/Twitter edition)</a></li>
<li><a href='http://stage.vambenepe.com/archives/994' rel='bookmark' title='Permanent Link: On Twitter'>On Twitter</a></li>
<li><a href='http://stage.vambenepe.com/archives/1514' rel='bookmark' title='Permanent Link: Twitter changes the rules for URLs in tweets: the end of privacy or the end of the 140 character limit?'>Twitter changes the rules for URLs in tweets: the end of privacy or the end of the 140 character limit?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1014' rel='bookmark' title='Permanent Link: PaaS as a satisfying and success-ready hobbyist plaform'>PaaS as a satisfying and success-ready hobbyist plaform</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Chuck Shotton recently made a compelling case (&#8220;<a href="http://www.shotton.com/wp/2009/11/28/twitter-with-a-brain/">Twitter with a Brain</a>&#8220;) for Twitter tools to allow the user to change the protocol endpoint. That is, instead of always going to <em>twitter.com,</em> you can tell your Twitter client to send all requests to <em>myTweetInterceptor.me.com</em>. Why would you do this? You should read his blog entry, but in short his point is that the intermediary can add all kinds of new features that neither the Twitter client nor Twitter itself support. As always in computer science, a new level of decoupling adds opportunities for extensions (and breakage too, of course).</p>
<p>I fully agree with what he writes and I would very much like to see his call to action answered. In fact, I want more than what he is asking for. So here is my call to action:</p>
<p><strong>1) It&#8217;s not just Twitter</strong></p>
<p>Why just Twitter? This should be true for <em>any</em> client using <em>any</em> protocol. Why not also the APIs for the various Google and Yahoo services? The APIs for the other social networks beyond Twitter? For shopping sites like Amazon and EBay? Etc. And of course to all the various Cloud providers out there. Just because I am using the Amazon EC2 API it doesn&#8217;t mean I necessarily want the requests to go straight to Amazon. Client tools should always make the endpoint configurable, period.</p>
<p><strong>2) It&#8217;s not just the clients, it&#8217;s also (and especially) the third party sites</strong></p>
<p>Chuck&#8217;s examples are about features that the Twitter clients could provide but don&#8217;t, so an intermediary would be an easy way to hack support for them (others presumably include modifying the client &#8211; if open source -, writing a plug-in for it &#8211; it there is such mechanism -, or running a network interceptor on the local client &#8211; unless the protocol is encrypted-).</p>
<p>That&#8217;s nice and I&#8217;d love to see this, but the big deal for me is less with clients and more with third party sites. You know, all these sites that ask for your Twitter login/password. Or those that ask for your GMail/Yahoo account info to retrieve a list of your contacts. I never grant these requests, but I would consider it if they allowed me to tell them what endpoint URL to use. For example, rather than using my Twitter login to go straight to <em>twitter.com</em>, they would use a login/password that I create and talk to <em>twitterIntermediary.vambenepe.com</em>. The requests would be in the exact same shape as what they send today to Twitter, just directed to another URL. There, I could have a proxy that only allows some requests (e.g. &#8220;update twitter background image&#8221; but not &#8220;send update&#8221;) and forwards them using my real Twitter credentials. Or, for email accounts, I could have a proxy that allows requests that read my address book but not those that read my mails. The goal here is not to add features, it is to delegate trust in a fine-grained (and audited) manner. This, to me, is the burning need, rather than a 3rd place to implement Twitter lists.</p>
<p>I would probably write these proxies using a PaaS platform like the Google App Engine. Or maybe even Yahoo Pipes. I have long struggled to think of use cases for which Yahoo Pipes hits the sweetspot, and this may well be it. Especially if people write modules to handle specific APIs (e.g. a &#8220;Twitter API&#8221; module that shows all operations and lets you enable/disable them one by one in a pipe). The one thing missing would be a way for a pipe to keep a log of its invocations, for auditing.</p>
<p>You want access to my email and social network accounts? Give me the ability to filter you requests and you&#8217;ll get access. If it&#8217;s blind trust you want, I am afraid I have a very limited supply.</p>
<p>[Note: I wanted to add this as a comment on Chuck's blog, but he doesn't seem to allow them: <em>"go start your own blog and/or shut up and eat your vegetables"</em> is his <a href="http://www.shotton.com/wp/about/">recommendation</a>. Since I already have my own blog, I guess I don't have to eat my vegetables if I don't want to. I just hope my kids don't learn about this rule or they'll be blogging in no time.]</p>
<p>[UPDATED 2009/11/30: WRT to Chuck's request, it looks like it's <a href="http://www.displacedaussie.net/2009/11/my-twitter-proxy/">being done already</a>. But no luck with the third party sites so far, which is what I most want to see.]</p>


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1464' rel='bookmark' title='Permanent Link: Don&#8217;t tell Facebook what you like, tell Twitter'>Don&#8217;t tell Facebook what you like, tell Twitter</a></li>
<li><a href='http://stage.vambenepe.com/archives/1333' rel='bookmark' title='Permanent Link: There should be a word for this (Blog/Twitter edition) part 2'>There should be a word for this (Blog/Twitter edition) part 2</a></li>
<li><a href='http://stage.vambenepe.com/archives/1036' rel='bookmark' title='Permanent Link: There should be a word for this (Blog/Twitter edition)'>There should be a word for this (Blog/Twitter edition)</a></li>
<li><a href='http://stage.vambenepe.com/archives/994' rel='bookmark' title='Permanent Link: On Twitter'>On Twitter</a></li>
<li><a href='http://stage.vambenepe.com/archives/1514' rel='bookmark' title='Permanent Link: Twitter changes the rules for URLs in tweets: the end of privacy or the end of the 140 character limit?'>Twitter changes the rules for URLs in tweets: the end of privacy or the end of the 140 character limit?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1014' rel='bookmark' title='Permanent Link: PaaS as a satisfying and success-ready hobbyist plaform'>PaaS as a satisfying and success-ready hobbyist plaform</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1127/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Review of Fujitsu&#8217;s IaaS Cloud API submission to DMTF</title>
		<link>http://stage.vambenepe.com/archives/1108</link>
		<comments>http://stage.vambenepe.com/archives/1108#comments</comments>
		<pubDate>Thu, 19 Nov 2009 17:33:30 +0000</pubDate>
		<dc:creator>William (@vambenepe on Twitter)</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DMTF]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[IT Systems Management]]></category>
		<category><![CDATA[Management integration]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Utility computing]]></category>
		<category><![CDATA[Virtualization]]></category>

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


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


<p>Related posts:<ol><li><a href='http://stage.vambenepe.com/archives/1538' rel='bookmark' title='Permanent Link: Introducing the Oracle Cloud API'>Introducing the Oracle Cloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/743' rel='bookmark' title='Permanent Link: Cloud API: what&#8217;s cooking between IBM and VMWare?'>Cloud API: what&#8217;s cooking between IBM and VMWare?</a></li>
<li><a href='http://stage.vambenepe.com/archives/1295' rel='bookmark' title='Permanent Link: HP has submitted a specification to the DMTF Cloud incubator'>HP has submitted a specification to the DMTF Cloud incubator</a></li>
<li><a href='http://stage.vambenepe.com/archives/936' rel='bookmark' title='Permanent Link: VMWare publishes (and submits) vCloud API'>VMWare publishes (and submits) vCloud API</a></li>
<li><a href='http://stage.vambenepe.com/archives/894' rel='bookmark' title='Permanent Link: REST in practice for IT and Cloud management (part 2: configuration management)'>REST in practice for IT and Cloud management (part 2: configuration management)</a></li>
<li><a href='http://stage.vambenepe.com/archives/667' rel='bookmark' title='Permanent Link: Open Cloud Manifesto, circa 2004'>Open Cloud Manifesto, circa 2004</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://stage.vambenepe.com/archives/1108/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>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>
	</channel>
</rss>

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