<?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>Gridshore &#187; SOA</title>
	<atom:link href="http://www.gridshore.nl/tag/soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gridshore.nl</link>
	<description>A weblog about software engineering, Architecture, Technology an other things we like.</description>
	<lastBuildDate>Tue, 13 Dec 2011 15:36:58 +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>SOA component design: thinking about error handling</title>
		<link>http://www.gridshore.nl/2008/07/26/soa-component-design-thinking-about-error-handling/</link>
		<comments>http://www.gridshore.nl/2008/07/26/soa-component-design-thinking-about-error-handling/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 20:08:27 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[error handling]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://www.gridshore.nl/2008/07/26/soa-component-design-thinking-about-error-handling/</guid>
		<description><![CDATA[<p>When designing components for a SOA landscape (or any multiprocess system), the primary concern is with the communication behavior of the component: how messages are passed to and from the component and in what order, what those messages are and what constitutes a valid message and what doesn&#8217;t. When the time comes to implement [...]]]></description>
			<content:encoded><![CDATA[<p>When designing components for a SOA landscape (or any multiprocess system), the primary concern is with the communication behavior of the component: how messages are passed to and from the component and in what order, what those messages are and what constitutes a valid message and what doesn&#8217;t. When the time comes to implement the component, related concerns come into play: how are messages projected from the communication language into the domain model and into the implementation language, how are communication patterns met and ensured, et cetera. In addition the project technical architect has to consider how to implement the component&#8217;s domain without hardlinking it to any other components whose domains are known or to the communication medium du jour (unless the component&#8217;s purpose is linked to that medium).</p>
<p>Now here&#8217;s the strange thing: with all the concerns that go into design of components at all levels (from the enterprise architect down to the developers of the different components), one of the most overlooked things in SOA component building is the handling of cross-component error handling.</p>
<p><span id="more-166"></span></p>
<h3>Error handling concerns</h3>
<p>The fact that error handling is often the lowest-priority concern is doubly weird if you consider that cross-component error handling is the same concern as core functionality messaging. In both cases there are the same sets of concerns, both with regards to communication with external components and interaction between the component&#8217;s internal implementation and the communication layer. Some typical concerns that development teams have to deal with are:</p>
<dl>
<dt>Error message definition</dt>
<dd>Just as SOA components require clear definitions of the messages that will be exchanged with client components for mainline communication, clear definitions must also be given of messages that carry error information.</dd>
<dt>Error communication behavior definition</dt>
<dd>Just as mainline communication behavior between SOA components must be clearly and formally defined, so must similar definitions be given for when a component can send an error message in response to a request for operation.</dd>
<dt>Projecting exception types from the domain language onto error types from the communication language</dt>
<dd>In the case of error handling, this is one half of a problem that also exists for mainline communication. In mainline communication request messages must be projected onto domain model types and domain model types must be projected onto communication language types when the component returns a response. In the case of error handling of course there is no concept of request projection since nobody requests an error; however, the analog with projecting a domain model type onto a response communication message remains.</dd>
<dt>Maintaining component independence</dt>
<dd>This concern actually affects a component more as a consumer of other services than as a publisher of services. Maintaining component independence is related to avoiding domain models leaking over into foreign components (as <a title="Eric Evans" href="http://www.domainlanguage.com/about/ericevans.html">Eric Evans</a> puts it). In the case of messaging it means not building your domain model so that it is a mere copy of a foreign component&#8217;s communication model. In the more specific case of error handling it relates to not linking error handling too closely to the definition of errors used by foreign components. Instead, as with mainline messages, foreign component-generated errors should be projected onto the local domain model&#8217;s concept of errors or exceptions.</dd>
</dl>
<h3>Balancing error handling strategies</h3>
<p>Another concern in error handling (in addition to the ones mentioned above, which occur in all message processing systems) is introduced when communication layers introduce their own concept of error handling. A typical example of this is the <a title="WSDL" href="http://www.w3.org/TR/wsdl">WSDL</a>/<a title="SOAP" href="http://www.w3.org/TR/soap/">SOAP</a> combination with its SOAPFault concept of error messaging. These built-in mechanisms can be very convenient in that they dictate an error handling strategy and leave you nothing to think about in your design. Not to mention that standardization is very valuable in these systems: it introduces an error handling strategy that everybody can agree to. However, there is also an inherent risk that these standardized error handling mechanisms will hardlink your component to a particular communication layer or framework (especially if the mechanism is allowed to leak through into the component&#8217;s inner domain model).</p>
<p>It is clear that each project must find a way to balance concerns in cross-component error handling strategy. Several strategies exist and must be considered:</p>
<h5>Ignoring the communication layer&#8217;s mechanism</h5>
<p>Doubtlessly the simplest strategy is to ignore the communication layer&#8217;s error handling mechanism. Instead one of several possible alternatives must then be considered. A simple alternative might be not communicating errors across components ever (this might for example be an enterprise policy) but allowing &#8220;empty&#8221; responses instead. Or else a project might define its own error reporting as part of regular messaging, creating either/or responses (i.e. responses that contain either a regular response or an error).</p>
<p>The upside of this strategy is its simplicity, plus the fact that it is guaranteed to keep the component implementation separate from the communication layer. However, client components (especially third-party ones) are not likely to appreciate the divergence from standardized mechanisms &#8212; making this a strategy that is only suitable for components that are for internal use only.</p>
<h5>Using the communication layer&#8217;s mechanism</h5>
<p>This strategy is more or less the other extreme of ignoring the communication layer&#8217;s mechanism. The choice here is to take the mechanism (and its reflection in the implementation language) and incorporate that throughout the component&#8217;s implementation. For example, a Java project might elect to use <code><a href="http://ws.apache.org/axis/java/apiDocs/org/apache/axis/AxisFault.html">AxisFault</a></code>s throughout the project instead of project-specific exception types.</p>
<p>Again, the upside of this strategy is its simplicity, plus its guaranteed interoperability with the communication layer. However, the component is now hardlinked to the communication layer. This is not necessarily a bad thing: there are projects and components whose purpose in life is linked to a single communication layer. A custom integration layer for different SOAP web services for instance might want to use SOAP Faults and related types for error handling (since it is technically part of the domain). In general though, this strategy will limit the component implementation&#8217;s future flexibility.</p>
<h5>Mapping internal error handling to communication layer error handling</h5>
<p>The final option seeks to combine the best of both worlds, separating the internal domain model from the specifics of the communication layer and allowing the two to touch only through a translation layer. This strategy also allows the internal component implementation to be linked to several different communication layers. For example, a component implementation might report errors using <code>java.lang.Exceptions</code>. Different translations might translate these exceptions into SOAP Faults for a SOAP web service publishing, a <a href="http://java.sun.com/products/jms/">JMS</a> exception for JMS and a specific error page for a <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">RESTful</a> service.</p>
<p>Architecturally this probably sounds like the go-to strategy for all situations. And factually this is probably the option that most projects will want to use, since relatively few projects want to be hardlinked to the communication layer. However, it is more work to implement, especially if the projection of domain errors onto the communication layer is not simple to implement.</p>
<h3>Conclusion</h3>
<p>Error handling is one of the most overlooked topics in the design and implementation of SOA components. However, it is at least as important as the design and implementation of mainline messaging and functionality, for the same reasons. And like mainline functionality, error handling requires some careful forethought and weighing of options. Different strategies are available, each with its own characteristics with regards to implementation difficulty and ease of use. Projects must consider very carefully which strategy fits project goals and expected future usage patterns.</p>
<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http%3A%2F%2Fwww.gridshore.nl%2F2008%2F07%2F26%2Fsoa-component-design-thinking-about-error-handling%2F&amp;title=SOA%20component%20design%3A%20thinking%20about%20error%20handling&amp;t=2' height='25' width='155' frameborder='0' scrolling='no'></iframe></div></div><div style='clear:both'></div></div><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com -->]]></content:encoded>
			<wfw:commentRss>http://www.gridshore.nl/2008/07/26/soa-component-design-thinking-about-error-handling/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Letting go: yet another traditional problem in the SOA world</title>
		<link>http://www.gridshore.nl/2008/04/15/letting-go-yet-another-traditional-problem-in-the-soa-world/</link>
		<comments>http://www.gridshore.nl/2008/04/15/letting-go-yet-another-traditional-problem-in-the-soa-world/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 22:51:06 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[encapsulation]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://www.gridshore.nl/2008/04/15/letting-go-yet-another-traditional-problem-in-the-soa-world/</guid>
		<description><![CDATA[<p>Over the past few days my thoughts have been drawn to what I think is a common problem (in addition to the ones identified by Freddie van Rijswijk in his recent blog) in establishing and participating in a SOA architecture: Won&#8217;t Let Go Syndrome (WLGS).</p> <p>WLGS is a problem akin to the Not Invented [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few days my thoughts have been drawn to what I think is a common problem (in addition to the ones identified by Freddie van Rijswijk in his recent <a href="http://www.gridshore.nl/2008/04/12/will-soa-and-bpm-bring-the-moose-savings-and-business-agility/" target="_blank">blog</a>) in establishing and participating in a SOA architecture: Won&#8217;t Let Go Syndrome (WLGS).</p>
<p>WLGS is a problem akin to the <a href="http://www.developer.com/java/other/article.php/3338791" target="_blank" title="NIHS">Not Invented Here Syndrome (NIHS)</a>, which is itself a specific form of <a href="http://en.wikipedia.org/wiki/Reinventing_the_wheel">Reinventing the wheel</a>. However, where NIHS is an a-posteriori problem (an unwillingness to use the inventions and work of others), WLGS is an a-priori problem: an unwillingness to let anybody else solve your problems for you.</p>
<p>When working within a SOA, the idea is that you create one or more components, each of which is good at solving a certain problem really well and doing nothing else but that (don&#8217;t confuse that with the idea that a single SOA component must offer only one operation). Other problems must be solved by other, specialised components. And for larger problems it is often a good idea to have subproblems solved by other components as well. Back in the good old days of &#8220;simple&#8221; OOP, this was called delegating. However, as I continue to work in my work environment and am involved in more and more projects that create different components within what will become the companies SOA, I come across a weird phenomenon more and more often. For some reason people working on any given component are unwilling to entrust the care for their subproblems to any other component.</p>
<p><span id="more-117"></span></p>
<p>Some examples might clarify:</p>
<p>Some of my work involves enhancing components that support user-facing applications operated by the company I work for. Recently the company has been developing a new user-facing application that will rely on the same supporting components (albeit with extended functionality). Among others the supporting components expose functionality offered by a number of powerful backend systems. This is a typical integration task: different backend systems offer similar functionality in differing ways and a component within the SOA provides a unified interface for all of them to the rest of the universe. The implication of this architecture is of course that the user-facing application should not incorporate knowledge of the backend systems &#8212; rather, it should rely upon the abstractions provided by the supporting components. However, for the new functionality required by the new application a question arose about how communication should be managed with the backend system (one of the backend systems offered a notational shortcut). The lead developer of the user-facing application immediately responded by saying: &#8220;[We] will use that shortcut, but not in the first version; we&#8217;ll add it later.&#8221; It didn&#8217;t even occur to him to say &#8220;That shortcut is not my problem; the developers of the supporting components will have to figure it out.&#8221;</p>
<p>Another example: a certain component C within the SOA is responsible for exposing functionality in a third-party system in a friendly way. One of the exposed functions is access to a certain type of record. Those records can be created from several different sources and the records from one particular source sometimes contain errors when retrieved by the component C described above. This is problematic for a certain user-facing application that is going to be extended and wants to retrieve particularly large records using C. The main objection raised by an advisor to the development effort (a former developer)was that C sometimes returns an error in the part of the record that the application will want to use and that it would be very inconvenient for the application to have to deal with this error or work around it. For some reason the thought did not occur to ask the development team for component C to try and fix the problem.</p>
<p>Final example: a large application within the application landscape made use of payment logic. This logic was needed elsewhere as well, so the decision was made to split this logic off into a separate component. However, the logic had been built to fit into the large application&#8217;s process, so the attempt to split the payment logic off failed &#8212; the result was just too intertwined with the large application to be reused. After a time though, the decision was made to rebuild the large application itself (not because of the payment logic). Managment pounced on the opportunity and decided not to repeat the mistakes of the past: if there was to be a new large application, that would be a perfect opportunity to build a new, separate payment component as well &#8212; a reusable one. Of course that component would have to pay special attention to the needs of the new, large application (it being a very important application), but it should be very generic. However, the new large application was being designed and built by the same people who built the old one. And they had very strong ideas about how the process of the new large application should work. So they set requirements for the new payment component to fit into their process (instead of letting the new component offer a payment solution that merely offered the needed functionality). As a result of WLGS (this time relating to letting go of control), the new payment component has the large application&#8217;s process imprinted upon it. Which makes it highly questionable that it is, in fact, very generic at all.</p>
<p>As I hope is clear from these examples, WLGS greatly impedes one&#8217;s ability to play well in a SOA. It makes it difficult to look past your own little garden and make use of what it out there. It makes it difficult to get your problems solved (especially if your problems don&#8217;t live in your actual problem domain). And it makes it hard to develop software that is a real SOA component and not a monolithic whole.</p>
<p>Of course, WLGS is not new at all. As remarked before, delegating was considered a good idea in OOP. And yet (of course?) within projects that adopted OOP it was/is always a problem to get people to delegate. How often have you come across code that does exactly what a perfectly good library already does? Java code to perform null-safe String comparisons (like the commons-lang library, which the developer didn&#8217;t know abot and didn&#8217;t bother googling for)? Or object pooling? So it is not surprising to come across the same in SOA (although on a larger scale, since SOA is on a larger scale).</p>
<p>The really big problem with WLGS is that it isn&#8217;t a coding issue or a standards issue or anything you can automatically test for. Like its cousin the NIHS, WLGS is a thing that lives in the minds of developers and architects. It is part of the intangible, psychological aspects that make software engineering a different discipline than computing science. And that makes dealing with it difficult as well; the only thing that I can currently think of that can counter WLGS is review of design ideas by someone from outside the scope of the development unit. Another developer working on another subsystem, for instance, might spot a missed opportunity for delegation and reuse within an OOP application.</p>
<p>Of course on the grander scale of SOA you need review from outside the project by someone who can look over the fence and see what the neighbors have to offer. And this in turn requires you to have a company-wide review structure that overlays individual projects, just as SOA itself is an architecture that spans the entire company.</p>
<p>SOA is an idea that scales software development up to the level of entire companies and industries. However, when it comes to problems such as WLGS, SOA is not a solution &#8212; those problems scale right up along with the development effort. This is, of course, not a reason to abandon SOA; much like OOP before it, SOA has too much to offer to let this problem stop you. However, WLGS is something that anybody will have to deal with who starts on the road towards SOA. In other words: buyer, beware&#8230;.</p>
<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http%3A%2F%2Fwww.gridshore.nl%2F2008%2F04%2F15%2Fletting-go-yet-another-traditional-problem-in-the-soa-world%2F&amp;title=Letting%20go%3A%20yet%20another%20traditional%20problem%20in%20the%20SOA%20world&amp;t=2' height='25' width='155' frameborder='0' scrolling='no'></iframe></div></div><div style='clear:both'></div></div><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com -->]]></content:encoded>
			<wfw:commentRss>http://www.gridshore.nl/2008/04/15/letting-go-yet-another-traditional-problem-in-the-soa-world/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Will SOA and BPM bring the MOOSE Savings and Business Agility?</title>
		<link>http://www.gridshore.nl/2008/04/12/will-soa-and-bpm-bring-the-moose-savings-and-business-agility/</link>
		<comments>http://www.gridshore.nl/2008/04/12/will-soa-and-bpm-bring-the-moose-savings-and-business-agility/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 12:39:08 +0000</pubDate>
		<dc:creator>freddie</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.gridshore.nl/2008/04/12/will-soa-and-bpm-bring-the-moose-savings-and-business-agility/</guid>
		<description><![CDATA[<p>How is SOA and BPM going to improving the ability to serve and exceed quality while cut in the 30% cost of IT MOOSE? I´m convinced that SOA and BPM is NOT the answer. The discussion on ROI of SOA caused by my Blog-item SOS voor SOA andmultiple discussions with Max J. Pucher and [...]]]></description>
			<content:encoded><![CDATA[<p><font size="2">How is SOA and BPM going to improving the ability to serve and exceed quality while cut in the 30% cost of IT MOOSE? I´m convinced that SOA and BPM is NOT the answer. The discussion on ROI of SOA caused by my Blog-item <a href="http://soa.computable.nl/2008/03/sos-voor-soa.html">SOS voor SOA</a> and</font><font size="2">multiple discussions with <a href="http://isismjpucher.wordpress.com/">Max J. Pucher</a> and reading his blogs, but also the posting of Ben Tels and others blogs and several papers have strengthen me in my thoughts that SOA althoug a great Architectural concept has lost its meaning. But I´m open for other insights and discussions, so feel free to react after reading this post.</font></p>
<p><strong>MOOSE?</strong></p>
<p>The term MOOSE comes from Forrester. Executives often look at IT spend as a black box and compare it as a percent to overall revenue. Maintenance and operating the IT organization, systems, and equipment (MOOSE) takes approximately 70% of IT budgets (Forrester: the October 18, 2005, &#8220;<a href="http://www.forrester.com/go?docid=37961">Defining The MOOSE In The IT Room</a>&#8221; report.). The remaining 30% comprises investments to support business growth, to cut business cost, and to cut the cost of IT MOOSE.</p>
<p align="center"><img height="337" alt="it moose" src="http://www.gridshore.nl/wp-content/uploads/itmoose-1.jpg" width="419" /></p>
<p align="center"><em>Macro-economics conditions shaping the CIO´s job currenlty. The reality is that any business at any time may need to shift its executive focus toward running lean.</em></p>
<p>The question is how will SOA and BPM help the CIO Invest more in New and Improved Capabilities to support business growth and therefore to Reduce the Cost of Business and above all Cost of IT MOOSE. Seriously, I doubt that we can hold our claim that SOA and BPM are bringing the CIO those benefits. Besides the argument of Cost saving, we also hear the arguments for Business Agility and Compliancy. I will not go into Compliancy and connected to it Security, it´s to broad for this blog but Agility is also something to think somewhat more on.</p>
<p><span id="more-113"></span></p>
<p><strong>SOA has lost his meaning</strong></p>
<p>Burton Group VP and Research Director Anne Thomas Manes recently said,</p>
<p><em>&#8220;I&#8217;ve talked to many companies that have implemented stunningly beautiful SOA infrastructures that support managed communications using virtualized proxies and dynamic bindings,&#8221; says Manes.</em></p>
<p><em>&#8220;They&#8217;ve deployed the best technology the industry has to offer &#8211; including registries, repositories, SOA management, XML gateways, and even the occasional ESB. Many have set up knowledge bases, best practices, guidance frameworks, and governance processes. And yet these SOA initiatives invariably stall out.&#8221;</em></p>
<p>Well maybe these companies should have spend less time installing software and building frameworks and more time understanding what business processes could be impacted by removing poor interfaces or eliminating bottlenecks or providing needed information faster.</p>
<p><img height="86" alt="jabows" src="http://www.gridshore.nl/wp-content/uploads/jabows.png" width="90" align="left" />So what happened to our simple view of SOA? How many services do I need to be able to talk of a SOA? Do I need an ESB, Governance tool, Registry to be SOA compliant? Or is just enough to have Just a bunch of Webservices (JABOWS) with a ping function to see if the Services are still alive? What happened is that software vendors have hijacked the SOA term for their marketing needs, analysts have created new categories with accompanying revenue streams and many consulting firms have turned SOA into big-bang infrastructure projects. With all the vendor hype SOA has lost its meaning and in many cases has lead to exorbitant costs with <em>little or no business value.</em></p>
<p>&nbsp;</p>
<p><strong>What About Agility?</strong></p>
<p><a href="http://isismjpucher.wordpress.com/">Max J. Pucher</a> have some interesting thoughts on it, which are in line with my thoughts when it comes to BPM and Agility as you could read in my blog-item on &#8220;<a href="http://www.gridshore.nl/2008/02/07/what-does-route-planning-has-to-do-with-business-process-management/">What does Route Planning has to do with Business Process Management?&#8221;</a></p>
<p>As much as some business management theorists might disagree, a business is not a machine but a complex adaptive system because it consists of people and has people as customers. We need to understand that <em><strong>it is not the process that shapes the business by shaping what people do; it is the people that shape the process and that in turn shape the business</strong>.</em></p>
<p><em>Agility is a human skill and will never be a software property. The more software is used to replace people and the more processes and decisions are automated the less agile businesses will become.</em></p>
<p>
Max mention in his blog an example coming from M. Hammer which is a comparison with an American football team. <img height="167" alt="football" src="http://www.gridshore.nl/wp-content/uploads/football.jpg" width="225" align="right" />While the coach trains with the team possible plays (processes) he does not step out on the field and controls the game. A player (process owner) called the &#8216;offense coordinator&#8217; dynamically selects and positions players for each offense. Players all have very different roles like workers in business. They are trained by special &#8216;position coaches.&#8217; Offense coordinators and position coaches <u>draw from their extensive experience to shape the team</u> to dynamically react to any opponent. It is this teamwork between coaches, coordinators and players that we need to achieve in daily business operations. Strict process management or vertical applications are unable to provide that. What a business would need is <u>a software system that can learn to act as an &#8216;offense coordinator&#8217; and &#8216;position coach&#8217; from its user&#8217;s experience</u>. It assigns work to user roles and supports these in how to act in the current play without restricting their ability to shape the play.</p>
<p>
Using the football team comparison offers another insight. While the team is given the freedom to play the game as it sees fit, it still has to follow the rules of the game. The same is true for business. Therefore it is essential to understand that user role coordination and coaching does not replace or interfere with the (business) rules that make up the game. <strong>Rules are rigid by design, coordination and coaching cannot be.</strong></p>
<p>But the conclusion must be <u>a business is what it does,</u> despite what the CEO or organization department wants and what is modeled in a BPM tool either using a SOA or not.</p>
<p><strong>Call for Innovation</strong></p>
<p>Let us stop reinventing the wheel as correctly pointed out by Ben. My goal is to fullfill the <u>one</u> of the <a href="http://www.computable.nl/nieuws.jsp?id=2469990">7 challenges</a> pointed out by <a href="http://www.gartner.com/it/sym/2008/spg10/spg10.jsp">Gartner this week in Las Vegas</a>. Let us improve <u>developer productivity with a factor 100</u> and let us do this with in our mind that its the (business) people that shape the process and they should be helped and not hindered.</p>
<p>Kind Regards</p>
<p>Freddie van Rijswijk</p>
<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http%3A%2F%2Fwww.gridshore.nl%2F2008%2F04%2F12%2Fwill-soa-and-bpm-bring-the-moose-savings-and-business-agility%2F&amp;title=Will%20SOA%20and%20BPM%20bring%20the%20MOOSE%20Savings%20and%20Business%20Agility%3F&amp;t=2' height='25' width='155' frameborder='0' scrolling='no'></iframe></div></div><div style='clear:both'></div></div><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com -->]]></content:encoded>
			<wfw:commentRss>http://www.gridshore.nl/2008/04/12/will-soa-and-bpm-bring-the-moose-savings-and-business-agility/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SOA and the domain: how new technology should not blind you to old wisdom</title>
		<link>http://www.gridshore.nl/2008/04/02/soa-and-the-domain-how-new-technology-should-not-blind-you-to-old-wisdom/</link>
		<comments>http://www.gridshore.nl/2008/04/02/soa-and-the-domain-how-new-technology-should-not-blind-you-to-old-wisdom/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 21:50:59 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[DDD]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.gridshore.nl/?p=98</guid>
		<description><![CDATA[<p>A couple of things happened to me over the past few days as I was taking on a new role within a new project that caused me to ponder a bit about the role of domains and domain driven development (DDD) within the drive towards service oriented architectures (SOA). The result of these ponderings [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of things happened to me over the past few days as I was taking on a new role within a new project that caused me to ponder a bit about the role of domains and domain driven development (DDD) within the drive towards service oriented architectures (SOA). The result of these ponderings was, as it often is in my case, that the more we think things change, the more they stay the same. And the more we think we learn, the more we find we already knew what we have learned.</p>
<p><span id="more-98"></span></p>
<h3>The first thing&#8230;</h3>
<p>The first thing that happened is that I moved to my new project and found myself in a discussion about dealing with the consequences of earlier choices about how to deal with the overall application domain in the context of an application that will exist of a number of different, independent components composed using Web Services. As you will have already guessed, my new project is trying to implement a SOA (with service components that will later be part of a larger SOA).</p>
<p>The situation the project was in had developed from an attempt at implementing SOA by the book (in a somewhat reversed style). As we all know by now, the main tenet of SOA is that it allows you to take specialised components that deal with a single task well and combine them into larger services or applications with business meaning. Of course one might also reason (as my new project had done) that this means that you can take the specification of a new application and decompose it into functionally separate and specialised blocks. Implement these separately and compose them using web services et voilá: instant SOA.</p>
<p>To ensure that the different components would fit together (especially when communicating over the wire, but in general as well) it had been decided that all XML schemata and all implementation classes would be derived from the overall, conceptual domain model. Specifically, the model would be captured in a single set of implementation classes and shared across all the different components. The same model would be reflected in the XML messages passed between components.</p>
<p>When I arrived the project had become embroiled in problems related to tight coupling of its independent components. On the design side the use of a single domain meant that each component had to compromise in how well elements from the domain were suited to its purpose. On the implementation side, using a single domain package in all components meant that every change in any one component meant a rebuild and redeployment of all components.</p>
<h3>The second thing</h3>
<p>The second thing that happened was a discussion I had with a colleague about an MSN message he had written. He had used the word &#8220;enthousiasts&#8221;, after which I chided him about speaking &#8220;Nenglish&#8221; (English mucked up with Dutch influence). A search through a diary proved that he was correct, enthousiasts is perfectly good English &#8212; in British spelling.</p>
<p>It took a little time for it to sink in that, even though he had misspelled the word in my eyes, I still knew what he was talking about. Even though it wasn&#8217;t my spelling, the concept of what he was saying had rung a bell in my head. One might model the situation like so:</p>
<p><img style="http://www.gridshore.nl/wp-admin/float;" src="http://www.gridshore.nl/wp-content/uploads/speakingenglish.jpg" alt="Two kings of English, one understanding..." width="388" height="245" /></p>
<p>What is illustrated by this diagram is that two people can speak different dialects of the same language yet share the meaning of words and concepts. They each have a language of their own, yet somehow both also &#8220;know&#8221; a second language that both share, speak perfectly and can use to communicate relatively flawlessly.</p>
<h3>So what does this teach us about SOA?</h3>
<p>The two situations described above teach us an important lesson about the role of domains and DDD when implementing a SOA: each component within a SOA has to deal with multiple domains, should be aware of this and should be allowed to do so.</p>
<p>A typical component in a SOA has a number of connections to components in the outside world. This is because a typical component in a proper SOA does a single task and does this well and is therefore of interest to other components within the same SOA. And of course, the component itself might use other components to complete its task, for the same reason. So let us say that a given component offers N services to the outside world and references M other components. I then claim that the component has to deal with N + M + 1 different (but obviously related) domains, N + M + 1 separate languages. N languages that it shares with its clients, M languages that it shares with its referenced components and one more: its internal domain that it uses to do its job so well. In practice of course not all these languages will be distinct (or at least not completely); there may be overlap or shared communication languages. But conceptually N + M + 1 is the number and this fact should not be feared but rather respected. After all, it is this fact that allows components within a SOA both to be efficient and proficient at their own tasks, yet interoperate with other components at the same time.</p>
<p><img class="alignleft" style="left;" src="http://www.gridshore.nl/wp-content/uploads/communicating-services.jpg" alt="A federation of service components" width="250" height="130" align="left" /></p>
<p>Developing a single component within a SOA is all about performing a single task and doing that right, then passing the results on in a usable form. In that respect SOA is just a reinvention of the Unix command line tools. Tools like sed, grep, ls and so on don&#8217;t all do the world &#8212; they do one thing, do it well and allow their results to be piped in to the next tool in the chain. At the same time, no single tool cares about <em>how</em> the previous tool reached the results it did &#8212; just that it did. SOA components are much the same.</p>
<p>It is at this junction that we reach DDD. Each SOA component deals with a single, solitary, complex problem. A problem no other component in the same SOA deals with, nor should. DDD teaches us that complex problems should be based on a domain suited to solving that problem and that that domain should be the primary focus of the component. The component should care about how to solve its own problem well; it should not care about what anybody else is doing beyond the extent of getting needed data and passing it on.</p>
<p>Moreover, DDD teaches us that the domain is divided into a number of different pieces. One of these pieces is focussed strictly on solving the actual problem (this is called the <em>core domain</em>), the other pieces are ancillary to accomplishing the task at hand. Some ancillary pieces might focus on communication with other components whose focus is on other problems. Eric Evans refers to this as <em>repositories</em> or in the extreme <em>anticorruption layers</em> (which prevent one model from leaking into another). It is therefore not at all unusual to see a structure within SOA components as illustrated on the right.</p>
<p><img class="alignright" style="right;" src="http://www.gridshore.nl/wp-content/uploads/service-internals.jpg" alt="Service component interals" width="445" height="430" /></p>
<p>The figure on the right illustrates a SOA component, which offers a business service. This service is accomplished by leveraging a specialised domain model, tailored to the problem at hand. At the same time the component does not live in isolation &#8212; it is published to other components and connected to underlying services. But the publishing and the connecting are not part of the component&#8217;s <strong>core </strong>domain; these task are undertaken by ancillary components. And a prime task of these ancillary components is to translate between the component&#8217;s own domain model and that used to communicate with other components. Let there be no mistake, these are anticorruption layers in the literal sense of the term: they allow component to be specialised and service-specific domains to exist in isolation without being corrupted by the needs of the domain of every other component in the same SOA.</p>
<p>Of course that does not mean that each domain of each component within a SOA is completely unrelated to all others. There will by necessity be overlap in the <em>concepts</em> that are captured by two communicating components. However, in order to allow for an optimal solution to the individual problem addressed by a component it is necessary for that component to have full freedom in how it embeds that shared concept within its own domain and how much weight it carries within that internal domain (one man&#8217;s priceless is another man&#8217;s worthless after all).</p>
<p>At the same time a SOA component is completely worthless if it cannot communicate. It must therefore be able to deal with the communication domains that it shares with other components (the first step in moving from the domain of one component to the domain of the next). The techniques that DDD teaches us for dealing with communicating domains are therefore essential to building SOA components that strike the right balance between interoperability and optimized problem solving.</p>
<p>And so, once again, we see that moving to a new technology and a &#8221;new&#8221; architecture is no reason to forget everything  we have learned. In fact, if anything, it shows the importance of recognising &#8220;new&#8221; ideas for what they are. If you know which wheel is being reinvented, you know which tools you must reinvent to make it run properly as well.</p>
<p>Reference: <a href="http://books.google.com/books?id=7dlaMs0SECsC&amp;dq=domain+driven+design">Domain Driven Design: Tackling Complexity in the Heart of Software</a></p>
<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http%3A%2F%2Fwww.gridshore.nl%2F2008%2F04%2F02%2Fsoa-and-the-domain-how-new-technology-should-not-blind-you-to-old-wisdom%2F&amp;title=SOA%20and%20the%20domain%3A%20how%20new%20technology%20should%20not%20blind%20you%20to%20old%20wisdom&amp;t=2' height='25' width='155' frameborder='0' scrolling='no'></iframe></div></div><div style='clear:both'></div></div><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com -->]]></content:encoded>
			<wfw:commentRss>http://www.gridshore.nl/2008/04/02/soa-and-the-domain-how-new-technology-should-not-blind-you-to-old-wisdom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Service orientation within applications</title>
		<link>http://www.gridshore.nl/2008/03/21/service-orientation-within-applications/</link>
		<comments>http://www.gridshore.nl/2008/03/21/service-orientation-within-applications/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 19:45:14 +0000</pubDate>
		<dc:creator>Allard</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.gridshore.nl/2008/03/21/service-orientation-within-applications/</guid>
		<description><![CDATA[<p>Many IT projects at large companies aim to make the company &#8220;SOA-proof&#8221;. What really concerns me is that time after time software architects tend to treat &#8220;XML Web Services&#8221; as a synonym for &#8220;Service&#8221;. In this article, I want to show that SOA may also exist within a single application.</p> <p></p> <p>Often, a perfectly [...]]]></description>
			<content:encoded><![CDATA[<p>Many IT projects at large companies aim to make the company &#8220;SOA-proof&#8221;. What really concerns me is that time after time software architects tend to treat &#8220;XML Web Services&#8221; as a synonym for &#8220;Service&#8221;. In this article, I want to show that SOA may also exist within a single application.</p>
<p><span id="more-77"></span></p>
<p>Often, a perfectly homogenous application is split up in several components that have a great deal of interaction and even share a common domain model. The general idea behind this separation in components is reuse. However, the intended reuse is often not achieved, as other applications often tend to have just a slightly different need.</p>
<p>Furthermore, separation of an application into XML Web Service components comes at a very large price. Precious processing time is lost in (un)marshalling object trees to XML and back. A common way of reasoning is that adding a few more servers or caching requests and responses would solve the problem. Neither of these solutions, however, is quite elegant and should be kept as a last resort.</p>
<p>There is a more elegant solution to achieve loose coupling between components, without the (un)marshalling loss, while still maintaining the possibility to provide your &#8220;services&#8221; to any other external component. This solution is OSGi.</p>
<p>I will not get into too much detail about OSGi in this article, as there are many articles to be found about that, but here are some key features of  OSGi:</p>
<ul>
<li>The OSGi specification is defined by the OSGi Alliance [<a href="http://www.osgi.org" title="OSGi Alliance Website" target="_blank">www.osgi.org</a>];</li>
<li>A bundle (the OSGi application building block) is a black box for other bundles, except for the resources that have been explicitly exposed;</li>
<li>OSGi bundles can be installed, started, stopped and uninstalled at runtime;</li>
<li>Each bundle, when started, can provide one or more services. These services may come and go at runtime;</li>
<li>Bundles can use services without knowledge of their implementation. They can contain metadata that may be used to search a specific service;</li>
<li>Bundles are versioned. Multiple bundles may provide different versions of the same resources. The OSGi framework will resolve the dependencies perfectly;</li>
<li>An OSGi application runs completely inside the same JVM, making it very fast (comparing to Web Services or JMS).</li>
</ul>
<p>The strict visibility rules of the OSGi framework ensure that the loose coupling between components is maintained at all times. OSGi&#8217;s advanced class loading allows for several versions of the same bundle to be active at the same time. This makes it quite easy to make modifications in an application, while maintaining backwards compatibility. In fact, OSGi allows for an easy solution of the <a href="http://www.nljug.org/pages/events/content/jspring_2007/sessions/00003/" title="Web Service versioning with OSGi at JSpring 2007" target="_blank">Web Service Versioning dilemma</a>.</p>
<p>OSGi bundles run inside a single JVM, meaning that OSGi services are not exposed to external applications. However, since an OSGi service just provides an interface to an external user, it is easy to create another bundle that provides this OSGi service (when available) to the outside world as a Web Service. Or maybe as a JMS service. Or one for each. This means that we don&#8217;t loose processing time on unnecessary marshalling, but still keep the possibility to simply expose any service to the outside world, if the need comes along (and not by default as is the case with an XML WS).</p>
<p>To recap, besides just being a technologically interesting framework, OSGi offers interesting capabilities to be used in a SOA environment. One of these capabilities is the separation of an application in components that provide each other services. Although these services are not available outside the OSGi context, it is easy to create a bundle that exposes these OSGi services as e.g. Web Services or via JMS.</p>
<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http%3A%2F%2Fwww.gridshore.nl%2F2008%2F03%2F21%2Fservice-orientation-within-applications%2F&amp;title=Service%20orientation%20within%20applications&amp;t=2' height='25' width='155' frameborder='0' scrolling='no'></iframe></div></div><div style='clear:both'></div></div><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com -->]]></content:encoded>
			<wfw:commentRss>http://www.gridshore.nl/2008/03/21/service-orientation-within-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why are web services so different from an HTML user interface?</title>
		<link>http://www.gridshore.nl/2008/02/13/why-are-web-services-so-different-from-an-html-user-interface/</link>
		<comments>http://www.gridshore.nl/2008/02/13/why-are-web-services-so-different-from-an-html-user-interface/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 18:41:35 +0000</pubDate>
		<dc:creator>Allard</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.gridshore.nl/2008/02/13/why-are-web-services-so-different-from-an-html-user-interface/</guid>
		<description><![CDATA[<p>We all know how a typical web application is usually built up. The image at the side rougly displays the different layers that are to be found in an application. Typically, the user interface layer receives HTTP requests, calls one or more methods in the Business logic layer, and responds with an HTTP message [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gridshore.nl/wp-content/gui-application-layout.gif" alt="Typical architecture of a GUI application" align="right" height="155" width="222" />We all know how a typical web application is usually built up. The image at the side rougly displays the different layers that are to be found in an application. Typically, the user interface layer receives HTTP requests, calls one or more methods in the Business logic layer, and responds with an HTTP message containing HTML.</p>
<p>Nowadays, SOA has come along, and suddenly all enterprise architects want XML web services everywhere. For some reason, many think of SOA as a synonym for &#8220;everything must be a web service&#8221;. What SOA really is, is not the topic of this article. I want to discuss the position these web services get in the overall picture.</p>
<p><img src="http://www.gridshore.nl/wp-content/gui-and-ws-separated.gif" alt="Application design when GUI and WS are separated" align="left" height="296" width="220" />The &#8220;Business logic&#8221; layer could contain business services that are useful to other applications too. In that case, it might be an option to provide these business services to the &#8220;outside world&#8221; as XML Web Services. So, the user interface is separated from the rest of the application and replaced with a Web Services interface layer. The business logic is now available to all applications that need it. The user interface that had just been removed is now considered another application that uses the business logic layer through a web services layer.</p>
<p>On paper, it might not even look that ugly. There are, however several major downsides to this approach.</p>
<p>First of all, performance is decreased, as XML Web Service calls cost a lot of processing time. Not only marshalling the request and the response take a lot of time, but HTTP communication takes its toll too.</p>
<p>Something developers will notice, especially after the first release, is that this choice of architecture is difficult to maintain. Most changes that have been requested involve the user interface; a little more information here, something else there, etc. However, to get this information to the front-end, changes have to be made in the business logic, domain model and or the Web Service interface.</p>
<p>The third downside is that the &#8220;Business Logic&#8221; layer and the &#8220;User interface&#8221; layer are (often) functionally coupled. The main functions exposed in the view have almost a one-to-one mapping to business services. Splitting these two layers into different application would then sound inappropriate.</p>
<p>So why is this apparently homogeneous application split up into different components?</p>
<p>One thing I have heard is that this is the way SOA prescribes it should be done. I&#8217;ve read many documents and specifications, but I have never found a single one that says so. It might be obvious that I disagree.</p>
<p>Another excuse is &#8220;versioning&#8221;. For some reason, people think more of versioning as a problem than as an opportunity. When done right, versioning of a web service should be a big problem. But a more important question is: why should you version a service? Probably because the business rules in the business logic layer have changed. If that is the case, why keep the old version alive? It uses a deprecated business logic layer. Another reason to version is because the request/response model of the web service doesn&#8217;t provide all available information. That can be easily solved by adding either a new service, or an optional parameter to the existing request indicating an extended response is wanted. In my article about <a href="http://www.gridshore.nl/blog/index.php?/archives/68-Web-service-versioning-in-the-java-world.html" title="Web Service versioning in the Java world">Web Service versioning in Java</a>, I go more in-depth on ways services can be versioned (limiting to Java).</p>
<p>However, the most common excuse for the separation is reuse. &#8220;Maybe, in the future, more application might want to use this functionality too&#8221; is a sentence I have heard more than once too often. Will the business logic ever be used by another application? If that is the case, will the request/response model chosen sufficient for that application? Big chance that the answers are respectively &#8220;Most probably not&#8221; and &#8220;Very little chance&#8221;.</p>
<p>It is obvious that I am not fond of this solution. Not because I don&#8217;t think it really sounds right, but because I have dealt with this structure in my day to day work. Not somehting I would want to wish you.</p>
<p>I prefer to see the analogy between the User Interface (UI) layer and the Web Services (WS) layer. The UI presents an Business Logic interface to human users. HTML is usually the format of choice. A Web Service layer is exactly that, but then presents the same functionality in another format. For example as SOAP/XML messages. Or as JMS messages on a queue. And let&#8217;s not forget REST.</p>
<p><img src="http://www.gridshore.nl/wp-content/gui-and-ws-combined.gif" alt="GUI-and-WS-combined" align="right" height="148" width="211" />When you see the analogy between the UI and the WS interface, an architectural layout as the image on your right is a good option. In this picture, I have drawn a single &#8220;WS&#8221; box, but there could be more, depending on the types of services you would like to expose. I have, however, never seen more than one WS interface type in an application, and it usually is a SOAP based web service.</p>
<p>The application is still usable by other applications, accessible for other users and a lot easier to develop. There really aren&#8217;t any concessions to be made compared to the completely separated variant. Furthermore, the Web Service only has to be added at the point in time another application actualy needs it. This allows the request/response model to be designed in such a way that external application can take full advantage of the business logic.</p>
<p>I am conviced that the last option provides the most possibilities with the least concessions. And isn&#8217;t that exactly what we want? Or did I really miss something? In that case, please leave a comment and let me know.</p>
<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http%3A%2F%2Fwww.gridshore.nl%2F2008%2F02%2F13%2Fwhy-are-web-services-so-different-from-an-html-user-interface%2F&amp;title=Why%20are%20web%20services%20so%20different%20from%20an%20HTML%20user%20interface%3F&amp;t=2' height='25' width='155' frameborder='0' scrolling='no'></iframe></div></div><div style='clear:both'></div></div><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com -->]]></content:encoded>
			<wfw:commentRss>http://www.gridshore.nl/2008/02/13/why-are-web-services-so-different-from-an-html-user-interface/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Should we send out a SOS for SOA?</title>
		<link>http://www.gridshore.nl/2008/02/13/should-we-send-out-a-sos-for-soa/</link>
		<comments>http://www.gridshore.nl/2008/02/13/should-we-send-out-a-sos-for-soa/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 09:18:24 +0000</pubDate>
		<dc:creator>freddie</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.gridshore.nl/2008/02/13/should-we-send-out-a-sos-for-soa/</guid>
		<description><![CDATA[<p>This Post is all about laughing and not to worry to much about SOA, BPM, ROI, CEP. I came across &#8220;Greg the Architect&#8221; and his small movies underpin a lot of what i have written about lately.</p> <p>If you do not see the youtube movies in this page, you have to install the flash [...]]]></description>
			<content:encoded><![CDATA[<p>This Post is all about laughing and not to worry to much about SOA, BPM, ROI, CEP. I came across &#8220;Greg the Architect&#8221; and his small movies underpin a lot of what i have written about lately.</p>
<p>If you do not see the youtube movies in this page, you have to install the flash player. Go to the following url and follow the steps on the page. Come back here, refresh, and you should be fine. If you did install the flash player and you still cannot see anything, please close the browser and come back.<br />
<a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" target="_blank">flash website will open in pop-up</a></p>
<p>So let&#8217;s start with the Analysts. I have written about the danger of blindly following the analysts in my Blog &#8220;<a title="Do IT vendors have to buy analyst ratings? I suggest they do - if they want to survive" href="http://www.gridshore.nl/2008/01/31/do-it-vendors-have-to-buy-analyst-ratings-i-suggest-they-do-if-they-want-to-survive/">Do IT vendors have to buy analyst ratings? I suggest they do &#8211; if they want to survive</a>&#8220;. Greg seek the truth behind the industry Analyst&#8217;s recommendation. Will Greg be left hanging?</p>
<a href="http://www.gridshore.nl/2008/02/13/should-we-send-out-a-sos-for-soa/"><img src="http://img.youtube.com/vi/CnhEfxxhg34/default.jpg" width="130" height="97" border=0></a>
<p>After we have convinced our C-level we arrived in the middle of the vendor selection. After reading 20 whitepapers, getting 5 vendors in house, visiting two SOA congresses Panic comes to me. Find out what happens when Gret tries to swallow three different SOA pitches in one day. Will he save the day, or will Greg have to chck the project?</p>
<a href="http://www.gridshore.nl/2008/02/13/should-we-send-out-a-sos-for-soa/"><img src="http://img.youtube.com/vi/uOQcjvUHZ0k/default.jpg" width="130" height="97" border=0></a>
<p>We have down selected to one vendor and are in the middle of our drag and drop excercise to wire all those Services into a nice modelled Business Process, but wait&#8230; are there some problems? Does reality not comply to the marketing world of the vendor? Greg is concerned too that the SOA team can&#8217;t stay on target. He needs a vacation, but his cruise will have to wait as he needs to find some answers which his boss told him to find on this SOA Conference. Will Greg find the magic he needs to put his team back on course?</p>
<a href="http://www.gridshore.nl/2008/02/13/should-we-send-out-a-sos-for-soa/"><img src="http://img.youtube.com/vi/HHYZkpHn_pY/default.jpg" width="130" height="97" border=0></a>
<p>After our succesfull implementation of SOA and BPM with all these promises about Agililty, Flexibility, re-use the question comes from the same C-level to show the ROI. As written in my blog entries &#8220;<a title="Industrialization with BPM a Hoax we need People First!" href="http://www.gridshore.nl/2008/01/29/industrialization-with-bpm-a-hoax-we-need-people-first/">Industrialization with BPM a Hoax we need People First</a>!&#8221;, &#8220;<a title="What does Route Planning has to do with Business Process Management?" href="http://www.gridshore.nl/2008/02/07/what-does-route-planning-has-to-do-with-business-process-management/">What does Route Planning has to do with Business Process Management?&#8221;</a> i doubt seriously, if the promised ROI and agility will be achieved. Greg  is faced with the challenge &#8220;<strong><em>proving the ROI to the suits.&#8221;</em></strong> Will Greg deliver the goods? watch</p>
<a href="http://www.gridshore.nl/2008/02/13/should-we-send-out-a-sos-for-soa/"><img src="http://img.youtube.com/vi/DEc5zcJQ0l8/default.jpg" width="130" height="97" border=0></a>
<p>If you want to find more on &#8220;Greg the Architect&#8221; go to his homepage which can be found on: <a href="http://www.gregthearchitect.com/index.html">http://www.gregthearchitect.com/index.html</a></p>
<p>Hope you have enjoyed this blog item as much as i did <img src='http://www.gridshore.nl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http%3A%2F%2Fwww.gridshore.nl%2F2008%2F02%2F13%2Fshould-we-send-out-a-sos-for-soa%2F&amp;title=Should%20we%20send%20out%20a%20SOS%20for%20SOA%3F&amp;t=2' height='25' width='155' frameborder='0' scrolling='no'></iframe></div></div><div style='clear:both'></div></div><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com -->]]></content:encoded>
			<wfw:commentRss>http://www.gridshore.nl/2008/02/13/should-we-send-out-a-sos-for-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

