{"id":390,"date":"2005-11-07T17:07:24","date_gmt":"2005-11-08T00:07:24","guid":{"rendered":"http:\/\/www.redmonk.com\/jgovernor\/wp\/?p=390"},"modified":"2005-11-07T17:07:24","modified_gmt":"2005-11-08T00:07:24","slug":"on-adobe-soa-doh-and-several-things-to-fire-an-architect-for","status":"publish","type":"post","link":"https:\/\/redmonk.com\/jgovernor\/on-adobe-soa-doh-and-several-things-to-fire-an-architect-for\/","title":{"rendered":"On Adobe, SOA D&#8217;OH! and Several Things To Fire An Architect For"},"content":{"rendered":"<p><P>The Redmonkers are <A href=\"http:\/\/www.redmonk.com\/jgovernor\/archives\/000811.html\">big<\/A> fans of Adobe&#8217;s Duane Nickull and his &#8220;<A href=\"http:\/\/www.redmonk.com\/sogrady\/archives\/000890.html\">cosmic genius<\/A>&#8220;, so its pleasing to know that he has finally joined the conversation, <A href=\"http:\/\/technoracle.blogspot.com\/\">here<\/A>. [For those of you that don&#8217;t know already,&nbsp;Adobe also has some pretty nifty <A href=\"http:\/\/blogs.adobe.com\/\">developer blogs<\/A>&#8230;&nbsp;<A href=\"http:\/\/blogs.adobe.com\/mattm\/\">Matt McKenzie<\/A> is certainly worth subscribing to, if you&#8217;re interested in Adobe&#8217;s push into the business process space.]<\/P><P>But what do Adobe bloggers have to do with firing architects? Duane, in his latest post on <A href=\"http:\/\/technoracle.blogspot.com\/2005\/11\/anti-patterns-for-soa.html\">Anti-Patterns for SOA<\/A>, argues thusly, in what amounts to a neat primer on best practices in service invocation and granularity.<\/P><BLOCKQUOTE>  <P><STRONG>This introduces several things that I would fire   an architect for<\/STRONG>. <\/P>  <P>First &#150; it mixes two tasks into one   process. If something goes wrong, the service consumer will have great   difficulty knowing where things went wrong. The service consumer   also cannot accurately know the state of the service call since it would   likely have no idea when the service passed the work to the transformation   component.<\/P>  <P>Secondly, it also blurs two unique   functions into one. This lessens the probability of uncomplicated   reuse but building unnecessarily complex interfaces. The service   interface, instead of handling simple requests, now has to handle requests   overloaded with details of where to forward things, what protocol to use and   what instructions to forward. Inelegant. <\/P>  <P>This scenario also introduces another   potentially unhealthy risk &#150; the service does not know if the transformation   service is even available when it accepts the service request.   The Service consumer may get some form of acknowledgement back   from the service leading it to believe its request is being processed when in   fact it cannot be completed. This would become much more complex   in the real world if you layered protocols like WS-RX over top of the   transactions.<\/P>  <P>Finally &#8211; As with OO programming and   analysis, object should break large jobs down into several smaller tasks which   can be completed and orchestrated at will. The third example   above is akin to procedural web services. It also introduces   dependencies between three components which may result in problems maintaining   the system.<\/P><\/BLOCKQUOTE><P>I have a feeling that if enterprises followed Duane&#8217;s firing policies they would end up well short of architects. But&nbsp;what does all this have to do with Homer Simpson? Would anyone notice if you sent them home? just kidding folks&#8230;<\/P><P>IBM&#8217;s Bobby Woolf has been talking about design patterns that are so inherently smart you hit your head with your palm and say: &#8220;Of course&#8230;&#8221; He calls these&nbsp;<!--StartFragment -->&#8220;<A href=\"http:\/\/www-128.ibm.com\/developerworks\/blogs\/dw_blog_comments.jspa?blog=392&amp;entry=98913\">Therefore, BOOM<\/A>!&#8221; Its a moment of cognition, an aha moment, a time when you actually learn something really important about software development. [The epiphany may even be driven by an <A href=\"http:\/\/www.redmonk.com\/sogrady\/archives\/000264.html\">anecdote or story or contrarian thought<\/A>.]<\/P><BLOCKQUOTE>  <P><!--StartFragment -->A pattern is not an experience report, and it&#8217;s not an   account of a clever trick; it&#8217;s a <A href=\"http:\/\/en.wikipedia.org\/wiki\/Vulcan_%28Star_Trek%29#Mind_Melds\">mind-meld<\/A>   from an expert to a novice of what works well.<\/P><\/BLOCKQUOTE><P>There is however a corrolary, naturally called &#8220;<A href=\"http:\/\/www-128.ibm.com\/developerworks\/blogs\/dw_blog.jspa?blog=392\">Therefore, D&#8217;OH!&#8221;<\/A>&nbsp;You know what Bobby is talking about&#8230;<\/P><P>So with respect to feedback for Duane, given that he asked, I would suggest it might be useful to map your patterns to RESTFUL thinking, which they speak to in terms of simplicity and intentional opacity. Also &#8211; why not explicitly call out that anti patterns concern interdependency &#8211; &#8220;don&#8217;t call that, because it will make the service brittle&#8221;.<\/P><P>Why do I like Duane&#8217;s thoughts on the subject? Because they talk to what I believe is going to become an increasingly important issue in SOA- the granularity of the service. Granularity of service is very much a 3 Bears issue &#8211; this service is too granular, this service is not granular enough, ah this service is just right in granularity. I <A href=\"http:\/\/mainframe.typepad.com\/blog\/2005\/11\/soa_is_going_to.html\">dinged Zapthink<\/A> on this just the other day.<\/P><P>Who else should I call out for Duane and the patterns cluster? <A href=\"http:\/\/www-128.ibm.com\/developerworks\/blogs\/dw_blog.jspa?blog=317\">Grady Booch<\/A> is an obvious candidate&nbsp;&#8211; how about the <A href=\"http:\/\/www.amazon.com\/gp\/product\/0974312002\/002-7669568-3793658?v=glance&amp;n=283155&amp;v=glance\">design patterns of dating<\/A>, which he pointed to recently? I am pretty sure we have all had anti-pattern experience there, too.<\/P><P>A couple of things to ponder then before I sign off.<\/P><P>Is SOA D&#8217;OH like playdough? And would you rather be a comic genius or a cosmic genius? I am leaning to the former.<!--StartFragment --><\/P><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Redmonkers are big fans of Adobe&#8217;s Duane Nickull and his &#8220;cosmic genius&#8220;, so its pleasing to know that he has finally joined the conversation, here. [For those of you that don&#8217;t know already,&nbsp;Adobe also has some pretty nifty developer blogs&#8230;&nbsp;Matt McKenzie is certainly worth subscribing to, if you&#8217;re interested in Adobe&#8217;s push into the<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[1],"tags":[],"class_list":["post-390","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9wfjh-6i","_links":{"self":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/posts\/390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/comments?post=390"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/posts\/390\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/media?parent=390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/categories?post=390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/tags?post=390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}