<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Lost Notifications? No Problem.</title>
	<atom:link href="http://www.udidahan.com/2008/12/07/lost-notifications-no-problem/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com/2008/12/07/lost-notifications-no-problem/</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Sat, 11 Feb 2012 15:16:10 -0600</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Ian Robinson</title>
		<link>http://www.udidahan.com/2008/12/07/lost-notifications-no-problem/comment-page-1/#comment-35838</link>
		<dc:creator>Ian Robinson</dc:creator>
		<pubDate>Sun, 07 Dec 2008 21:25:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/12/07/lost-notifications-no-problem/#comment-35838</guid>
		<description>Hi Udi

I think this is a great illustration of tailoring solutions to real consumer needs, which is the primary driver behind consumer-driven contracts. As a provider it may not be possible to offer a one-size-fits-all solution that meets the needs of each and every consumer - so specialize on a case-by-case basis, but in each case do &quot;just enough&quot; to meet real as opposed to imagined needs. Or, and this was the first motivation for CDC, if you do have to provide a one-size-fits-all contract, fit the identifiable aggregate needs, and nothing more.

When I started with CDC, it was for me really about creating and maintaining message schemas that matched the aggregate needs of several consumers - that is, a one-size-fits-all schema, but nothing gold-plated, just something with no more and no less than what was needed. We communicated consumer expectations using tests and assertions - XPath, Schematron, and more recently a representation-format-agnostic DSL (ie. expectations in this DSL can be transformed into assertions against XML, JSON, YAML, form-encoded name-value pairs, etc). By having consumer teams give these assertions and tests to provider teams, we helped providers build into their own test suites and continuous integration environments an understanding of how their services were actually being used. If tests were kept up-to-date, teams could then track their schema footprint and identify possibly redundant elements. Where we were able to do this early enough in the service development lifecycle, these programmatic expectations helped drive out a service contract &quot;by example&quot;.

So I guess CDC started out as a way to help the one-size-fits-all mentality do the simplest thing that could possibly work, whilst at the same time providing a basis for evolving a service as new expectations and consumer needs were identified and came online. I&#039;m always on the lookout for practices and techniques that allow us to do just enough today - even in the context of SOA - whilst maintaining a duty of care to the overall lifetime of a system, and this seemed to help.

CDC then, in its original form was quite modest, being concerned mainly with schema and a desire to contain proliferation - ie. not stamp out consumer-specific instances of a message but instead provide a minimally complete single instance. But with experience I&#039;ve learnt there is a case for specializing what a provider has to offer on a consumer-by-consumer basis - and I think this is an equally, if not more, interesting real-world application of the idea. I remember Jesus Rodriguez did something with the WCF LOB adapters along these lines quite some time ago. Your varying the publication rate, message size and transport per consumer is another good case in point. Inside ThoughtWorks, Jim Webber and I did something similar with a client at the beginning of the year. As with your case, it involved BI. Recognizing that BI consumers have quite different needs - and capabilities - from &quot;transactional&quot; consumers, we created a specialized ETL-friendly interface to our service that extended and clarified our business-meaningful service contract in line with a real-world need. As with what you describe, consumer expectations, including quality-of-service expectations, shape the service ecosystem to the problem at hand, rather than compromising the solution by adapting the problem to a narrow, ostensibly consistent but less-than-useful architectural or technical vision.

Hope this is of some help. On a more general note, your blog and articles have been enormously useful in shaping, testing and refining my own approach to delivering on SOA initiatives over the last few years. Over and against a certain 3-layer-application-architecture-blown-out-to-distributed-proportions school of SOA, your writing, together with Bill Poole&#039;s stuff, which I think I probably found through your blog, steers a far more valuable course.

Kind regards

ian</description>
		<content:encoded><![CDATA[<p>Hi Udi</p>
<p>I think this is a great illustration of tailoring solutions to real consumer needs, which is the primary driver behind consumer-driven contracts. As a provider it may not be possible to offer a one-size-fits-all solution that meets the needs of each and every consumer &#8211; so specialize on a case-by-case basis, but in each case do &#8220;just enough&#8221; to meet real as opposed to imagined needs. Or, and this was the first motivation for CDC, if you do have to provide a one-size-fits-all contract, fit the identifiable aggregate needs, and nothing more.</p>
<p>When I started with CDC, it was for me really about creating and maintaining message schemas that matched the aggregate needs of several consumers &#8211; that is, a one-size-fits-all schema, but nothing gold-plated, just something with no more and no less than what was needed. We communicated consumer expectations using tests and assertions &#8211; XPath, Schematron, and more recently a representation-format-agnostic DSL (ie. expectations in this DSL can be transformed into assertions against XML, JSON, YAML, form-encoded name-value pairs, etc). By having consumer teams give these assertions and tests to provider teams, we helped providers build into their own test suites and continuous integration environments an understanding of how their services were actually being used. If tests were kept up-to-date, teams could then track their schema footprint and identify possibly redundant elements. Where we were able to do this early enough in the service development lifecycle, these programmatic expectations helped drive out a service contract &#8220;by example&#8221;.</p>
<p>So I guess CDC started out as a way to help the one-size-fits-all mentality do the simplest thing that could possibly work, whilst at the same time providing a basis for evolving a service as new expectations and consumer needs were identified and came online. I&#8217;m always on the lookout for practices and techniques that allow us to do just enough today &#8211; even in the context of SOA &#8211; whilst maintaining a duty of care to the overall lifetime of a system, and this seemed to help.</p>
<p>CDC then, in its original form was quite modest, being concerned mainly with schema and a desire to contain proliferation &#8211; ie. not stamp out consumer-specific instances of a message but instead provide a minimally complete single instance. But with experience I&#8217;ve learnt there is a case for specializing what a provider has to offer on a consumer-by-consumer basis &#8211; and I think this is an equally, if not more, interesting real-world application of the idea. I remember Jesus Rodriguez did something with the WCF LOB adapters along these lines quite some time ago. Your varying the publication rate, message size and transport per consumer is another good case in point. Inside ThoughtWorks, Jim Webber and I did something similar with a client at the beginning of the year. As with your case, it involved BI. Recognizing that BI consumers have quite different needs &#8211; and capabilities &#8211; from &#8220;transactional&#8221; consumers, we created a specialized ETL-friendly interface to our service that extended and clarified our business-meaningful service contract in line with a real-world need. As with what you describe, consumer expectations, including quality-of-service expectations, shape the service ecosystem to the problem at hand, rather than compromising the solution by adapting the problem to a narrow, ostensibly consistent but less-than-useful architectural or technical vision.</p>
<p>Hope this is of some help. On a more general note, your blog and articles have been enormously useful in shaping, testing and refining my own approach to delivering on SOA initiatives over the last few years. Over and against a certain 3-layer-application-architecture-blown-out-to-distributed-proportions school of SOA, your writing, together with Bill Poole&#8217;s stuff, which I think I probably found through your blog, steers a far more valuable course.</p>
<p>Kind regards</p>
<p>ian</p>
]]></content:encoded>
	</item>
</channel>
</rss>

