<?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>Steve Vinoski's Blog &#187; SOA</title>
	<atom:link href="http://steve.vinoski.net/blog/category/soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://steve.vinoski.net/blog</link>
	<description>Ask forgiveness, not permission.</description>
	<lastBuildDate>Tue, 10 Jan 2012 18:36:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Spot On</title>
		<link>http://steve.vinoski.net/blog/2008/07/28/spot-on/</link>
		<comments>http://steve.vinoski.net/blog/2008/07/28/spot-on/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 06:38:20 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[distributed systems]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RPC]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WS-*]]></category>

		<guid isPermaLink="false">http://steve.vinoski.net/blog/?p=85</guid>
		<description><![CDATA[Eric Newcomer gives us his take on my recent articles (1, 2, 3, 4) and blog postings (1, 2, 3, 4) about RPC, REST, and programming languages: Anyway, after carefully reading the article and blog entries, I believe Steve is not against RPC per se. He wants people to think before just automatically using it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.iona.com/newcomer/archives/000572.html">Eric Newcomer gives us his take</a> on my recent articles (<a href="/blog/internet-computing-columns/#2008-1">1</a>, <a href="/blog/internet-computing-columns/#2008-2">2</a>, <a href="/blog/internet-computing-columns/#2008-3">3</a>, <a href="/blog/internet-computing-columns/#2008-4">4</a>) and blog postings (<a href="/blog/2008/07/01/convenience-over-correctness/">1</a>, <a href="/blog/2008/07/07/soa-elitism/">2</a>, <a href="/blog/2008/07/11/protocol-buffers-no-big-deal/">3</a>, <a href="/blog/2008/07/13/protocol-buffers-leaky-rpc/">4</a>) about RPC, REST, and programming languages:</p>
<blockquote><p>Anyway, after carefully reading the article and blog entries, I believe Steve is not against RPC per se. He wants people to <em>think</em> before just automatically using it because it&#8217;s convenient.</p></blockquote>
<p><em>Exactly!</em></p>
<p>Also spot on are the following postings:</p>
<ul>
<li><a href="http://www.dehora.net/journal/2008/07/25/patterns-of-web-architecture/">Bill de hÓra: <em>Patterns of Web Architecture</em></a></li>
<li>Three postings from <a href="http://www.stucharlton.com/blog/">Stu Charlton</a>:
<ul>
<li><a href="http://www.stucharlton.com/blog/archives/000553.html"><em>Convenience, Correctness, and Network Interactions</em></a></li>
<li><a href="http://www.stucharlton.com/blog/archives/000554.html"><em>Can technology progress?</em></a></li>
<li><a href="http://www.stucharlton.com/blog/archives/000555.html"><em>On changing industry mindsets</em></a></li>
</ul>
</ul>
<p>The beauty common to all these postings is the breadth, depth, and variety of thinking and reasoning they present. There&#8217;s a lot to read, but if you&#8217;re interested in critical thinking about the design and construction of distributed systems I encourage you to read them all the way through, including the comments, and to follow the links they offer as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://steve.vinoski.net/blog/2008/07/28/spot-on/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Serendipitous Reuse</title>
		<link>http://steve.vinoski.net/blog/2008/01/05/serendipitous-reuse/</link>
		<comments>http://steve.vinoski.net/blog/2008/01/05/serendipitous-reuse/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 07:44:43 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[column]]></category>
		<category><![CDATA[objects]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[reuse]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[serendipity]]></category>
		<category><![CDATA[WS-*]]></category>

		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/01/05/serendipitous-reuse/</guid>
		<description><![CDATA[Reusability is often promoted not only as a goal but also as a feature of all kinds of software architectures, designs, and systems. For example, in the CORBA, WS-*, and SOA worlds I formerly haunted, everyone spoke nonchalantly of reuse as if it were a given. You were supposed to simply identify the objects or [...]]]></description>
			<content:encoded><![CDATA[<p>Reusability is often promoted not only as a goal but also as a feature of all kinds of software architectures, designs, and systems. For example, in the CORBA, WS-*, and SOA worlds I formerly haunted, everyone spoke nonchalantly of reuse as if it were a given. You were supposed to simply identify the objects or services required to support your business processes, and then specify their interfaces. Then, anyone wanting to provide one or more of those objects or services was merely supposed to follow the appropriate interfaces and write implementations for them. Applications were written to the interfaces and thus were automatically decoupled from the implementations. As a result of these reusable interfaces, you could also potentially reuse the objects and services that implemented them, as well as the applications that consumed them.</p>
<p>Problem is, it never seemed to work out as easily as that. Most of the time, the interfaces people came up with were just too specific, and nobody could agree to apply them widely. Think of all the time people spent over the years in OMG, JSR, and W3C WS meetings trying to agree on just the infrastructure interfaces and not always succeeding. It&#8217;s therefore not surprising that there was never much success at defining broadly-accepted standard interfaces up at the application level; the scope is simply far too wide up there.</p>
<p>So, with technologies that promote interface variability, <em>planned reuse</em> is pretty hard. Consequently, <em>serendipitous reuse</em>, where services and facilities can be combined and reused beneficially in unforeseen ways, is virtually out of the question.</p>
<p><a href="http://www.stucharlton.com/blog/archives/000165.html">Stu Charlton&#8217;s blog</a> was where I first saw those terms used, and I found them very enlightening. <a href="http://smoothspan.wordpress.com/2007/10/31/serendipity-is-the-key-to-code-reuse/">So did Bob Warfield</a>.</p>
<p>One of the first things that attracted me to REST was the <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_5">uniform interface constraint</a>. <a href="http://www.markbaker.ca/blog/">Mark Baker</a> first brought it to my attention nearly 8 years ago, and before I looked at it, I thought it was just a bad idea, like a totally generic <code>doIt()</code> interface, devoid of any meaningful semantics. But of course, there&#8217;s much more to it than that. The HTTP interface, for example, strikes a great balance that allows it to be efficiently reused across a very wide variety of applications. And when such a uniform interface is reused, the applications that use it stand a much better chance of being reusable themselves than if they were written against a non-uniform application-specific interface.</p>
<p>My latest <a href="http://computer.org/internet">Internet Computing</a> column, entitled <em><a href="http://computer.org/portal/pages/dsonline/2008/02/w1tow.xml">Serendipitous Reuse</a></em> (and <a href="/pdf/IEEE-Serendipitous_Reuse.pdf">here&#8217;s the pdf</a> if you prefer), explores how the uniform interface contributes to reuse of both the planned and serendipitous kinds.</p>
]]></content:encoded>
			<wfw:commentRss>http://steve.vinoski.net/blog/2008/01/05/serendipitous-reuse/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>&#8220;Internet SOAP&#8221; vs. REST: Huh?</title>
		<link>http://steve.vinoski.net/blog/2007/12/28/internet-soap-vs-rest-huh/</link>
		<comments>http://steve.vinoski.net/blog/2007/12/28/internet-soap-vs-rest-huh/#comments</comments>
		<pubDate>Fri, 28 Dec 2007 07:08:24 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[distributed systems]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[constraints]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://steve.vinoski.net/blog/2007/12/28/internet-soap-vs-rest-huh/</guid>
		<description><![CDATA[Dilip Ranganathan pointed me to a long rant from Ganesh Prasad about using SOAP at Internet scale. I see that Stu Charlton already chimed in there with some good comments and analysis, but I think there&#8217;s still more to say. Unless I&#8217;m missing something, Ganesh seems to be saying, &#8220;Hey, if we just stick SOAP [...]]]></description>
			<content:encoded><![CDATA[<p>Dilip Ranganathan pointed me to a long rant from <a href="http://wisdomofganesh.blogspot.com/">Ganesh Prasad</a> about <a href="http://wisdomofganesh.blogspot.com/2007/12/paying-restafarians-back-in-their-own.html">using SOAP at Internet scale</a>. I see that <a href="http://www.stucharlton.com/blog/">Stu Charlton</a> already chimed in there with some <a href="http://wisdomofganesh.blogspot.com/2007/12/paying-restafarians-back-in-their-own.html#c3358075171632961637">good comments and analysis</a>, but I think there&#8217;s still more to say.</p>
<p>Unless I&#8217;m missing something, Ganesh seems to be saying, &#8220;Hey, if we just stick SOAP directly onto TCP, we can scale beyond Web scale to Internet scale!&#8221; Oh, if it were only so easy. I would think that it&#8217;s fairly obvious that just because TCP scales well doesn&#8217;t mean that higher-level protocols sitting on top of it automatically scale to the same degree.</p>
<p>Why does the Web scale so well? Because of <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1">particular constraints</a> deliberately imposed to induce specific <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/net_app_arch.htm#sec_2_3">architectural properties</a>. The caching constraint contributes heavily to Web scalability, for example. Statelessness and the uniform interface also play a big role there. These constraints along with <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3">conditional GET</a> allow messages to be significantly reduced in size or better yet, eliminated altogether. The resulting scalability impact is huge.</p>
<p>Ganesh talks about a lot of the things you&#8217;d have to add to the mix get a useful SOA ecosystem on top of SOAP/TCP, but nowhere does he talk about the specific architectural properties and constraints required to make it all scale. Without that, it just ain&#8217;t gonna happen. Furthermore, I don&#8217;t believe any system based either on interface specialization (i.e., the opposite of the uniform interface constraint) or on &#8220;processThis&#8221; can scale to Web scale. Interface specialization significantly increases coupling while reducing visibility and applicability, while &#8220;processThis&#8221; is so devoid of semantics that it offers nowhere to practically apply constraints like caching and statelessness that are so critical to scalability.</p>
]]></content:encoded>
			<wfw:commentRss>http://steve.vinoski.net/blog/2007/12/28/internet-soap-vs-rest-huh/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>SOA and Architectural Constraints</title>
		<link>http://steve.vinoski.net/blog/2007/11/11/soa-and-architectural-constraints/</link>
		<comments>http://steve.vinoski.net/blog/2007/11/11/soa-and-architectural-constraints/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 05:19:42 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[enterprise]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[constraints]]></category>
		<category><![CDATA[specifications]]></category>

		<guid isPermaLink="false">http://steve.vinoski.net/blog/2007/11/11/soa-and-architectural-constraints/</guid>
		<description><![CDATA[Don says he agrees with a lot of what James has to say about Stefan&#8217;s recaps of the QCon SOA Track, listed below: Dan&#8217;s talk Pete&#8217;s talk Sanjiva&#8217;s talk my talk I too agree with many of James&#8217;s insights. If you don&#8217;t regularly read his blog, you should subscribe immediately. I especially like this quote: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pluralsight.com/blogs/dbox/archive/2007/11/10/49002.aspx">Don</a> says he agrees with a lot of what <a href="http://www.snellspace.com/wp/?p=798">James</a> has to say about <a href="http://www.innoq.com/blog/st/">Stefan&#8217;s</a> recaps</a> of the <a href="http://qcon.infoq.com/sanfrancisco/tracks/show_track.jsp?trackOID=69">QCon SOA Track</a>, listed below:</p>
<ul>
<li><a href="http://www.innoq.com/blog/st/2007/11/09/qcon_sf_dan_diephouse_building_your_next_service_with_the_atom_publishing_protocol.html">Dan&#8217;s talk</a></li>
<li><a href="http://www.innoq.com/blog/st/2007/11/08/qcon_sf_pete_lacey_demonstrating_the_ilities_of_rest.html">Pete&#8217;s talk</a></li>
<li><a href="http://www.innoq.com/blog/st/2007/11/08/qcon_sf_sanjiva_weerawarana_ws_vs_rest_mashing_up_the_truth_from_facts_myths_and_lies.html">Sanjiva&#8217;s talk</a></li>
<li><a href="http://www.innoq.com/blog/st/2007/11/08/qcon_sf_steve_vinoski_rest_eye_for_the_soa_guy.html">my talk</a></li>
</ul>
<p>I too agree with many of James&#8217;s insights. If you don&#8217;t regularly read his blog, you should subscribe immediately. I especially like this quote:</p>
<blockquote><p><em>When I consider SOA and REST today, I do not see two competing visions, I see an evolution that has brought the industry back to a core set of fundamental design principles that we seemed to have lost sight of for a while.</em></p></blockquote>
<p>How very true. However, I disagree with just one small point: his critique of the part of my talk where I said SOA has no constraints (as <a href="http://www.markbaker.ca/blog/">Mark Baker</a> has been pointing out for years now).</p>
<p>James says that SOA has constraints, it&#8217;s just they&#8217;re just not well-documented. I know exactly what he&#8217;s saying, but I have to stick with what I said. The only official definition of SOA that I know of is the <a href="http://www.oasis-open.org/committees/download.php/19679/soa-rm-cs.pdf">OASIS SOA Reference Model</a>, which mentions several desirable properties for SOA systems, but it documents no constraints for inducing them AFAICS. Later in my talk, as Stefan&#8217;s notes indicate, I did say that I was willing to concede that the OASIS SOA RM promotes the client-server constraint. However, I was being really, really generous, since all the specification really does is hint that SOA systems should be distributed, and &#8220;distributed&#8221; has a lot more meanings than just &#8220;client-server.&#8221;</p>
<p>Since there are no official standard SOA constraints, the only constraints you get are the ones that each vendor or supplier of SOA platforms and systems decides to give you. Naturally, each different solution in this space will differ in those constraints.</p>
<p>As the quote from James above implies, pitting SOA and REST against each other doesn&#8217;t make a lot of sense. The reason I went to the trouble of pointing out in my talk that SOA is missing critical architectural requirements like constraints was to help illustrate the significant differences between SOA and REST. Fundamentally, as I also said in my talk, SOA isn&#8217;t really about architecture in the way that REST is. Rather, it&#8217;s about IT culture, best practices, breaking down the enterprise organizational and political barriers that needlessly increase IT costs, and following good fundamental software engineering principles like reuse, <a href="http://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf">minimizing coupling, and maximizing cohesion</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://steve.vinoski.net/blog/2007/11/11/soa-and-architectural-constraints/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>QCon SF</title>
		<link>http://steve.vinoski.net/blog/2007/11/10/qcon-sf/</link>
		<comments>http://steve.vinoski.net/blog/2007/11/10/qcon-sf/#comments</comments>
		<pubDate>Sat, 10 Nov 2007 21:19:08 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WS-*]]></category>

		<guid isPermaLink="false">http://steve.vinoski.net/blog/2007/11/10/qcon-sf/</guid>
		<description><![CDATA[I returned home from QCon San Francisco last night. In the SOA track, it was most excellent to finally get to meet Patrick Logan, Stefan Tilkov, Pete Lacey, Jim Webber, Stu Charlton (thanks again for the Dew, Stu!), and Mike Herrick in person, as well as to get to meet up again with Sanjiva Weerawarana, [...]]]></description>
			<content:encoded><![CDATA[<p>I returned home from <a href="http://qcon.infoq.com/sanfrancisco/conference/">QCon San Francisco</a> last night. In the SOA track, it was most excellent to finally get to meet <a href="http://patricklogan.blogspot.com/">Patrick Logan</a>, <a href="http://www.innoq.com/blog/st/">Stefan Tilkov</a>, <a href="http://wanderingbarque.com/nonintersecting/">Pete Lacey</a>, <a href="http://jim.webber.name/">Jim Webber</a>, <a href="http://www.stucharlton.com/blog/">Stu Charlton</a> (thanks again for the <a href="http://www.mountaindew.com/">Dew</a>, Stu!), and <a href="http://fuzzypanic.blogspot.com/">Mike Herrick</a> in person, as well as to get to meet up again with <a href="http://sanjiva.weerawarana.org/">Sanjiva Weerawarana</a>, <a href="http://www.bloglines.com/blog/gdaniels">Glen Daniels</a>, and <a href="http://netzooid.com/blog/">Dan Diephouse</a>. All in all the SOA/REST track was highly informative, with solid presentations through the whole day. Pete&#8217;s was especially cool due to the demo he gave of the extreme flexibility and integrability of REST-oriented solutions. It was also reasonably fun, given how much the attendees got into it with their questions, and especially due to Jim&#8217;s presentation at the end in which he mixed some serious technical chops with very funny one-liners popping out every second or third sentence.</p>
<p>My talk, &#8220;REST Eye for the SOA Guy&#8221; (title taken from <a href="http://dsonline.computer.org/portal/pages/dsonline/2007/01/w1tow.html">here</a>), went reasonably well. The only time it didn&#8217;t flow as smoothly as I would have liked was when some semi-anti-REST folk started questioning my assertions about specialized interfaces inhibiting scalability, and wondering whether REST just pushes all the coupling problems to the data. I felt like I was being pulled backwards in time by 5 years to the old <a href="http://www.w3.org/2002/ws/arch/">W3C Web Services Architecture Working Group</a> meetings, where very little was ever accomplished due to arguments like those. I&#8217;ll have more to say on those topics in some near-future blog postings.</p>
<p>An interesting thought struck me as the track progressed: in my experience it seems that most SOA/WS proponents who argue against REST on technical merits have never actually tried to build any RESTful applications. Many of their objections seem to be heavily based on <a href="http://www.stucharlton.com/blog/archives/000172.html">emotional reactions</a>, or based on conclusions reached only by blowing issues out of proportion (for example, I felt that many of the points in Sanjiva&#8217;s talk fell into this category). So it led me to wonder about how many, if any, dyed-in-the-wool WS advocates ever seriously, honestly, and fairly looked at REST, actually tried it, but then decided it didn&#8217;t work and so willingly chose to go back to WS. I don&#8217;t want to count those who had to go back to WS only to integrate with something else already implemented using WS, because that doesn&#8217;t fit the &#8220;willingly&#8221; part. (For example, I recently had to write a client to access a SOAP service, and I was definitely not in the &#8220;willingly&#8221; camp because the service was way more complicated than it needed to be, only because of SOAP.) I personally know of nobody who has ditched REST for WS like this, but if you have, or if you know of someone who has, I&#8217;d love to hear the whole tale, so feel free to leave it in a comment.</p>
<p>The conference itself was much like <a href="http://jaoo.dk/conference/">JAOO</a>, which is not surprising given its JAOO roots. It was smaller, of course, given that this was the first QCon held in the U.S. And just like JAOO, there were times where I wanted to be in multiple places at the same time to see two or three different talks all scheduled concurrently. For example, I very much would have liked to sit all day in the Thursday &#8220;Architecture Quality&#8221; track, but couldn&#8217;t since it ran parallel to the track I was in.</p>
<p>In short, if you didn&#8217;t go to QCon, you missed a great conference. Stefan, thanks again for inviting me.</p>
]]></content:encoded>
			<wfw:commentRss>http://steve.vinoski.net/blog/2007/11/10/qcon-sf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

