<?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>Pragmatic Dictator &#187; Enterprise Systems</title>
	<atom:link href="http://www.dancres.org/blitzblog/category/enterprise-systems/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dancres.org/blitzblog</link>
	<description></description>
	<lastBuildDate>Fri, 04 Jun 2010 11:58:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Siren Call of the Database</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F07%2F11%2Fthe-siren-call-of-the-database%2F&amp;seed_title=The+Siren+Call+of+the+Database</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F07%2F11%2Fthe-siren-call-of-the-database%2F&amp;seed_title=The+Siren+Call+of+the+Database#comments</comments>
		<pubDate>Wed, 11 Jul 2007 20:22:43 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Distributed Systems]]></category>
		<category><![CDATA[Enterprise Systems]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/07/11/the-siren-call-of-the-database/</guid>
		<description><![CDATA[When we write programs one of the things we seek to do is encapsulate our data so as to allow us to manage our dependencies and keep our code clean. Most languages OO or otherwise provide mechanisms to support this way of working. The thing about the average database is that it doesn&#8217;t really encourage [...]]]></description>
			<content:encoded><![CDATA[<p>When we write programs one of the things we seek to do is encapsulate our data so as to allow us to manage our dependencies and keep our code clean.  Most languages OO or otherwise provide mechanisms to support this way of working.</p>
<p>The thing about the average database is that it doesn&#8217;t really encourage similar behaviour.  It is all too tempting (and easy) to just allow everyone to access everything.  Whilst we confine ourselves to a single application using the database, the problem is to some extent contained but often what we actually do is allow multiple applications access to the same database.  The exact way in which this is done varies:</p>
<ol>
<li>Sometimes we bundle all our middle tier code together even though it has separate roles and responsibilities and integrate all of it via a single database.</li>
<li>Sometimes we have multiple applications each running in a different process.</li>
</ol>
<p>With each application we put on top of the database the problem gets worse increasing the number of invisible dependencies tying unrelated elements of code together by virtue of accessing a shared schema.</p>
<p>What&#8217;s happening is we&#8217;re sharing too much intimate knowledge across our system, something we&#8217;re all taught to fear. The solution is as always to prevent direct access to this intimate knowledge by interposing layers of abstraction.  One way to do this is by requiring access to data to be wrapped up behind an interface.  Historically we&#8217;ve done this by having a system own the database and expose interfaces that other systems can use to get the data.</p>
<p>Unfortunately there is a well-known issue with this approach which is that the level of granularity is wrong and these additional integration interfaces rapidly balloon into complex beasts.  What we need is a a database wrapping entity that has a finer level of granularity than an entire system.  Then the integration interfaces will be simpler because there will naturally be a less complex schema underpinning this more limited functionality.</p>
<p>What are we talking about?  Services.  We end up with a system of lots of discrete services each wrapping up their own data storage.</p>
<p>There are other benefits to this approach:</p>
<ol>
<li>Each service can utilize the most appropriate storage option for it&#8217;s contained data whilst having zero impact on other services that might have different needs.</li>
<li>Each service is an independent entity that can be managed (monitored, deployed etc) separately.</li>
<li>Centralized access patterns are more easily broken down which is useful in cases where we deploy across multiple data-centres.</li>
</ol>
<p>Who would <a href="http://www.acmqueue.com/modules.php?name=Content&#038;pa=showpage&#038;pid=388">do such a thing</a>?</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/architecture" rel="tag">architecture</a>, <a href="http://www.technorati.com/tag/database" rel="tag">database</a>, <a href="http://www.technorati.com/tag/distributed systems" rel="tag">distributed systems</a>, <a href="http://www.technorati.com/tag/enterprise" rel="tag">enterprise</a></p>
<p><!-- technorati tags end --></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.dancres.org/wordpress/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F07%2F11%2Fthe-siren-call-of-the-database%2F&amp;seed_title=The+Siren+Call+of+the+Database/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sacrilege</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F04%2F25%2Fsacrilege%2F&amp;seed_title=Sacrilege</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F04%2F25%2Fsacrilege%2F&amp;seed_title=Sacrilege#comments</comments>
		<pubDate>Wed, 25 Apr 2007 11:11:14 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Enterprise Systems]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/04/25/sacrilege/</guid>
		<description><![CDATA[Well maybe &#8211; I certainly wouldn&#8217;t run Windows on a Thumper as they have over at Johns Hopkins but the tests are interesting for a couple of reasons: They represent what might well have been one of Jim Gray&#8216;s last pieces of work. There&#8217;s a headline figure of 9Ktps for an approximation of a large [...]]]></description>
			<content:encoded><![CDATA[<p>Well maybe &#8211; I certainly wouldn&#8217;t run Windows on a <a href="http://www.sun.com/servers/x64/x4500/">Thumper</a> as they have <a href="http://milek.blogspot.com/2007/04/windows-on-thumper.html">over at Johns Hopkins</a> but the tests are interesting for a couple of reasons:</p>
<ol>
<li>They represent what might well have been one of <a href="http://research.microsoft.com/~Gray/">Jim Gray</a>&#8216;s last pieces of work.</li>
<li>There&#8217;s a headline figure of 9Ktps for an approximation of a large scale bank account processing system.</li>
</ol>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/databases" rel="tag">databases</a>, <a href="http://www.technorati.com/tag/performance" rel="tag">performance</a>, <a href="http://www.technorati.com/tag/Benchmarking" rel="tag">Benchmarking</a>, <a href="http://www.technorati.com/tag/technology" rel="tag">technology</a></p>
<p><!-- technorati tags end --></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.dancres.org/wordpress/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F04%2F25%2Fsacrilege%2F&amp;seed_title=Sacrilege/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Trappings of State</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F02%2F28%2Fthe-trappings-of-state%2F&amp;seed_title=The+Trappings+of+State</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F02%2F28%2Fthe-trappings-of-state%2F&amp;seed_title=The+Trappings+of+State#comments</comments>
		<pubDate>Wed, 28 Feb 2007 12:42:56 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Enterprise Systems]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/02/28/the-trappings-of-state/</guid>
		<description><![CDATA[&#8220;Make as much stateless as possible&#8221; is the mantra but I wonder if we&#8217;re being a little over-zealous in our application? Consider this note in Fielding&#8216;s REST thesis: &#8220;Like most architectural choices, the stateless constraint reflects a design trade-off. The disadvantage is that it may decrease network performance by increasing the repetitive data (per-interaction overhead) [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Make as much <a href="http://www.webopedia.com/TERM/S/stateless.html">stateless</a> as possible&#8221; is the mantra but I wonder if we&#8217;re being a little over-zealous in our application?  Consider this note in <a href="http://www.ics.uci.edu/~fielding/">Fielding</a>&#8216;s REST thesis:</p>
<p><em>&#8220;Like most architectural choices, the stateless constraint reflects a design trade-off. The disadvantage is that it may decrease network performance by increasing the repetitive data (per-interaction overhead) sent in a series of requests, since that data cannot be left on the server in a shared context. In addition, placing the application state on the client-side reduces the server’s control over consistent application behavior, since the application becomes dependent on the correct implementation of semantics across multiple client versions.&#8221;</em></p>
<p>Thus while statelessness is often claimed to achieve scalability, in certain applications that may not be the case due to the resultant load on the network.</p>
<p>Our pursuit of statelessness leads us to behaviours such as making a single entity responsible for the maintenance of all state.  Often it&#8217;s a database that becomes a black hole sucking up hardware, network bandwidth, admin time and endless tuning effort.  It also becomes the focus of our reliability concerns, with a need for clustering, RAID arrays etc.  Stand around long enough and you&#8217;ll hear terrified utterings from staff such as &#8220;if we ever lose the database&#8230;.&#8221;</p>
<p>Making some single thing responsible for all these aspects of our system is asking for trouble.  Having all these heavyweight concerns squeezing down on a single element ultimately leads to breakage.</p>
<p>History shows that we aren&#8217;t entirely happy with this &#8220;single point of responsibility for all state&#8221;.  We have cookies in browsers, local storage in browsers, thin clients that rely on servers to store all state and so on.</p>
<p>Perhaps we&#8217;re ignoring an underlying message: <em>Maintenance of state is a shared responsibility for a system</em>.  We should seek to place that responsibility in appropriate places at appropriate times and be much more aware of responsibility boundaries and when it&#8217;s appropriate, share that responsibility amongst components.</p>
<p>Generally we consider <a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a> to be responsible for ensuring that state makes it to the other end of the connection.  One hands some data to the TCP layer and we expect that it will ensure the data reaches the recipient.  But is this true?  What happens if we suffer a power outage before TCP transmits the data?  When the machine restarts, is TCP going to restart and resend all that unsent data?  Clearly not, whoever delegated responsibility to TCP for this data will now need to take steps to recover the situation.</p>
<p>What about a message queue?  Typically we place some data in the queue and demand that it absolutely must deliver that message and not lose it in the meantime.  That&#8217;s an awful lot of responsibility for a single component to carry!  As an aside we&#8217;re also potentially making that queue a performance bottleneck of the future.</p>
<p>Then there&#8217;s the Web which in many cases puts responsibility on the client for maintenance of state.  This is achieved through retries, restoring backups, re-entering details etc.  Notably, this is the case even if the client &#8220;fails&#8221; e.g. your home router goes down or the PC overheats.  There&#8217;s a certain amount of illusion here too where we believe the responsibility for state maintenance has been placed elsewhere e.g. <a href="http://www.flickr.com/">Flickr</a>.  Ideally they don&#8217;t want to lose all your precious pictures but if they do, who will have to restore all that information?</p>
<p>I think it&#8217;s interesting that placing such responsibility with some single entity is perceived as the easy solution but it has a lot of hidden costs like redundant hardware, clustering, strict data-centre environment control, backups etc.</p>
<p>Spreading responsibility might ultimately be easier and fit with our desire for utility computing but it&#8217;s not commonplace and thus we&#8217;re lacking well documented patterns, software components etc.  We are seeing some examples however, I would speculate that <a href="http://aws.amazon.com/s3">S3</a>&#8216;s API is the way it is precisely because it relies on spreading responsibility for state across a co-operative <a href="http://en.wikipedia.org/wiki/Shared_nothing_architecture">shared-nothing</a> system rather than placing it all in a single shared-everything cluster.</p>
<p><!-- technorati tags start --></p>
<p style="text-align: right; font-size: 10px">Technorati Tags: <a rel="tag" href="http://www.technorati.com/tag/amazon">amazon</a>, <a rel="tag" href="http://www.technorati.com/tag/distributed%20systems">distributed systems</a>, <a rel="tag" href="http://www.technorati.com/tag/enterprise">enterprise</a>, <a rel="tag" href="http://www.technorati.com/tag/web">web</a>, <a rel="tag" href="http://www.technorati.com/tag/utility%20computing">utility computing</a></p>
<p><!-- technorati tags end --></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.dancres.org/wordpress/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F02%2F28%2Fthe-trappings-of-state%2F&amp;seed_title=The+Trappings+of+State/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>When Legacy Threatens Progress</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F02%2F26%2Fwhen-legacy-threatens-progress%2F&amp;seed_title=When+Legacy+Threatens+Progress</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F02%2F26%2Fwhen-legacy-threatens-progress%2F&amp;seed_title=When+Legacy+Threatens+Progress#comments</comments>
		<pubDate>Mon, 26 Feb 2007 11:26:08 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Enterprise Systems]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/02/26/when-legacy-threatens-progress/</guid>
		<description><![CDATA[This is interesting: &#8220;W3C members have issues surrounding enterprise computing. Not just distributed computing, but the typical concerns around transactions, scalability, high availability, and so on. Not only that they’re also dealing with 15, 20, and 25 year old technology that works just fine but is getting more and more difficult to maintain and doesn’t [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wanderingbarque.com/nonintersecting/2007/02/21/enterprise-computing-workshop-scope/">This</a> is interesting:</p>
<p>&#8220;<em>W3C members have issues surrounding enterprise computing.  Not just distributed computing, but the typical concerns around transactions, scalability, high availability, and so on.  Not only that they’re also dealing with 15, 20, and 25 year old technology that works just fine but is getting more and more difficult to maintain and doesn’t play well with others. Finally, there’s the issue of interconnecting these systems to each other, to partners, and to the Web.</em>&#8221;</p>
<p>Once 15+ year old technology is getting difficult to maintain and doesn&#8217;t play nice with others, surely it&#8217;s time to considering throwing it out?  Surely keeping it just forces all the new stuff we do to get bogged down and stifled supporting the old stuff?</p>
<p>I&#8217;m just wondering if the logical destination for this will be we can&#8217;t make progress any more because we get completely bogged down in our legacy?  I certainly appreciate the companies holding on to so much legacy consider it important that the issue is tackled but should the rest of the world which is perhaps more flexible have to care?  Should we constantly be bending all the good new stuff we do to cope with all this old crud?</p>
<p>If you buy a car there&#8217;s a limit to it&#8217;s useful life.  You can keep running it after that but maintenance bills get higher and higher to the point where one gives up and just buys a new car because it&#8217;s cheaper.</p>
<p>Note also that the owner of this &#8220;legacy&#8221; car is the one suffering the high maintenance cost, not the manufacturer or the mechanic.  Admittedly, the mechanic and the manufacturer must hold onto tools and parts but they can at a point of their choosing drop support.  Should it not also be the case that companies holding onto legacy systems suffer similar high maintenance costs?  Should these companies be able to displace those costs onto others in the form of horrendous complexity and endless legacy considerations in new products, specs etc?</p>
<p>Clearly there is no right answer for this dilemma but it might be time for us all to sit down and consider the whole cost of holding onto legacy which goes way beyond the simple increasing cost of maintenance.</p>
<p>If nothing else it strikes me as interesting that whilst IT pursues the concept of endless life for systems, nature provides many examples of limited lifespan as a useful tool for progress and sustainability.</p>
<p><!-- technorati tags start --></p>
<p style="text-align: right; font-size: 10px">Technorati Tags: <a rel="tag" href="http://www.technorati.com/tag/enterprise">enterprise</a>, <a rel="tag" href="http://www.technorati.com/tag/technology">technology</a></p>
<p><!-- technorati tags end --></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.dancres.org/wordpress/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F02%2F26%2Fwhen-legacy-threatens-progress%2F&amp;seed_title=When+Legacy+Threatens+Progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The RDBMS God&#8230;..</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F02%2F07%2Fthe-rdbms-god%2F&amp;seed_title=The+RDBMS+God%26%238230%3B..</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F02%2F07%2Fthe-rdbms-god%2F&amp;seed_title=The+RDBMS+God%26%238230%3B..#comments</comments>
		<pubDate>Wed, 07 Feb 2007 10:10:33 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Distributed Systems]]></category>
		<category><![CDATA[Enterprise Systems]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/02/07/the-rdbms-god/</guid>
		<description><![CDATA[&#8230;..has been worshipped for a long time but there are various barbarian enclaves that are not ready to kneel before him. Enterprises certainly want the money saving opportunities of utility computing options such as EC2 but there is evidence to suggest that RDBMS&#8217;en aren&#8217;t cut out for this role. And recent statements on TSS suggest [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;..has been worshipped for a long time but there are <a href="http://www.redmonk.com/jgovernor/2007/02/06/on-amazon-capacity-on-demand-mysql-in-ec2-and-suns-opportunity-to-lose/">various barbarian enclaves that are not ready to kneel before him</a>.</p>
<p>Enterprises certainly want the money saving opportunities of utility computing options such as <a href="http://aws.amazon.com/ec2">EC2</a> but there is <a href="http://acmqueue.com/modules.php?name=Content&#038;pa=showpage&#038;pid=337&#038;page=5">evidence to suggest</a> that RDBMS&#8217;en aren&#8217;t cut out for this role.</p>
<p>And recent statements on <a href="http://www.theserverside.com">TSS</a> suggest some people are at least beginning to think that we are <a href="http://www.theserverside.com/news/thread.tss?thread_id=44042#226597">mis-using RDBMS&#8217;en</a> ignoring it&#8217;s lack of suitability to a task because it&#8217;s an easy option.</p>
<p>Time to seek a new religion?</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/amazon" rel="tag">amazon</a>, <a href="http://www.technorati.com/tag/distributed systems" rel="tag">distributed systems</a>, <a href="http://www.technorati.com/tag/enterprise" rel="tag">enterprise</a>, <a href="http://www.technorati.com/tag/databases" rel="tag">databases</a></p>
<p><!-- technorati tags end --></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.dancres.org/wordpress/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F02%2F07%2Fthe-rdbms-god%2F&amp;seed_title=The+RDBMS+God%26%238230%3B../feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nick Gall wades into the WS-* debate</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F01%2F27%2Fnick-gall-wades-into-the-ws-debate%2F&amp;seed_title=Nick+Gall+wades+into+the+WS-%2A+debate</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F01%2F27%2Fnick-gall-wades-into-the-ws-debate%2F&amp;seed_title=Nick+Gall+wades+into+the+WS-%2A+debate#comments</comments>
		<pubDate>Sat, 27 Jan 2007 15:33:25 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Enterprise Systems]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/01/27/nick-gall-wades-into-the-ws-debate/</guid>
		<description><![CDATA[Nick Gall (Gartner) has published a position paper on WS-* and The Web. This statement has drawn quite a lot of attention: &#8220;Unfortunately, Web Services, at least the WS-* style, are &#8220;Web&#8221; in name only. While WS-* enables tunneling over HTTP (used merely as an XML message transport), in almost every important aspect, WS-* violates [...]]]></description>
			<content:encoded><![CDATA[<p>Nick Gall (Gartner) has published <a href="http://www.w3.org/2007/01/wos-papers/gall">a position paper</a> on WS-* and The Web.  This statement has drawn quite a <a title="Pete Lacey" href="http://wanderingbarque.com/nonintersecting/2007/01/26/w3c-workshop-web-of-services-for-enterprise-computing/">lot</a> of <a href="http://www.dehora.net/journal/2007/01/from_the_mouth_of_babes.html">attention</a>:</p>
<p>&#8220;<em>Unfortunately, Web Services, at least the WS-* style, are &#8220;Web&#8221; in name only. While WS-* enables tunneling over HTTP (used merely as an XML message transport), in almost every important aspect, WS-* violates (or at best ignores) the architectural principles of the Web as described in the W3C&#8217;s Architecture of the World Wide Web, Volume One and in Tim Berners-Lee&#8217;s personal design notes.</em>&#8221;</p>
<p>Personally I find this statement completely unsurprising as all it really says is that The Web is not the same is WS-*.  Perhaps some people are upset because WS-* aka Web Services dares to make use of the word Web.  That might even be a reasonable complaint but does it really matter?  It seems to me that this part of the paper is a lot more incendiary and far more significant:</p>
<p>&#8220;<em>The large set of WS-* specifications is almost entirely focused on recreating traditional middleware capabilities using XML as the syntax for the formal message structure and the formal interface description</em>.&#8221;</p>
<p>Which appears to be saying (at least to me) that WS-* is <strong>nothing new</strong> and thus all the hype about how it&#8217;s a great step forward starts to look rather lame.  That&#8217;s not to say WS-* won&#8217;t have it&#8217;s uses but it&#8217;s no more of a cure-all than The Web or anything else.</p>
<p>[<strong>Update</strong>: Bill has clarified the posting I link to above, stating that his interest is in the fact that the likes of Gartner are acknowledging that The Web does indeed have an architecture.]</p>
<p><!-- technorati tags start --></p>
<p style="text-align: right; font-size: 10px">Technorati Tags: <a rel="tag" href="http://www.technorati.com/tag/architecture">architecture</a>, <a rel="tag" href="http://www.technorati.com/tag/distributed%20systems">distributed systems</a>, <a rel="tag" href="http://www.technorati.com/tag/technology">technology</a></p>
<p><!-- technorati tags end --></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.dancres.org/wordpress/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F01%2F27%2Fnick-gall-wades-into-the-ws-debate%2F&amp;seed_title=Nick+Gall+wades+into+the+WS-%2A+debate/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Reliable Applications from Unreliable Components</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2006%2F02%2F13%2Freliable-applications-from-unreliable-components%2F&amp;seed_title=Reliable+Applications+from+Unreliable+Components</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2006%2F02%2F13%2Freliable-applications-from-unreliable-components%2F&amp;seed_title=Reliable+Applications+from+Unreliable+Components#comments</comments>
		<pubDate>Mon, 13 Feb 2006 16:50:09 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Distributed Systems]]></category>
		<category><![CDATA[Enterprise Systems]]></category>
		<category><![CDATA[Jini]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/?p=12</guid>
		<description><![CDATA[As I&#8217;ve said in a previous posting, I&#8217;m not a fan of infrastructure level clustering. It basically comes down to the fact that this kind of approach to resilience and scale is achieved through centralization and strict control of the environment. Whilst such a level of control and centralization might be possible in certain well-defined, [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve said in a <a href="http://www.dancres.org/blitzblog/?p=8">previous posting</a>, I&#8217;m not a fan of infrastructure level clustering.  It basically comes down to the fact that this kind of approach to resilience and scale is achieved through centralization and strict control of the environment.  Whilst such a level of control and centralization might be possible in certain well-defined, small scale circumstances, it gets much more difficult across a network of any size and with any more than a few machines.</p>
<p>There are other problems too like the fact that clustering in this fashion is <em>infrastructure specific</em> not <em>application specific</em>.  Basically, the infrastructure will offer you configuration options that fit with what the infrastructure can support/implement generically in an application unaware fashion.  You must then fit your application around what the infrastructure will offer which can mean design or performance compromises or maybe maintenance load (hand-holding by system admins etc).</p>
<p>There can be no argument that many adopt this approach and accept the compromises and for a certain class of system, as I&#8217;ve said, it&#8217;s probably acceptable.  However, the typical profile for most systems is that they grow and evolve over time such that those compromises you made are no longer acceptable or viable.  They become an albatross around the architects neck.  Witness the number of people entrenched in battles to get scaling out of application servers or to add new services etc.</p>
<p>This approach to clustering often goes hand in hand with the <a href="http://today.java.net/jag/Fallacies.html">denial of the realities of networking</a>. It&#8217;s often assumed nothing breaks, there&#8217;s always enough bandwidth etc.  And everything is  coded like it runs in one JVM creating a single difficult to manage monolithic piece of code (something I find ironic given that the people that adopt this approach quite often talk about loose-coupling, service oriented architecture, networked applications etc) which is deliberately naive of it&#8217;s under-pinnings.</p>
<p>In an ironic twist, the people that choose to build things this way then throw their hands up in horror and complain when things become difficult to scale, or they haven&#8217;t got the level of control they want or they don&#8217;t like the way their code has turned out or whatever.  What did they expect?  They turned all these responsibilities over to some vendor&#8217;s software stating &#8220;I don&#8217;t want to deal with that, you handle it, just tell me what to do&#8221; and then in the very next breath said &#8220;why on earth did you tell me to do it that way?&#8221;</p>
<p>So if I don&#8217;t want to suffer this, what might I do?  Start looking at building more modular, network aware modules which can be dynamically interlinked at runtime.  And find a way to achieve resilience/scale at application level using simple unreliable components.  I said in my previous posting:</p>
<p>&#8220;I can’t help but feel that there must be a better way……..&#8221;</p>
<p>Yep, there is &#8211; and I have a prototype to prove it.  And, in case you&#8217;re wondering, yes the prototype does have persistent state and no it doesn&#8217;t require RAID or any other cool hardware, a bunch of blades on a network is all that&#8217;s needed.  And of course, it uses Jini.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.dancres.org/wordpress/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2006%2F02%2F13%2Freliable-applications-from-unreliable-components%2F&amp;seed_title=Reliable+Applications+from+Unreliable+Components/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSRs 236 and 237</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2006%2F01%2F31%2Fjsrs-236-and-237%2F&amp;seed_title=JSRs+236+and+237</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2006%2F01%2F31%2Fjsrs-236-and-237%2F&amp;seed_title=JSRs+236+and+237#comments</comments>
		<pubDate>Tue, 31 Jan 2006 18:58:09 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Enterprise Systems]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/?p=11</guid>
		<description><![CDATA[These are currently being standardized but I gather there are implementations available already. If you want to read the specs you can find them here. Whilst I understand the technical reasons for having these API&#8217;s &#8211; basically that a &#8220;managed environment&#8221; can&#8217;t support the existing equivalent API&#8217;s in the JDK (java.util.Timer and java.util.concurrent.*) there are [...]]]></description>
			<content:encoded><![CDATA[<p>These are currently being standardized but I gather there are implementations available already.  If you want to read the specs you can find them <a href="http://www-128.ibm.com/developerworks/library/specification/j-commonj-sdowmt/index.html">here</a>.</p>
<p>Whilst I understand the technical reasons for having these API&#8217;s &#8211; basically that a &#8220;managed environment&#8221; can&#8217;t support the existing equivalent API&#8217;s in the JDK (<code>java.util.Timer</code> and <code>java.util.concurrent.*</code>) there are some other things about this work that I find a little concerning.</p>
<p>Firstly, that part of the justification is about having simpler API&#8217;s than what&#8217;s in the JDK.  What does that say about what&#8217;s in the JDK?  Which programmers are the intended audience for the JDK API&#8217;s versus those in the JSRs which are J2EE oriented.  And what does that say about the respective levels of ability of these audiences?  Are we really suggesting that J2EE programmers aren&#8217;t as smart as those that might use the JDK?  That doesn&#8217;t sound like a good thing to me for all sorts of reasons.</p>
<p>Secondly, these JSR&#8217;s are to all intents and purposes replicating API&#8217;s we already have in the standard JDK.  Were I to see this kind of duplication in a customer&#8217;s architecture I&#8217;d be seriously concerned and quoting such things as the DRY principle (which actually goes way beyond the simple issue of not duplicating code).  Is it really a good thing for J2EE to be going down a path of duplicating existing standardized functionality bent to it&#8217;s own needs?  Might there not be something wrong with the model?</p>
<p>I gotta say that these JSR&#8217;s have a bit of an odour to them &#8211; good or bad I haven&#8217;t decided yet&#8230;&#8230;&#8230;.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.dancres.org/wordpress/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2006%2F01%2F31%2Fjsrs-236-and-237%2F&amp;seed_title=JSRs+236+and+237/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
