<?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>ZapThink &#187; Web Services</title>
	<atom:link href="http://www.zapthink.com/tag/web-services/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zapthink.com</link>
	<description>Sharpening Your Vision of the Future of IT</description>
	<lastBuildDate>Fri, 10 Feb 2012 18:12:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>The API is Dead! Long Live the API!</title>
		<link>http://www.zapthink.com/2012/01/10/the-api-is-dead-long-live-the-api/</link>
		<comments>http://www.zapthink.com/2012/01/10/the-api-is-dead-long-live-the-api/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 22:25:40 +0000</pubDate>
		<dc:creator>Jason Bloomberg</dc:creator>
				<category><![CDATA[ZapFlash]]></category>
		<category><![CDATA[HATEOAS]]></category>
		<category><![CDATA[Representational State Transfer]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RPC]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.zapthink.com/?p=14368</guid>
		<description><![CDATA[<p>The point to the programmable Web is to make software more Web-like</p>
]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.zapthink.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/14368.jpg&amp;w=64&amp;h=64&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>A funny thing happened as I was noodling on this ZapFlash. I was all set to put the nail in the Application Programming Interface (API) coffin, continuing the discussion of just how awful Remote Procedure Call (RPC) interfaces are, and how we should avoid them at all costs. But then I ran across the “explosion of APIs” meme at <a href="http://www.programmableweb.com/">ProgrammableWeb</a> and elsewhere. After all, your head must be planted deeply in the sand not to notice the plethora of APIs at all our favorite Social Web sites like Twitter, Facebook, and hundreds of others. How can the API be dead when APIs are more important and plentiful than ever?</p>
<p>Maybe I’m just nitpicking. As APIs become less RPC-centric and more RESTful, the inflexible tight coupling of the past is giving way to a new golden age of API-ness, where anybody can connect any piece of software seamlessly and automatically to any Web site or app we might care to use. But upon closer reflection, my concern is not all nitpickiness. There are API best practices and API worst practices, just as there are good APIs and bad ones. Perhaps more to the point, most of the APIs out there, well, are among the bad ones. So, what makes for a good API today, with all the power and capabilities that modern technology approaches afford us? Why are so many people getting them wrong? And what can we do to steer everyone in the right direction?</p>
<p><strong>Programmable Interfaces: The Never-ending Story</strong></p>
<p>The real reason that APIs get under my skin is the “P” – “programmable,” as in <em>programmatic</em>. The core notion of an API, after all, is that you want one application to be <em>programmable</em> by something external to it, in the sense that you have an imperative control flow that goes from <em>here</em> to <em>there</em> and back to <em>here</em>.</p>
<p>The problem with such imperative programming in any distributed environment, of course, is that there is no end of problems that can arise between <em>here</em> and <em>there</em>. Network issues, incompatibilities, timing and sequence issues, the list goes on and on, leading computer scientists to the notion of <em>functional</em> programming. In the functional world, functions (which also go by the names <em>procedures</em> or <em>methods</em>) encapsulate the software at the remote location, forming black boxes with fixed inputs and outputs. Any local piece of software, therefore, can call a remote procedure and get the desired response, without having to worry about whether multiple calls to that procedure might interfere with each other or lead to other nasty surprises that a purely imperative approach might exhibit.</p>
<p>Here’s the rub: functional programming is nothing more than RPC, with all the tight coupling issues that come along for the ride. However, functional programming is also considered to be a type of <em>declarative</em> programming. Declarative programming has always been the ugly duckling of the programming language world, because with a declarative approach, you don’t specify the control flow. Instead, you describe the desired behavior you want the software to exhibit. And somehow, via some kind of behind-the-scenes hand waving, the software miraculously does what you want it to.</p>
<p>Functional programming is declarative in the sense that a remote procedure acts as a black box. Specify the operations, inputs, and outputs (its <em>signature</em>, in API-speak), and the inner workings of the procedure aren’t your problem. That is, unless you don’t understand what it’s supposed to do for you, or heaven forbid, its behavior <em>changes</em>.</p>
<p><strong>REST to the Rescue?</strong></p>
<p>Building abstracted interfaces that enable organizations to deal better with change is what SOA is all about, of course. Unfortunately, the tools we had at our disposal – namely, Web Services – didn’t go far enough. Yes, we moved from RPC-style Web Services to document-style, and that improved our loose coupling substantially. But even document-style Web Services still have operations, a holdout from the bad old functional programming days.</p>
<p>Enter REST. ZapThink has discussed the move away from RPC to RESTful interfaces before: in <a href="http://www.zapthink.com/2011/08/04/rest-based-soa-an-iconoclastic-approach/">REST-Based SOA: an Iconoclastic Approach</a>, but of course, <a href="http://www.zapthink.com/2008/04/01/service-independence-the-document-style-and-building-for-change/">we’ve been discussing the advantages of document style interfaces over RPC</a> <a href="http://www.zapthink.com/2006/07/12/rest-and-web-services-the-zapthink-take/">for several years now</a>. But people still aren’t getting it. Not only are techies missing <a href="http://www.zapthink.com/2011/10/09/the-right-end-of-rest/">the point of REST</a>, even when they build supposedly RESTful APIs, they’re failing to follow the REST constraints.</p>
<p>For example, many of these ostensible RESTful APIs don’t provide self-descriptive messages. With REST, every message from a resource should contain all the metadata necessary for any client to understand what it can do with representations of that resource. In the RPC days, procedural responses may have contained only data with no metadata. With Web Service interactions, Service responses contained some metadata in the form of the SOAP envelope, header, and the tagging structure in the body. But even with Web Services, the WSDL contract and policy metadata are external to the Service. You don’t expect to get the contract when you query a Service.</p>
<p>With a RESTful interaction, on the other hand, <a href="http://www.zapthink.com/2011/09/14/where-is-the-soa-in-rest-based-soa/">contract metadata may be returned</a> in particular representations, whether it be media type metadata, schemas, or even less structured metadata. And of course, representations also include hyperlinks, which also provide contract metadata to the client.</p>
<p>Separation of resources from representations is another essential REST constraint – one that developers also frequently violate. If there are any instructions to the resource in a request other than one of the four operations of the uniform interface (GET, POST, PUT, and DELETE), then you are violating this constraint. For example, if your request is instructing a resource to update a record, you’re not being RESTful. It’s up to the <em>resource</em> to determine whether a POST or PUT should update a record, not the representation.</p>
<p>Finally, hypermedia as the engine of application state – the dreaded HATEOAS – is perhaps the most overlooked of the REST constraints, even though <a href="http://www.zapthink.com/2011/11/22/the-secret-to-a-restful-cloud/">it’s the most important</a>. The big picture of HATEOAS are the hypermedia applications that we’re trying to build, but even at the API level, HATEOAS is critical, in conjunction with the self-descriptive message constraint. In any truly RESTful interaction, the resource returns a representation that contains all necessary metadata, <em>including hyperlinks that instruct the client what it can do next</em>. Likewise, a RESTful client has no idea what a resource can do for it unless it follows such links.</p>
<p><strong>“RESTful” Equals “Web-friendly”</strong></p>
<p>What so many techies lose sight of is the fact that REST isn’t supposed to make the Web more like system integration; it’s meant to make system integration more like the Web. When you click a link in a Web page, you expect to go to another Web page, or perhaps a video or sound file or some other media representation. REST takes that simple interaction and abstracts it. Now you have an abstracted client (instead of a browser) supporting a request of a resource (the Web server capability, for example, the php script that generated the response) on an abstracted server (the Web server) that returns a representation (the resulting media file or Web page) as per the uniform interface (what the link you clicked was supposed to do). These abstractions let us apply simple Web behavior to all manner of system-to-system interactions. But never, ever lose sight of the fact that you want simple Web behavior from your application.</p>
<p>I’m sure many readers who made it this far are muttering to themselves that their RESTful APIs are truly RESTful. Well, maybe, but probably not, and here’s proof. Let’s take a popular, supposedly RESTful API as an example: <a href="http://developer.yahoo.com/geo/placefinder/guide/requests.html">the Yahoo! Maps PlaceFinder Geocoding API</a>. You’ll notice on the documentation page a “BASE URI,” which it expresses as <code>http://where.yahooapis.com/geocode?[parameters]. </code>There are two problems with this expression. First, it’s not a hyperlink (it just looks like one). Second, the URL has the question mark in it, requiring the user to know what parameters might be valid.</p>
<p>Let’s say instead we turn this expression into a true hyperlink, leaving off the parameters since we don’t know what they are: <code><a href="http://where.yahooapis.com/geocode">http://where.yahooapis.com/geocode</a>. </code>Go ahead,  click on that link, I dare ya. Sure enough, you get an error message. True, it’s XML formatted, but it’s missing something absolutely essential: a <em>hyperlink</em>.</p>
<p>In fact, Yahoo! made several serious mistakes: first, the base URI isn’t a hyperlink, violating HATEOAS. Second, the metadata that tell you how to use the interface are separate from the interface, rather than  returned in the response from hyperlinking to the base URI, violating the self-descriptive messages constraint. Third, the URI requires parameters as part of the search query (the characters after the question mark), violating the separation of resource and representation. And finally, the error response it <em>did</em> return didn’t include a hyperlink, once again violating HATEOAS. Bottom line: there’s really very little that’s RESTful about this API.</p>
<p>While it may be amusing to pick on Yahoo!, it’s important to point out that they aren’t alone. In fact, they’re typical. It’s quite rare, in fact, for a supposed RESTful interface to be truly Web-friendly. After all, most techies don’t expect Web friendliness from APIs. APIs are, well, <em>programming</em> interfaces, while the Web consists of <em>user</em> interfaces. But in the REST world, programming interfaces are simply abstracted user interfaces. In other words, truly RESTful APIs aren’t really like the APIs we know and love, and have been working with for years. They’re fundamentally different.</p>
<p><strong>The ZapThink Take</strong></p>
<p>I know this ZapFlash is deeply iconoclastic, but that’s what you’ve come to expect from ZapThink, after all. However, the point of this article isn’t to scold everybody for doing REST wrong. The point is to help you think differently about what it means to program in a distributed environment. The point to the “programmable Web” isn’t to make the Web more programmable, <em>it’s to make software more Web-like</em>. If we can finally free ourselves from the last vestiges of imperative, RPC-style programming, even going so far as to steer clear of functional programming, and move to a fully declarative, document-centric paradigm, only then will we be able to achieve the resilience and power of the Web when we tackle system integration challenges.</p>
<p>This mind shift is at the core of REST. When Roy Fielding wrote his dissertation, he didn’t come up with REST and then build the Web following its constraints. On the contrary: he deeply understood what made the Web itself so special, and he sought to express that specialness as an architectural style. True, tackling system integration following true RESTful principles is difficult. But remember, building the Web was easy. Take TCP/IP, add a few simple standard protocols, code an HTML rendering app we called a browser, and the Web more or less took it from there. Almost twenty years later, the Web is unimaginably immense, and yet it still works just fine, thank you very much. Is it too much to ask for all of our IT systems to behave the same way?</p>
<p><em>Image source: <a href="http://www.flickr.com/photos/cloudzilla/with/2931400196/">cloudzilla</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2012/01/10/the-api-is-dead-long-live-the-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Architectures with Web Services &amp; REST One-Day Course &#8212; April 5, 2012</title>
		<link>http://www.zapthink.com/2011/11/29/agile-architectures-with-web-services-rest-one-day-course-jan-12-2012/</link>
		<comments>http://www.zapthink.com/2011/11/29/agile-architectures-with-web-services-rest-one-day-course-jan-12-2012/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 21:34:08 +0000</pubDate>
		<dc:creator>Jason Bloomberg</dc:creator>
				<category><![CDATA[One-Day Course]]></category>
		<category><![CDATA[Training & Certification]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.zapthink.com/2011/11/29/agile-architectures-with-web-services-rest-one-day-course-jan-12-2012/</guid>
		<description><![CDATA[<p>Agile Architectures with Web Services &#38; REST One-Day Course -- Jan. 12, 2012</p>
]]></description>
			<content:encoded><![CDATA[<p><div class='newtabsmenucontent'>
<div id='newTabs_li_0_14170' class='tabcontent'>
</p>
<table cellpadding="20">
<tbody>
<tr>
<td><strong>Agile Architectures with Web Services &amp; REST One-Day Course</strong><br />
<em>Thursday, April 5, 2012</em><br />
7918 Jones Branch Dr<br />
Suite 110<br />
McLean VA 22102</p>
<p class="p_event_prices"><span class="span_event_price_label">Price: </span> <span class="span_event_price_value">$995.00 per person / $895 per person for 3 or more people / $8,995 to run course in your organization.</span></p>
<input id="event_cost-66" type="hidden" name="event_cost" value="595.00" />
<h2 style="padding: 5px; color: #0024ac; font-weight: bold;">Agile Architectures with Web Services &amp; REST</h2>
<p>&nbsp;</p>
<p>Service-Oriented Architecture (SOA) promises greater business agility by leveraging reusable Services. However, for many organizations, their SOA initiatives haven’t lived up to this promise. One of the primary contributors to this lack of success has been the challenge of leveraging Web Services, a complex, verbose set of open standards that vendors have adopted in an often piecemeal fashion.</p>
<p>To help address the shortcomings of Web Services, Representational State Transfer (REST) has arisen as a Web-centric, lightweight alternative. However, REST presents its own challenges as well. This course explains both the myths and realities of REST. Understand REST’s four architectural constraints, with an in-depth look at HATEOAS: Hypermedia as the Engine of Application State. Learn about the architectural context of REST, including intermediaries and compositions with REST and the differences between REST-Based SOA and Web Services-Based SOA.</p>
<p>&nbsp;</p>
<p><strong>Attend ZapThink’s Agile Architectures with Web Services &amp; REST to gain a balanced understanding of Web Services &amp; REST without falling into &#8220;religious&#8221; arguments. This course is appropriate for architects, system engineers, developers, and other technologists who must make sense out of modern architectural approaches. Join your peers for this relaxed, informative, and thought provoking full-day course.<br />
</strong><em></em></p>
<p><center><a class="download" href="http://www.zapthink.com/?page_id=12085&amp;regevent_action=register&amp;event_id=66&amp;name_of_event=Agile+Architectures+with+Web+Services+%26amp%3B+REST+One-Day+Course+--+Jan.+12%2C+2012">REGISTER</a></center></p>
<table width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>
<h2 align="center"><strong><span style="color: #000080;">Agile Architectures with Web Services &amp; REST One-Day Course</span></strong></h2>
<p><strong><em><span style="text-decoration: underline;">Cost: </span></em></strong></p>
<p style="padding-left: 30px;"><strong><em>$995.00 per person / $895 per person for 3 or more people / $8,995 to run course in your organization.</em></strong></p>
<p><strong><em><span style="text-decoration: underline;">Dates: </span></em></strong></p>
<p style="padding-left: 30px;"><strong><em>April 5, 2012</em></strong></p>
<p style="padding-left: 30px;"><strong><em>8:30 AM to 5:00 PM</em></strong></p>
<p><strong><em><span style="text-decoration: underline;">Address:</span></em></strong></p>
<p style="padding-left: 30px;"><strong><em>7918 Jones Branch Drive</em></strong></p>
<p style="padding-left: 30px;"><strong><em>Suite 110</em></strong></p>
<p style="padding-left: 30px;"><strong><em>McLean VA 20170</em></strong></p>
<p>&nbsp;</p>
<p><strong><em><span style="text-decoration: underline;">For more information:</span></em></strong></p>
<p style="padding-left: 30px;"><strong><em> </em></strong><a href="mailto:info@zapthink.com"><strong><em>info@zapthink.com</em></strong></a><strong><em> or 703-288-5300</em></strong></p>
<p>&nbsp;</p>
<p style="text-align: center;">
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p><center><a class="download" href="http://www.zapthink.com/?page_id=12085&amp;regevent_action=register&amp;event_id=66&amp;name_of_event=Agile+Architectures+with+Web+Services+%26amp%3B+REST+One-Day+Course+--+Jan.+12%2C+2012">REGISTER</a></center></p>
<h2></div><div id='newTabs_li_1_14170' class='tabcontent'>
</h2>
<h2 style="text-align: left;" align="center"><span style="color: #000080;">Presented by Jason Bloomberg President, ZapThink, a Dovèl Technologies Company</span></h2>
<p><img class="alignright" style="margin: 20px;" src="http://www.zapthink.com/content/images/j_bloomberg_color.jpg" alt="" width="140" align="right" hspace="20" vspace="20" /></p>
<p>Jason Bloomberg is President of ZapThink, a Dovèl Technologies Company. He is a thought leader in the areas of Enterprise Architecture, Service-Oriented Architecture, and Cloud Computing, and helps organizations around the world better leverage their IT resources to meet changing business needs. He is a frequent speaker, prolific writer, and pundit.</p>
<p>&nbsp;</p>
<p>Mr. Bloomberg is one of the original Managing Partners of ZapThink LLC, the leading SOA advisory and analysis firm, which was acquired by Dovèl Technologies in August 2011. His book, <em>Service Orient or Be Doomed! How Service Orientation Will Change Your Business</em> (John Wiley &amp; Sons, 2006, coauthored with Ron Schmelzer), is recognized as the leading business book on Service Orientation.</p>
<p></div><div id='newTabs_li_2_14170' class='tabcontent'>
</p>
<p><strong><br />
</strong></p>
<h2><strong><span style="color: #000080;">Venue:</span></strong></h2>
<p>&nbsp;</p>
<p>7918 Jones Branch Dr<br />
Suite 110<br />
McLean VA 22102 <!--?php echo $event_city . ", " .	$event_state . " " . $event_zip; ?--></p>
<p><center><a class="download" href="http://www.zapthink.com/?page_id=12085&amp;regevent_action=register&amp;event_id=66&amp;name_of_event=Agile+Architectures+with+Web+Services+%26amp%3B+REST+One-Day+Course+--+Jan.+12%2C+2012">REGISTER</a></center><strong></strong><br />
</div></div><script type='text/javascript'>var newtabs=new ddtabcontent('newTabs_ul_14170');newtabs.setpersist(true);newtabs.setselectedClassTarget('link');newtabs.init();</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2011/11/29/agile-architectures-with-web-services-rest-one-day-course-jan-12-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Architecting Beyond Cloud Computing’s Horseless Carriage</title>
		<link>http://www.zapthink.com/2011/11/08/architecting-beyond-cloud-computing%e2%80%99s-horseless-carriage/</link>
		<comments>http://www.zapthink.com/2011/11/08/architecting-beyond-cloud-computing%e2%80%99s-horseless-carriage/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 21:22:39 +0000</pubDate>
		<dc:creator>Jason Bloomberg</dc:creator>
				<category><![CDATA[ZapFlash]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Deployment Scenarios]]></category>
		<category><![CDATA[Enterprise Architecture]]></category>
		<category><![CDATA[NIST]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.zapthink.com/?p=13794</guid>
		<description><![CDATA[<p>Factor in elasticity &#38; we must have new approaches to architecting</p>
]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.zapthink.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/13794.jpg&amp;w=64&amp;h=64&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>Today is a wonderful time for anyone interested in Cloud Computing to be working with the US government. On the one hand, the government considers Cloud to be strategically important, and they already have a track record as an early adopter of Cloud Computing on a grand scale. On the other hand, the government is also in the unique position of being able to drive standards for the approach—and in fact, they are even responsible for establishing the most widely adopted definition of Cloud Computing.</p>
<p>The federal agency who has taken this leadership position is the National Institute for Standards and Technology (NIST), an agency of the US Department of Commerce. NIST’s <a href="http://www.nist.gov/itl/csd/cloud-102511.cfm">formal definition of Cloud Computing</a> is already well known—“a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.” Concise as that definition is, it only marks the beginning of the work NIST is doing to formalize and standardize the full breadth of Cloud Computing approaches, both within the government as well as for the world at large.</p>
<p>I learned about the breadth of NIST’s work on Cloud last week, when I had the pleasure of attending the NIST <a href="http://envisiongovit.com/2011/11/03/nist-cloud-computing-forum-workshop-iv-day-1/">Cloud Computing Forum &amp; Workshop</a>. They are leading a <a href="http://www.nist.gov/itl/cloud/index.cfm">cross-industry effort</a> to “provide thought leadership and guidance around the cloud computing paradigm to catalyze its use within industry and government. NIST aims to shorten the adoption cycle, which will enable near-term cost savings and increased ability to quickly create and deploy enterprise applications. NIST aims to foster Cloud Computing systems and practices that support interoperability, portability, and security requirements that are appropriate and achievable for important usage scenarios.” To this end, they have followed up their formal definition with a Cloud Computing Technology Roadmap, which consists of three volumes: <a href="http://www.nist.gov/itl/cloud/upload/SP_500_293_volumeI-2.pdf">requirements to further US government adoption</a>, <a href="http://www.nist.gov/itl/cloud/upload/SP_500_293_volumeII.pdf">information for Cloud adopters</a>, and <a href="http://collaborate.nist.gov/twiki-cloud-computing/bin/view/CloudComputing/RoadmapVolumeIIIWorkingDraft">technical considerations for government Cloud Computing deployment decisions</a>. They have also published a Cloud Computing <a href="http://collaborate.nist.gov/twiki-cloud-computing/pub/CloudComputing/ReferenceArchitectureTaxonomy/NIST_SP_500-292_-_090611.pdf">reference architecture</a> and <a href="http://collaborate.nist.gov/twiki-cloud-computing/pub/CloudComputing/StandardsRoadmap/NIST_SP_500-291_Jul5A.pdf">standards roadmap</a>.</p>
<p>To be sure, NIST has generated a daunting quantity of information here—but ignore these documents at your peril. If you work for a US government agency, then you likely have a mandate to move toward Cloud Computing, and NIST spells out many of the details. But even if you have nothing to do with the government,  it’s important to remember that NIST is also a standards body in its own right, as well as a coordinating agency for other standards bodies. No other group or agency anywhere else in the world has achieved the same leadership position with respect to today’s nascent Cloud standards efforts.</p>
<p>One of the main reasons NIST is able to maintain this position is because they have an inclusive approach. Want to contribute? You’re welcome to. Have an issue with something in one of the documents? Then let them know. After all, one of the reasons they’ve generated so much content is because they have so many contributors, not just from the government, but from people around the world.</p>
<p>Even ZapThink isn’t above joining the fray. We’ve reviewed NIST’s documents in the context of ZapThink’s eye for agile enterprise architecture, and we’ve identified a missing link. Of course, looking at something and trying to identify what’s missing is always difficult, especially when so many contributors have already pored over the material so carefully. The trick is to break out of “horseless carriage” patterns of thinking: instead of considering the Cloud to be little more than an outsourced, virtualized data center, put on your architect’s hat and consider how Cloud Computing’s unique characteristics will change how you do architecture.</p>
<p><strong>NIST’s Cloud Deployment Scenarios</strong></p>
<p>I found this missing link when I reviewed the Cloud deployment scenarios in the NIST Standards Roadmap document. Here is their diagram illustrating the eight generic deployment scenarios that they identified:<br />
<center><br />
<a href="http://www.zapthink.com/wp-content/uploads/2011/11/nist-cloud.png"><img class="size-medium wp-image-13799" title="nist-cloud" src="http://www.zapthink.com/wp-content/uploads/2011/11/nist-cloud-300x246.png" alt="" width="300" height="246" /></a></center></p>
<p style="text-align: center;">
<center><strong>Generic Cloud Computing Deployment Scenarios (<em>Source: </em></strong><a href="http://www.nist.gov/manuscript-publication-search.cfm?pub_id=909024"><strong><em>NIST</em></strong></a><strong>)</strong></center></p>
<p>They sort the various deployment scenarios into three categories:</p>
<p><em>Single Cloud</em></p>
<ul>
<li>Scenario 1: Deployment on a single Cloud</li>
<li>Scenario 2: Manage resources on a single Cloud</li>
<li>Scenario 3: Interface enterprise systems to a single Cloud</li>
<li>Scenario 4: Enterprise systems migrated or replaced on a single Cloud</li>
</ul>
<p><em>Multiple Clouds (serially, one at a time)</em></p>
<ul>
<li>Scenario 5: Migration between Clouds</li>
<li>Scenario 6: Interface across multiple Clouds</li>
<li>Scenario 7: Work with a selected Clouds</li>
</ul>
<p><em>Multiple Clouds (simultaneously, more than one at a time)</em></p>
<ul>
<li>Scenario 8: Operate across multiple Clouds</li>
</ul>
<p>From ZapThink’s perspective, the most interesting of these are scenarios 1, 3, and 4, because they consider the relationships between enterprise systems and the Cloud. ZapThink has written about these relationships before, most recently in <a href="http://www.zapthink.com/2011/06/21/the-keys-to-enterprise-public-cloud/">The Keys to Enterprise Public Cloud</a>, but also back in mid-2010, when we discussed <a href="http://www.zapthink.com/2010/07/12/cloud-architectures-missing-link/">Cloud Architecture’s Missing Link</a>.</p>
<p>The missing link we pointed out in that ZapFlash was the ability to compose Cloud-based Services with on-premise Services as part of an enterprise SOA effort. It could be argued, however, that composing Cloud-based Services falls under Scenario 3, since Services are a type of interface. But there’s more to this story—and to understand how the NIST folks missed it, it’s important to follow their line of reasoning.</p>
<p><strong>NIST’s Blind Spot</strong></p>
<p>NIST has divided their Cloud standards efforts into three categories: interoperability, portability, and security. Interoperability standards are the most straightforward, especially for anyone who has worked with Web Services, which of course are little more than standards-based interfaces intended to promote interoperability and loose coupling.</p>
<p>Portability standards are more complicated, because NIST considers both application portability and data portability. In the Cloud context, application portability centers on the ability to move virtual machine (VM) instances from one Cloud to another. Data portability, however, is more difficult, because applications process different kinds of data, and those data flow throughout an entire system. For one organization, data portability might mean moving a single database from one Cloud to another, but for a different organization, the requirement might be for the portability of an entire SaaS application, along with all of its distributed data.</p>
<p>NIST’s focus on interoperability and portability (and security, of course, which is an entire conversation in its own right) makes perfect sense in light of their focus on standards, since the standardization of these three capabilities will go a long way in furthering NIST’s core mission. So it’s no wonder that their three Cloud deployment scenarios that involve enterprise systems consist of deploying or migrating to a Cloud (facilitated by portability standards), or interfacing with a Cloud (facilitated by interoperability standards).</p>
<p>It should come as no surprise, therefore, that NIST missed another deployment scenario: building applications that leverage both on-premise and Cloud-based capabilities, where those applications rely upon more than interoperability, portability, and the ubiquitous security.</p>
<p>Building applications that are compositions of Cloud-based and on-premise Services is a simple example, but doesn’t go far enough, because even this scenario falls into the “horseless carriage” trap of considering the Cloud to be nothing more than a virtualized data center. Factor <em>elasticity</em> into the equation, however, and we must consider new approaches to architecting such applications that go beyond considerations of interoperability and portability.</p>
<p><strong>Building the Cloud’s Inherent Elasticity into Hybrid Applications</strong></p>
<p>More than any other characteristic, elasticity distinguishes true Clouds from simple virtualized data centers. If your app requires more resources, the Cloud will provision those resources automatically, and then release them when you’re done with them—until you need them again. Furthermore, those elastic resources may be among any of the different types of Cloud resources (networks, servers, storage, applications and Services<strong>, </strong> as per the NIST definition), or any combination thereof.</p>
<p>As a result, when you architect your app, you don’t know how many of each of these resources you will be using at any point in time, since the number can change with no warning. You must take this change into account when <a href="http://www.zapthink.com/2011/06/01/base-jumping-in-the-cloud-rethinking-data-consistency/">architecting your data</a>, your middleware, your execution environments, your application logic, and your presentation tier—in other words, your entire distributed application.</p>
<p>Cloud providers do their best to hide the underlying complexity inherent in delivering elastic infrastructure. But when you’re building a hybrid app—that is, one that includes Cloud-based as well as on-premise capabilities—your architects must have deeper knowledge of the underlying capabilities of the Cloud environment than Cloud providers are typically comfortable revealing. In other words, even once Cloud interoperability and portability standards mature, architects will still require additional information about the underlying capabilities of their Cloud environments that such standards won’t cover.</p>
<p><strong>The ZapThink Take</strong></p>
<p>This ZapFlash may leave you wanting more—namely, how precisely do you architect with the Cloud in mind? Unfortunately, there isn’t enough room for the answer to that question in this ZapFlash, but fear not, we’ll be laying out more details in the weeks and months to come.</p>
<p>Can’t wait? Then come to our <a href="http://www.zapthink.com/soa-training-certification/">Licensed ZapThink Architect SOA &amp; Cloud course</a> in San Diego January 16-19. We’ll dive deep into architecting with the Cloud, as we enjoy warm breezes off the Pacific from our <a href="http://jasonbloomberg.com/pix/sandiego409/images/20090413%20014.jpg">lush venue by Seaforth Marina on Quivira Basin</a>. Or better yet, take advantage of ZapThink’s new Cloud Competency Center by dropping us a line at <a href="mailto:info@zapthink.com">info@zapthink.com</a>. We’re here to help!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2011/11/08/architecting-beyond-cloud-computing%e2%80%99s-horseless-carriage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How I Became a REST &#8220;Convert&#8221;</title>
		<link>http://www.zapthink.com/2011/07/12/how-i-became-a-rest-convert/</link>
		<comments>http://www.zapthink.com/2011/07/12/how-i-became-a-rest-convert/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 15:32:29 +0000</pubDate>
		<dc:creator>Ronald Schmelzer</dc:creator>
				<category><![CDATA[ZapFlash]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.zapthink.com/?p=13384</guid>
		<description><![CDATA[SOA can be done well in practice without using Web Services in any significant manner]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.zapthink.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/13384.jpg&amp;w=64&amp;h=64&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>Many of you know me as one half of the ZapThink team – an advisor, analyst, sometimes-trainer, and pundit that has been focused on XML, Web Services, SOA, and now Cloud Computing over the past decade or so. Some you may also know that immediately prior to starting ZapThink I was one of the original members of the <a href="https://www.microsoft.com/presspass/press/2000/Nov00/UDDIBetaPR.mspx">UDDI Advisory Group back in 2000 when I was with ChannelWave</a>, and I also sat on a number of standards bodies including <a href="http://findarticles.com/p/articles/mi_m0EIN/is_1999_August_9/ai_55384601/">RosettaNet</a>, <a href="http://www.ebxml.org/participants/participant_c.htm">ebXML</a>, and <a href="http://www.cpexchange.org/">CPExchange</a> initiatives. Furthermore, as part of the ZapThink team, I tracked the various WS-* standards from their inception to their current “mature” standing. I’ve closely followed the ups and downs of the <a href="http://www.ws-i.org/">Web Service Interoperability (WS-I) organization</a> and more than a few efforts to standardize such things as business process. Why do I mention all this? To let you know that I’m no slouch when it comes to understanding the full scope and depth of the Web Services family of standards. And yet, when push came to shove and I was tasked with implementing SOA as a developer, what did I choose? <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Representational_State_Transfer">REST</a>.</p>
<p>Representational State Transfer, commonly known as REST, is a style of distributed software architecture that offers an alternative to the commonly accepted XML-based Web Services as a means for system-to-system interaction<a href="http://www.zapthink.com/2008/08/19/more-soa-less-dogma/">. ZapThink has written</a> <a href="http://www.zapthink.com/2008/05/16/woa-is-me-another-acronym-woa-and-soa/">numerous times about REST</a> and its <a href="http://www.zapthink.com/2007/06/20/divorcing-soa-and-web-services/">relationship to SOA</a> and <a href="http://www.zapthink.com/2010/12/02/does-rest-provide-deep-interoperability/">Web Services</a>. Of course, <a href="http://www.zapthink.com/2007/06/22/time-to-drive-a-wedge-between-soa-and-web-services/">this has nothing to do with Service-Oriented Architecture</a>, as we’ve discussed in numerous ZapFlashes in the past. The power of SOA is in loose coupling, composition, and how it enables approaches like Cloud Computing. It is for these reasons that I chose to adopt SOA for a project I’m currently working on. But when I needed to implement the Services I had already determined were necessary, I faced a choice: use Web Services or REST-based styles as the means to interact with the Services. For the reasons I outline below, REST was a clear winner for my particular use case.</p>
<p><strong>Web Services in Theory and in Practice</strong></p>
<p>The main concepts behind Web Services were established in 1999 and 2000 during the height of the dot-com boom. SOAP, then known as the Simple Object Access Protocol and later just “SOAP,” is the standardized, XML-based method for interacting with a third-party service. Simple in concept, but in practice, there’s many ways to utilize SOAP. RPC style (we think not) or <a href="http://www.zapthink.com/2008/04/01/service-independence-the-document-style-and-building-for-change/">Document style</a>? How do you identify end points? And what about naming operations and methods? Clearly SOAP on its own leaves too much to interpretation.</p>
<p>So, this is the role that the Web Services Description Language (WSDL) is supposed to fill. But writing and reading (and understanding) WSDL is a cumbersome affair. Data type matching can be a pain. Versioning is a bear. Minor server-side changes often result in different WSDL and a resulting different Service interface, and on the client-side, XSD descriptions of the service are often similarly tied to a particular version of the SOAP endpoint and can break all too easily. And you still have all the problems associated with SOAP. In my attempts to simply get a Service up and running, I found myself fighting more with SOAP and WSDL than doing actual work to get Services built and systems communicating.</p>
<p>The third “leg” of the Web Services concept, Universal Description, Discovery and Integration (UDDI), conceptually makes a lot of sense, but in practice, hardly anyone uses it. As a developer, I couldn’t even think of a scenario where UDDI would help me in my particular project. Sure, I could artificially insert UDDI into my use case, but in the scenario where I needed loose coupling, I could get that by simply abstracting my end points and data schema. To the extent I needed run-time and design-time discoverability or visibility into Services at various different states of versioning, I could make use of a registry / repository without having to involve UDDI at all. I think UDDI’s time has come and gone, and the market has proven its lack of necessity. Bye, bye UDDI.</p>
<p>As for the rest of the WS-* stack, these standards are far too undeveloped, under implemented, under-standardized, inefficient, and obscure to make any use of whatever value they might bring to the SOA equation, with a few select exceptions. I have found the security-related specifications, specifically OAuth, Service Provisioning Markup Language (SPML), Security Assertion Markup Language (SAML), eXtensible Access Control Markup Language (XACML), are particularly useful, <a href="http://www.zapthink.com/2011/03/24/cloud-security-not-an-oxymoron/">especially in a Cloud environment</a>. These specifications are not Web Services dependent, and indeed, many of the largest Web-based applications use OAuth and the other specs to make their REST-based environments more secure.</p>
<p><strong>Why REST is Ruling, and Applying SOA Principles</strong></p>
<p>I ended up using REST for a number of reasons, but the primary one is simplicity. As most advocates of REST will tell you, REST is simpler to use and understand than Web Services. Development with REST is easier and quicker than building WSDL files and getting SOAP to work and this is the reason why many of the most-used web APIs are REST-based. You can easily test HTTP-based REST requests with a simply browser call. It can also be more efficient as a protocol since it doesn’t require a SOAP envelope for every call and can leverage <a href="https://secure.wikimedia.org/wikipedia/en/wiki/JSON">the </a><a href="https://secure.wikimedia.org/wikipedia/en/wiki/JSON">JavaScript Object Notation</a> (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/JSON">JSON</a>) as a data representation format instead of the more verbose and complex to process XML.</p>
<p>But even more than the simplicity, I appreciated the elegance of the REST approach. The basic operation and scalability of the Web has proven the underlying premise of the fundamental REST approach. HTTP operations are standardized, widely accepted, well understood, and operate consistently. There’s no need for a REST version of the WS-I. There’s no need to communicate company-specific SOAP actions or methods – the basic GET, POST, PUT, and DELETE operations are standardized across all Service calls.</p>
<p>Even more appealing is the fact that the vendors have not polluted REST with their own interests. The primary driver for Web Services adoption has been the vendors. Say what you might about the standard’s applicability outside a vendor environment, one would be very hard pressed to utilize Web Services in any robust way without first choosing a vendor platform. And once you’ve chosen that platform, you’ve pretty much committed to a specific Web Services implementation approach, forcing third-parties and others to comply with the quirks of your particular platform.</p>
<p>Not so with REST. Not only does the simplicity and purity of the approach eschew vendor meddling, it actually negates much of the value that vendor offerings provide. Indeed, it’s much easier (and not to mention lower cost) to utilize <a href="http://www.zapthink.com/2010/02/25/open-source-soa/">open source offerings</a> in REST-based SOA approaches than more expensive and cumbersome vendor offerings. Furthermore, you can leverage existing technologies that have already proven themselves in high-scale, high-performance environments.</p>
<p><strong>REST: Focus on Architecture, Not on HTTP</strong></p>
<p>So, how did I meld the fundamental tenets of SOA with a REST-based implementation approach? In our Web-Oriented SOA ZapFlash, we recommended using the following approach to RESTafarian styles of SOA:</p>
<ul>
<li>Make sure your Services are properly abstracted, loosely coupled, composable, and contracted</li>
<li>Every Web-Oriented Service should have an unambiguous and unique URI to locate the Service on the network</li>
<li>Use the URI as a means to locate as well as taxonomically define the Service in relation to other Services.</li>
<li>Use well-established actions (such as POST, GET, PUT, and DELETE for HTTP) for interacting with Services</li>
<li>Lessen the dependence on proprietary middleware to coordinate Service interaction and shift to common Web infrastructure to handle SOA infrastructure needs</li>
</ul>
<p>Much of the criticism of REST comes not from the interaction approach, but rather from the use of HTTP. Roy Fielding, <a href="http://tech.groups.yahoo.com/group/rest-discuss/message/6735">the progenitor of REST</a>, states in his <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">dissertation</a> that REST was initially described in the context of HTTP, but is not limited to that protocol. He states that REST is an architectural style, not an implementation, and that the Web and the use of the HTTP protocol happens to be designed under such style. I chose to implement REST using <a href="https://secure.wikimedia.org/wikipedia/en/wiki/XMPP">eXtensible Messaging and Presence Protocol (XMPP)</a> as a way of doing distributed, asynchronous messaging styles of REST-based Service interaction. XMPP, also known as the Jabber Protocol, has already proven itself as a widely-used, highly-scalable messaging protocol for secure and distributed near-realtime messaging protocol. XMPP-based software is deployed widely across the Internet, and forms the basis of many high-scale messaging systems, including those used by Facebook and Google.</p>
<p>Am I bending the rules or the intent of REST by using XMPP instead of HTTP? Perhaps. If HTTP suits you, then you have a wide array of options to choose from in optimizing your implementation. <a href="http://www.infoq.com/articles/tilkov-rest-doubts">Steven Tilkov does a good job of describing how to best apply HTTP for REST use.</a> But you don’t have to choose XMPP for your implementation if HTTP doesn’t meet your needs. There are a number of other open-source approaches to alternative transports for REST existing including <a href="http://www.rabbitmq.com/">RabbitMQ</a> (based on the <a href="http://www.amqp.org/">AMQP</a> standard), <a href="http://www.zeromq.org/">ZeroMQ</a>, and <a href="http://redis.io/">Redis</a>.</p>
<p><strong>The ZapThink Take</strong></p>
<p>The title of this ZapFlash is a bit of a misnomer. In order to be a convert to something you first need to be indoctrinated into another religion, and I don’t believe that REST or Web Services is something upon which to take a religious stance. That being said, for the past decade or so, dogmatic vendors, developers, and enterprise architects have reinforced the notion that to do SOA properly, you must use Web Services. ZapThink never believed that this was the case, and my own experiences now shows that SOA can be done well in practice without using Web Services in any significant manner. Indeed, my experience shows that it is actually easier, less costly, and potentially more scalable to <em>not</em> use Web Services unless there’s an otherwise compelling reason.</p>
<p>The conversation about SOA is a conversation about architecture – everything that we’ve talked about over the past decade applies just as equally when the Services are implemented using REST or Web Services on top of any protocol, infrastructure, or data schema. While good enterprise architects do their work at the architecture level of abstraction, the implementation details are left to those who are most concerned with putting the principles of SOA into practice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2011/07/12/how-i-became-a-rest-convert/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Functional vs. Interface Granularity: Still Powerful Ideas</title>
		<link>http://www.zapthink.com/2011/02/23/functional-vs-interface-granularity-still-powerful-ideas/</link>
		<comments>http://www.zapthink.com/2011/02/23/functional-vs-interface-granularity-still-powerful-ideas/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 21:38:50 +0000</pubDate>
		<dc:creator>Jason Bloomberg</dc:creator>
				<category><![CDATA[ZapFlash]]></category>
		<category><![CDATA[Asynchrony]]></category>
		<category><![CDATA[coarse granularity]]></category>
		<category><![CDATA[fine granularity]]></category>
		<category><![CDATA[functional granularity]]></category>
		<category><![CDATA[granularity]]></category>
		<category><![CDATA[idees fortes]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[Loose Coupling]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.zapthink.com/?p=13098</guid>
		<description><![CDATA[Granularity hasn’t gotten the respect that it deserves]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.zapthink.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/13098.jpg&amp;w=64&amp;h=64&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>Ever since we <a href="http:/www.zapthink.com/2002/09/16/web-services-iideacutees-fortesi/">called out coarse granularity as a Web Services <em>Idée Forte</em></a> (powerful idea) way back in 2002, SOA architects have continued to struggle with the concept of granularity. Unlike the other two Idées <em>Fortes</em>—asynchrony and loose coupling—the principle of granularity hasn’t gotten the respect that it deserves over the years. In spite of this oversight, ZapThink considers granularity to be a core SOA design principle, and we treat it as such in our <a href="http:/www.zapthink.com/soa-training-certification/">Licensed ZapThink Architect course</a>.</p>
<p>From a technical perspective, the granularity of an interface impacts performance. Excessively fine-grained interfaces lead to increased traffic on the network, because the consumer must re-query the provider multiple times to complete a task. However, if the performance impact of excessive fine granularity were the whole story, granularity would be an important consideration, but not important enough to rate as a core SOA design principle.</p>
<p>The reason we consider granularity to be so significant is because there is a general correlation between coarse granularity and business context. Generally speaking, when the business makes a request of a Service, then either the request or the response (or both) have some structure to it. For example, if you submit an order, you are sending a number of details that have business context—namely, the details of the order. Likewise, if you request customer information from a Service, for example, you typically want a number of details.</p>
<p>On the other hand, fine-grained Services tend to have a technical context but lack a business context. Submit a number, get a number in response, for example. There are exceptions, naturally: a credit score Service is the one we talk about in the LZA course. Submit a Social Security number, get back a three-digit credit score. In spite of examples like this one, however, coarse granularity generally correlates with business context.</p>
<p>The tradeoff with coarse granularity is that while it correlates with business context, coarse grained Services also tend to be less reusable, because the interface becomes increasingly specific to a particular purpose. Architects must therefore balance reusability and business context when they consider granularity in their interface designs.</p>
<p><strong>Distinguishing Functional Granularity</strong></p>
<p>Up to this point we’ve been discussing the granularity of the interface. After all, Services are interfaces or abstractions of interfaces, so among an architect’s first considerations when designing a Service is the granularity of the interface. However, there is more to granularity than the interface: the granularity of the underlying implementation, what ZapThink calls <em>functional granularity</em>.</p>
<p>For example, let’s consider an “add product to order” Service. Send this Service a product number, and it adds the product to an existing order and returns a confirmation. Clearly, this Service has a fine-grained interface.</p>
<p>Now, what if the product you were adding was actually a set of products? For example, you add a laptop to an order and the laptop, battery and several questionable pieces of software come along for the ride. You could call add product Service many times, of course, but that might lead to a performance bottleneck, and you may not know all the individual product numbers in the set anyway. Instead, rework the add product to order Service so that you can send an ID that represents a set of products as an input. Now you can add any number of products with a single Service call. The granularity of the interface doesn’t change, but the new Service’s functional granularity is now much coarser.</p>
<p>The next design question is whether the add (single) product to order Service and the add multiple products to order Service should be two separate Services or a single Service. You could argue that you should implement two Services with different levels of functional granularity as two distinct Services. However, this design decision introduces unnecessary consumer-side coupling, because the consumer has to know which Service to call in order to elicit a specific response. Instead, you should define the functional granularity of a Service in the Service contract, as part of the semantic definition of the Service, so that you can combine both situations into the same Service.</p>
<p>Because the functional granularity of a Service would otherwise be hidden from the consumer, it’s important to provide the information about this behavioral aspect of the Service in the contract, so that you can expose a single abstracted business Service that represents whatever level of granularity consumers require from the Service. This approach also increases the reusability of the Service. In fact, separating functional granularity from interface granularity allows architects to have it both ways, because the interface may be fine-grained, improving reusability, while the functionality is coarse-grained, increasing the business context for the Service.</p>
<p><strong>Functional Granularity of Composite Services</strong></p>
<p>Adding products to an order is a simple example of coarse functional granularity, since a developer would likely be able to implement such a Service with a single well-crafted database call. In other instances, however, it’s more feasible to implement the underlying functionality of the Service as a composition.</p>
<p>For example, let’s say you wanted to implement an approve mortgage Service. Send the service an ID number for a mortgage application, and the Service executes a multiple-step mortgage approval process and returns a confirmation. The approve mortgage Service is another example of a Service with coarse functional granularity and fine interface granularity. Once again, the Service has a clear business context, which correlates with the functional more so than the interface granularity.</p>
<p><strong>The ZapThink Take</strong></p>
<p>Our 2002 <em>Idées Fortes</em> article focused on Web Services, first, because 2002 was the heyday of SOAP-based Services, and second, because SOAP messages lend themselves better to coarse-grained interactions, because of the substantial overhead that SOAP  requires.</p>
<p>Our discussion today, however, refers to Services much more generally. The entire discussion applies equally well to REST-based interactions as it does to SOAP-based Web Service interactions. In fact, the use of REST-based Services should emphasize functional granularity in their design. The use of the GET operation (one of only four possible operations as part of the HTTP-centric REST approach) uses the URL as the mechanism to specify the resource-based Service the consumer is querying. While it is possible to use query strings to add more data to the GET call, this approach is problematic if you want to query a range of resources rather than a single resource. Alternatively, an architect can use a URL hierarchy or a different Service to refer to a group of resources rather than a single one, but these alternatives face the same tight coupling issue mentioned earlier.</p>
<p>Instead, the architect should leverage the concept of coarse functional granularity. Create a GET Service in which the resource in the query can refer to either a single resource or multiple resources. In this way, the Service can increase its functional granularity without any change to the interface granularity. Indeed, the existing Service won’t fail even as you increase its functional granularity.</p>
<p>This REST-specific angle highlights an important point. From the architect’s perspective, the choice of message and transport protocols is separate from the granularity consideration. The architect’s focus is instead on balancing reusability and business context while maintaining loose coupling: a focus core to proper Service-Oriented thinking, regardless of whether the Services are SOAP or REST-based.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2011/02/23/functional-vs-interface-granularity-still-powerful-ideas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does REST Provide Deep Interoperability?</title>
		<link>http://www.zapthink.com/2010/12/02/does-rest-provide-deep-interoperability/</link>
		<comments>http://www.zapthink.com/2010/12/02/does-rest-provide-deep-interoperability/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 15:13:19 +0000</pubDate>
		<dc:creator>Jason Bloomberg</dc:creator>
				<category><![CDATA[ZapFlash]]></category>
		<category><![CDATA[deep interoperability]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Supertrend]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[ZapThink 2020]]></category>

		<guid isPermaLink="false">http://www.zapthink.com/?p=12938</guid>
		<description><![CDATA[Peer-to-peer Deep Interoperability is the price of admission.]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.zapthink.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/12938.jpg&amp;w=64&amp;h=64&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>We at ZapThink were encouraged by the fact that our recent ZapFlash on <a href="http://www.zapthink.com/2010/11/18/where%e2%80%99s-our-deep-interoperability/">Deep Interoperability</a> generated some intriguing responses. Deep Interoperability is one of the <a href="http://www.zapthink.com/2010/08/09/the-five-supertrends-of-enterprise-it/">Supertrends</a> in the ZapThink 2020 vision for enterprise IT (<a href="http://www.zapthink.com/2020/">now available as a poster for free download or purchase</a>). In essence the Deep Interoperability Supertrend is the move toward software products that truly interoperate, even over time as standards and products mature and requirements evolve. ZapThink’s prediction is that customers will increasingly demand Deep Interoperability from vendors, and eventually vendors will have to figure out how to deliver it.</p>
<p>One of the key points in the recent ZapFlash was that the Web Services standards don’t even guarantee <em>interoperability</em>, let alone Deep Interoperability. We had a few responses from vendors who picked up on this point. They had a few different angles, but the common thread was that hey, we support REST, so we have Deep Interoperability out of the box! So buy our gear, forget the Web Services standards, and your interoperability issues will be a thing of the past!</p>
<p>Not so fast. Such a perspective misses the entire point to Deep Interoperability. For two products to be deeply interoperable, they should be able to interoperate even if their primary interface protocols are incompatible. Remember the modem negotiation on steroids illustration: a 56K modem would still be able to communicate with an older 2400-baud modem because it knew how to negotiate with older modems, and could support the slower protocol. Similarly, a REST-based software product would have to be able to interoperate with another product that didn’t support REST by negotiating some other set of protocols that both products did support.</p>
<p>But this “least common denominator” negotiation model is still not the whole Deep Interoperability story. Even if all interfaces were REST interfaces we still wouldn’t have Deep Interoperability. If REST alone guaranteed Deep Interoperability, then there could be no such thing as a bad link.</p>
<p>Bad links on Web pages are ubiquitous, of course. Put a perfectly good link in a Web page that connects to a valid resource. Wait a few years. Click the link again. Chances are, the original resource was deleted or moved or had its name changed. 404 not found.</p>
<p>OK, all you RESTafarians out there, how do we solve this problem? What can we do when we create a link to prevent it from ever going bad? How do we keep existing links from going bad? And what do we do about all the bad links that are already out there? The answers to these questions are all part of the Deep Interoperability Supertrend.</p>
<p>One important point is that the modem negotiation example is only a part of the story, since in that case, you already have the two modems, and the initiating one can find the other one. But Deep Interoperability also requires discoverability and location independence. You can’t interoperate with a piece of software you can’t find.</p>
<p>But we still don’t have the whole story yet, because we must still deal with the problem of <em>change</em>. What if we were able to interoperate at one point in time, but then one of our endpoints changed. How do we ensure continued interoperability? The traditional answer is to put something in the middle: either a broker in a middleware-centric model or a registry or other discovery agency that can resolve abstract endpoint references in a lightweight model (either REST or <a href="http://www.zapthink.com/2008/11/17/why-today-is-a-perfect-time-for-no-platform-soa/">non-middleware SOA</a>). The problem with such intermediary-based approaches, however, is that they relieve the vendors from the need to build products with Deep Interoperability built in. Instead, they simply offer one more excuse to sell middleware.</p>
<p><strong>The ZapThink Take</strong></p>
<p>At its core Deep Interoperability is a peer-to-peer model, in that we’re requiring two products to be deeply interoperable with each other. But peer-to-peer Deep Interoperability is just the price of admission. If we have two products that are deeply interoperating, and we add a third product to the mix, it should be able to negotiate with the other two, not just to establish the three pairwise relationships, but to form the most efficient way for all three products to work together. Add a fourth product, then a fifth, and so on, and the same process should take place.</p>
<p>The end result will be IT environments of arbitrary size and complexity supporting Deep Interoperability across the entire architecture. Add a product, remove a product, or change a product, and the entire ecosystem adjusts accordingly. And if you’re wondering whether this ecosystem-level adjustment is an emergent property of our system of systems, you’ve hit the nail on the head. That’s why Deep Interoperability and Complex Systems Engineering are adjacent on our <a href="http://www.zapthink.com/2020/">ZapThink 2020</a> poster.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2010/12/02/does-rest-provide-deep-interoperability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is the Web Losing Ground on Freedom, Interoperability?</title>
		<link>http://www.zapthink.com/2010/11/28/is-the-web-losing-ground-on-freedom-interoperability/</link>
		<comments>http://www.zapthink.com/2010/11/28/is-the-web-losing-ground-on-freedom-interoperability/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 16:46:43 +0000</pubDate>
		<dc:creator>Jason Bloomberg</dc:creator>
				<category><![CDATA[In the News]]></category>
		<category><![CDATA[deep interoperability]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Tim Berners-Lee]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[WS-I]]></category>

		<guid isPermaLink="false">http://www.zapthink.com/?p=12935</guid>
		<description><![CDATA[It would be  great news <strong>if we had deep interoperability</strong>]]></description>
			<content:encoded><![CDATA[<p>The WS-I&#8217;s job wasn&#8217;t to write standards, but to work out how to  implement the standards, “offering guidance to vendors on how to  implement the standards to guarantee interoperability,” explains  Bloomberg. So, the committee&#8217;s pronouncement that it&#8217;s finished would be  great news <strong><a href="../2010/11/18/where%E2%80%99s-our-deep-interoperability" target="_blank">if we had deep interoperability, but, notes Bloomberg, we don&#8217;t</a></strong>.</p>
<p>There are a number of factors at play here, as Ron Schmelzer, also a <strong><a href="../zapthink-team/" target="_blank">managing partner at ZapThink</a></strong>, says in <strong><a href="http://news.idg.no/cw/art.cfm?id=36A5E21F-1A64-67EA-E415D22D9DB80589" target="_blank">an IDG article on the WS-I announcement</a></strong>.  Web services have lost ground to the alternative REST Web services and  mergers, and acquisitions have “also diminished issues of  interoperability,” Schmelzer points out.</p>
<p>Read the entire post at <a href="http://www.itbusinessedge.com/cm/blogs/lawson/is-the-web-losing-ground-on-freedom-interoperability/?cs=44432">http://www.itbusinessedge.com/cm/blogs/lawson/is-the-web-losing-ground-on-freedom-interoperability/?cs=44432</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2010/11/28/is-the-web-losing-ground-on-freedom-interoperability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where’s our Deep Interoperability?</title>
		<link>http://www.zapthink.com/2010/11/18/where%e2%80%99s-our-deep-interoperability/</link>
		<comments>http://www.zapthink.com/2010/11/18/where%e2%80%99s-our-deep-interoperability/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 00:59:08 +0000</pubDate>
		<dc:creator>Jason Bloomberg</dc:creator>
				<category><![CDATA[ZapFlash]]></category>
		<category><![CDATA[deep interoperability]]></category>
		<category><![CDATA[Supertrends]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[Web Services Interoperability]]></category>
		<category><![CDATA[WS-I]]></category>
		<category><![CDATA[ZapThink 2020]]></category>

		<guid isPermaLink="false">http://www.zapthink.com/?p=12908</guid>
		<description><![CDATA[Standards alone never guaranteed interoperability]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.zapthink.com/wp-content/plugins/simple-post-thumbnails/timthumb.php?src=/wp-content/thumbnails/12908.gif&amp;w=64&amp;h=64&amp;zc=1&amp;ft=jpg' alt='post thumbnail' /></p>
<p>I was surprised to learn that the <a href="http://www.ws-i.org/">Web Services Interoperability Organization</a> (WS-I) <a href="http://news.idg.no/cw/art.cfm?id=36A5E21F-1A64-67EA-E415D22D9DB80589">completed its work this week</a>, transferring its intellectual property to OASIS and calling it a day. Hooray! All Web Services implementations can now be fully interoperable! Simply make sure your vendors follow the now-final WS-I practices and conflicts between products from different vendors are now a thing of the past!</p>
<p>Not so fast.</p>
<p>At ZapThink we like to say that open standards are the <a href="http://www.zapthink.com/2006/12/11/the-legoreg-model-of-soa/">bumps on the Legos</a>. The whole point to standards like those in the Web Services family is to provide seamless interoperability between products that support those standards. After all, what fun would Legos be if the bumps were all different sizes?</p>
<p>Unfortunately, standards alone never guaranteed interoperability, which is why WS-I existed in the first place. The WS-I committee hammered out specific ways to implement specific standards, offering guidance to vendors on how to implement the standards to guarantee interoperability.</p>
<p>So now, the WS-I committee says that they’re all done. But wait! Where’s our seamless interoperability?</p>
<p>While the Web Services standards were an important step in the long road to true interoperability, the static interfaces that these standards specify are only part of the story. Contracted interfaces alone can never guarantee interoperability long-term.</p>
<p>The story, of course, is one of change. The Lego metaphor breaks down, because the bumps have never needed to change. Today’s Legos interoperate with Legos from fifty years ago, because our requirements for the plastic blocks are essentially the same as they were back then. But in the world of IT, change is constant, as it is for the business requirements that drive IT. Any fixed set of standards, no matter how robust and detailed, will never solve the interoperability problem for long.</p>
<p>Lest we forget, this story is not a new one. Remember the analog modem market from the 1980s and 1990s? 300 baud acoustic couplers gave way to 1200 baud then 2400, on up to 56K before newer technologies like ADSL took over. But in the heyday of the analog modem, each box supported multiple standard protocols, and would attempt to negotiate with the modem on the other end of the line using the fastest protocol it knew. If that didn’t work, each modem tried the next slower one, and the next, until they were able to establish a connection.</p>
<p>We need the same kind of process now with general product-to-product interoperability, only while the modem interaction story was single-dimensional, now we’re working in multiple dimensions. As a result, the “modem negotiation” model of interoperability is now orders of magnitude more complex.</p>
<p>Eventually, however, the vendors will figure it out. At that point we will have what ZapThink calls <em>Deep Interoperability</em>. Deep Interoperability – one of the <a href="http://www.zapthink.com/2020/">ZapThink 2020</a> <a href="http://www.zapthink.com/2010/08/09/the-five-supertrends-of-enterprise-it/">Supertrends</a> – suggests that products actively change how they seek to interoperate until they’re successful. Modem negotiation on steroids.</p>
<p>Imagine: you buy a new enterprise IT product. You hook it to the network and turn it on. It automatically negotiates with everything else in your environment until it’s fully integrated. And when something changes, it negotiates again as needed.</p>
<p>Are vendors working on Deep Interoperability now? It’s not clear. Unfortunately, they’re not very motivated to get interoperability right. After all, proprietary interfaces lead to customer lock-in, and all vendors want that.</p>
<p>So maybe that’s why WS-I has thrown in the towel. Vendors were driving the effort all along, of course. They love paying lip service to standard interfaces, because customers demand them. But if such standards really worked – if products truly interoperated, in a way that stood the test of time – then you could easily replace a poorer product with a better one.</p>
<p>And what vendor today wants that?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2010/11/18/where%e2%80%99s-our-deep-interoperability/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WS-I declares &#8216;mission accomplished&#8217;</title>
		<link>http://www.zapthink.com/2010/11/12/ws-i-declares-mission-accomplished/</link>
		<comments>http://www.zapthink.com/2010/11/12/ws-i-declares-mission-accomplished/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 18:14:52 +0000</pubDate>
		<dc:creator>Jason Bloomberg</dc:creator>
				<category><![CDATA[In the News]]></category>
		<category><![CDATA[Interoperability]]></category>
		<category><![CDATA[OASIS]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[WS-I]]></category>

		<guid isPermaLink="false">http://www.zapthink.com/?p=12864</guid>
		<description><![CDATA[The need for the WS-I is not as great as it was.]]></description>
			<content:encoded><![CDATA[<p>WS-I had become less relevant in recent years with developments such as the industry&#8217;s embrace of alternative REST Web services, analyst Ron Schmelzer, managing partner of ZapThink, said. &#8220;The need for the WS-I is not as great as it was.&#8221;</p>
<p>Read the entire article at <a href="http://news.idg.no/cw/art.cfm?id=36A5E21F-1A64-67EA-E415D22D9DB80589">http://news.idg.no/cw/art.cfm?id=36A5E21F-1A64-67EA-E415D22D9DB80589</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2010/11/12/ws-i-declares-mission-accomplished/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZapThink Announces Service-Oriented Architecture (SOA) Events in Sydney, Australia</title>
		<link>http://www.zapthink.com/2009/10/20/zapthink-announces-service-oriented-architecture-soa-events-in-sydney-australia/</link>
		<comments>http://www.zapthink.com/2009/10/20/zapthink-announces-service-oriented-architecture-soa-events-in-sydney-australia/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 00:10:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Press Release]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ABN Amro]]></category>
		<category><![CDATA[Abstraction]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Application-Oirented Networking]]></category>
		<category><![CDATA[Application-Oriented Networking]]></category>
		<category><![CDATA[Asset Management]]></category>
		<category><![CDATA[Asynchrony]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Binary XML]]></category>
		<category><![CDATA[Budget]]></category>
		<category><![CDATA[Business Activity Monitoring (BAM)]]></category>
		<category><![CDATA[Business case]]></category>
		<category><![CDATA[Business intelligence]]></category>
		<category><![CDATA[Business Logic]]></category>
		<category><![CDATA[Business Process Execution Language (BPEL)]]></category>
		<category><![CDATA[Business Process Management (BPM)]]></category>
		<category><![CDATA[Business Service Management (BSM)]]></category>
		<category><![CDATA[Business-to-Business (B2B)]]></category>
		<category><![CDATA[Certification]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Cloud Governance]]></category>
		<category><![CDATA[Collaboration]]></category>
		<category><![CDATA[Complex Event Processing (CEP)]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[componentization]]></category>
		<category><![CDATA[Composite Application]]></category>
		<category><![CDATA[conformance]]></category>
		<category><![CDATA[Content & Presentation]]></category>
		<category><![CDATA[Content-Aware Networking]]></category>
		<category><![CDATA[Contract]]></category>
		<category><![CDATA[Contract-first]]></category>
		<category><![CDATA[data access]]></category>
		<category><![CDATA[Data Integration]]></category>
		<category><![CDATA[Development Tools]]></category>
		<category><![CDATA[documents]]></category>
		<category><![CDATA[DoDAF]]></category>
		<category><![CDATA[ebXML]]></category>
		<category><![CDATA[economy]]></category>
		<category><![CDATA[Enterprise 2.0]]></category>
		<category><![CDATA[Enterprise Application]]></category>
		<category><![CDATA[Enterprise Architecture]]></category>
		<category><![CDATA[Enterprise Service Bus (ESB)]]></category>
		<category><![CDATA[Enterprise Web 2.0]]></category>
		<category><![CDATA[Entitlement Management]]></category>
		<category><![CDATA[Entity Services]]></category>
		<category><![CDATA[Event-Driven SOA]]></category>
		<category><![CDATA[Extensible Business Reporting Language (XBRL)]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[FEAF]]></category>
		<category><![CDATA[Federal Enterprise Architecture (FEA)]]></category>
		<category><![CDATA[Federation]]></category>
		<category><![CDATA[Funding]]></category>
		<category><![CDATA[Gateway]]></category>
		<category><![CDATA[GIF]]></category>
		<category><![CDATA[Governance]]></category>
		<category><![CDATA[Government]]></category>
		<category><![CDATA[GQM]]></category>
		<category><![CDATA[granularity]]></category>
		<category><![CDATA[Grid Computing]]></category>
		<category><![CDATA[Guerrilla SOA]]></category>
		<category><![CDATA[Host]]></category>
		<category><![CDATA[IDEs]]></category>
		<category><![CDATA[Implementing SOA]]></category>
		<category><![CDATA[Information Model]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Intermediaries]]></category>
		<category><![CDATA[IT Service Management (ITSM)]]></category>
		<category><![CDATA[iterative]]></category>
		<category><![CDATA[ITIL]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Just-in-time integration]]></category>
		<category><![CDATA[Legacy Integration]]></category>
		<category><![CDATA[liability]]></category>
		<category><![CDATA[Liberty Alliance]]></category>
		<category><![CDATA[Licensed ZapThink]]></category>
		<category><![CDATA[Lifecycle Management]]></category>
		<category><![CDATA[Long Tail]]></category>
		<category><![CDATA[Loose Coupling]]></category>
		<category><![CDATA[Mainframe]]></category>
		<category><![CDATA[Mashup]]></category>
		<category><![CDATA[Master Data Management]]></category>
		<category><![CDATA[maturity]]></category>
		<category><![CDATA[Metadata Management]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Model Driven Architecture]]></category>
		<category><![CDATA[Native XML Data Store (NXD)]]></category>
		<category><![CDATA[Net-Centricity]]></category>
		<category><![CDATA[Network computing]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Organizational Issues]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[Peer-to-Peer (P2P)]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Pilot]]></category>
		<category><![CDATA[Policy Management]]></category>
		<category><![CDATA[Portals]]></category>
		<category><![CDATA[Portfolio Management]]></category>
		<category><![CDATA[Pricing]]></category>
		<category><![CDATA[Process Services]]></category>
		<category><![CDATA[Product Architecture]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Real time]]></category>
		<category><![CDATA[Reference Architecture]]></category>
		<category><![CDATA[Registry]]></category>
		<category><![CDATA[Reliable Messaging]]></category>
		<category><![CDATA[reorganization]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Resilience]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[reuse]]></category>
		<category><![CDATA[RFID]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Rich Client]]></category>
		<category><![CDATA[Risk management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Rules enginge]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[SCA]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[SDO]]></category>
		<category><![CDATA[Security & Identity Management]]></category>
		<category><![CDATA[Semantic Integration]]></category>
		<category><![CDATA[Service Consumers]]></category>
		<category><![CDATA[Service Design]]></category>
		<category><![CDATA[Service implementation]]></category>
		<category><![CDATA[Service Intermediaries]]></category>
		<category><![CDATA[Service Lifecycle]]></category>
		<category><![CDATA[Service Model]]></category>
		<category><![CDATA[Service Network]]></category>
		<category><![CDATA[Service-Oriented Architecture (SOA)]]></category>
		<category><![CDATA[Service-Oriented Business Application]]></category>
		<category><![CDATA[Service-Oriented Integration (SOI)]]></category>
		<category><![CDATA[Service-Oriented Process]]></category>
		<category><![CDATA[SO Development]]></category>
		<category><![CDATA[SOA Consulting]]></category>
		<category><![CDATA[SOA Fabric]]></category>
		<category><![CDATA[SOA Gateway]]></category>
		<category><![CDATA[SOA Governance]]></category>
		<category><![CDATA[SOA Implementation Framework]]></category>
		<category><![CDATA[SOA Infrastructure]]></category>
		<category><![CDATA[SOA Management]]></category>
		<category><![CDATA[SOA Metamodel]]></category>
		<category><![CDATA[SOA Tools & Development]]></category>
		<category><![CDATA[SOBA]]></category>
		<category><![CDATA[SODA]]></category>
		<category><![CDATA[Software as a Service]]></category>
		<category><![CDATA[SOMA]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[Task Services]]></category>
		<category><![CDATA[Telecommunications]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[TOGAF]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Transactions]]></category>
		<category><![CDATA[Transformation]]></category>
		<category><![CDATA[UDDI]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[Vendor-Driven Architecture (VDA)]]></category>
		<category><![CDATA[Very Large Messages (VLM)]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Visibility]]></category>
		<category><![CDATA[Voice]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[Web Services Consumers]]></category>
		<category><![CDATA[Web Services Management]]></category>
		<category><![CDATA[WOA]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[WS-*]]></category>
		<category><![CDATA[WS-I.org]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[XBRL]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XML Data Store]]></category>
		<category><![CDATA[XML Firewall]]></category>
		<category><![CDATA[XML Infrastructure]]></category>
		<category><![CDATA[XML Network Appliance]]></category>
		<category><![CDATA[XQuery]]></category>
		<category><![CDATA[XSLT]]></category>
		<category><![CDATA[Zachman Framework]]></category>

		<guid isPermaLink="false">http://test.zapthink.com/?p=2853</guid>
		<description><![CDATA[ZapThink Announces Service-Oriented Architecture (SOA) Events in Sydney, Australia<ul></ul>
<strong>SOA Certification and Training, Networking, and Governance Events January 2010</strong>
<ul></ul>
BALTIMORE, MD October 21, 2009 -- ZapThink today announces the opening of registration for three separate Service-Oriented Architecture (SOA) and Enteprise Architecture (EA) training, certification, and networking events in Sydney, Australia, running from January 11, 2010 to January 19, 2010.
<ul></ul>
"Companies are tired of all the hype surrounding Web Services and SOAs, and are finding it difficult to learn what they really need to know from vendor-centric conferences and training," said Ronald Schmelzer, senior analyst with ZapThink, LLC. "IT professionals want to learn from their peers about what it really takes to put together a well-designed SOA, and desire third-party credentials to assert their SOA knowledge. The Licensed ZapThink Analyst boot camps give Enterprise Architecture practitioners the SOA education and credentials they've been waiting for."
<ul></ul>
Courses, certification, and networking offered include:
<ul>
<li> <a href="http://bit.ly/34Ct0">Licensed ZapThink Architect (LZA) Boot Camp, Sydney, Australia, January 11-14, 2010 (http://bit.ly/34Ct0</a>)
<li> <a href="http://bit.ly/M8Af8">ZapForum Sydney EA &#038; SOA Networking Event, Sydney, Australia, January 13, 2010 (http://bit.ly/M8Af8</a>)
<li> <a href="http://bit.ly/m2KMy">SOA &#038; Cloud Governance Certification &#038; Training, Sydney, Australia, January 18-19, 2010 (http://bit.ly/m2KMy</a>)
</ul>
In the four-day SOA training course, attendees will get hands-on experience and expertise in how to implement the latest SOA best practices and methods. Learn about Service modeling, Service domains, SOA infrastructure planning, SOA testing, SOA Quality, Governance, and Management, developing a SOA Roadmap, SOA ROI and Business Planning, SOA Key Performance Indicators (KPI) and metrics, SOA security and performance optimization, SOA policy management, Composite Services and Business Process, Service-Oriented Business Applications (SOBA), and Mashups. Hear about notable SOA security case studies and get hands-on guidance in making SOA work. And, once you complete this course you will become a credentialed Licensed ZapThink Architect.
<ul></ul>
The ZapThink LZA SOA training and certification program offers the following benefits:
<ul>
<li> An annual credential that allows ZapThink to endorse individual enterprise architects as having specific SOA skills
<li> Posting onto an LZA Directory that enables companies to research and locate architects to assist with their SOA-specific needs
<li> Opportunity to contribute to ZapThink's online research and content
<li> Participation in exclusive annual LZA-only conferences, events and activities.
</ul>
Increasingly, individuals like are looking to get the backing of a qualified third-party organization that can endorse their existing SOA skills as well as enable continuous improvement, enhanced networking with those looking for architecture resources, or enhance their current SOA-enabled careers. Through its LZA program, ZapThink is filling the unmet need for knowledge and credentials in this area.
<ul></ul>
For more information and to register for the events, visit <a href="http://bit.ly/ctIJ">http://bit.ly/ctIJ</a>. Early bird discounts are available for a limited time. Seats are limited to only 45 people per LZA boot camp, and ZapThink expects certain boot camp dates and locations to sell out.
<p/>Read more at: <a href='http://www.zapthink.com/eventreg.html' target='_new'>ZapThink Press Release</a>]]></description>
			<content:encoded><![CDATA[<p>ZapThink Announces Service-Oriented Architecture (SOA) Events in Sydney, Australia
<ul></ul>
<p><strong>SOA Certification and Training, Networking, and Governance Events January 2010</strong></p>
<ul></ul>
<p>BALTIMORE, MD October 21, 2009 &#8212; ZapThink today announces the opening of registration for three separate Service-Oriented Architecture (SOA) and Enteprise Architecture (EA) training, certification, and networking events in Sydney, Australia, running from January 11, 2010 to January 19, 2010.</p>
<ul></ul>
<p>&#8220;Companies are tired of all the hype surrounding Web Services and SOAs, and are finding it difficult to learn what they really need to know from vendor-centric conferences and training,&#8221; said Ronald Schmelzer, senior analyst with ZapThink, LLC. &#8220;IT professionals want to learn from their peers about what it really takes to put together a well-designed SOA, and desire third-party credentials to assert their SOA knowledge. The Licensed ZapThink Analyst boot camps give Enterprise Architecture practitioners the SOA education and credentials they&#8217;ve been waiting for.&#8221;</p>
<ul></ul>
<p>Courses, certification, and networking offered include:</p>
<ul>
<li> <a href="http://bit.ly/34Ct0">Licensed ZapThink Architect (LZA) Boot Camp, Sydney, Australia, January 11-14, 2010 (http://bit.ly/34Ct0</a>)
<li> <a href="http://bit.ly/M8Af8">ZapForum Sydney EA &#038; SOA Networking Event, Sydney, Australia, January 13, 2010 (http://bit.ly/M8Af8</a>)
<li> <a href="http://bit.ly/m2KMy">SOA &#038; Cloud Governance Certification &#038; Training, Sydney, Australia, January 18-19, 2010 (http://bit.ly/m2KMy</a>)
</ul>
<p>In the four-day SOA training course, attendees will get hands-on experience and expertise in how to implement the latest SOA best practices and methods. Learn about Service modeling, Service domains, SOA infrastructure planning, SOA testing, SOA Quality, Governance, and Management, developing a SOA Roadmap, SOA ROI and Business Planning, SOA Key Performance Indicators (KPI) and metrics, SOA security and performance optimization, SOA policy management, Composite Services and Business Process, Service-Oriented Business Applications (SOBA), and Mashups. Hear about notable SOA security case studies and get hands-on guidance in making SOA work. And, once you complete this course you will become a credentialed Licensed ZapThink Architect.</p>
<ul></ul>
<p>The ZapThink LZA SOA training and certification program offers the following benefits:</p>
<ul>
<li> An annual credential that allows ZapThink to endorse individual enterprise architects as having specific SOA skills
<li> Posting onto an LZA Directory that enables companies to research and locate architects to assist with their SOA-specific needs
<li> Opportunity to contribute to ZapThink&#8217;s online research and content
<li> Participation in exclusive annual LZA-only conferences, events and activities.
</ul>
<p>Increasingly, individuals like are looking to get the backing of a qualified third-party organization that can endorse their existing SOA skills as well as enable continuous improvement, enhanced networking with those looking for architecture resources, or enhance their current SOA-enabled careers. Through its LZA program, ZapThink is filling the unmet need for knowledge and credentials in this area.</p>
<ul></ul>
<p>For more information and to register for the events, visit <a href="http://bit.ly/ctIJ">http://bit.ly/ctIJ</a>. Early bird discounts are available for a limited time. Seats are limited to only 45 people per LZA boot camp, and ZapThink expects certain boot camp dates and locations to sell out.</p>
<p/>Read more at: <a href='http://www.zapthink.com/eventreg.html' target='_new'>ZapThink Press Release</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapthink.com/2009/10/20/zapthink-announces-service-oriented-architecture-soa-events-in-sydney-australia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

