<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - soa tag</title>
  <link>http://www.codingthearchitecture.com/tags/soa/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 21 May 2012 09:41:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>SOA may be failing, but the approaches will live on</title>
    <link>http://www.codingthearchitecture.com/2009/09/10/soa_may_be_failing_but_the_approaches_will_live_on.html</link>
    
      
        <description>
          &lt;p&gt;
Recently there seem to be more mutterings about how &#034;SOA is dead&#034; or &#034;SOA is failing&#034;. From my perspective, I think that the rationale behind SOA is sound, as are the design principles (implementation independent loosely coupled services, reuse, etc) but adoption is way harder than anybody anticipated. Here are my key reasons.
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Focus on technology&lt;/b&gt;: many project teams went through a phase where they&#039;d buy in an Enterprise Service Bus or another Enterprise Application Integration technology and focus their minds on making everything talk in web services. We all know that SOA isn&#039;t inherently about web services, but if it wasn&#039;t XML it wasn&#039;t going to work. Crucially, SOA is about the business and this is the point that many people neglect. One of the first things to do with SOA is to step back from the technology and look at the overall business processes. Then, once you understand this, you can start to review the processes, improve them and decompose them into meaningful steps. &lt;i&gt;Then&lt;/i&gt; you can start mapping that onto the technology. With SOA, if you don&#039;t focus on the business, you miss out on the reuse opportunities.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Politics&lt;/b&gt;: I&#039;ve seen a lot of large organisations strive to centralise core parts of their business (e.g. reference data) but it never works. Politics always gets in the way, primarily because people don&#039;t like giving up control and disparate groups within an organisation rarely agree on anything. I once did some work for a large investment bank and they a fantastic opportunity to build a truly leading edge client-side dealing platform across FX, equities, fixed income, etc. Technically it was very feasible but the massive egos and politics got in the way. Even if an organisation did manage to centralise some of their key business services, there&#039;s still the need to appropriately advertise and version them using something like a &lt;a href=&#034;/2006/03/27/service_catalog.html&#034;&gt;service catalog&lt;/a&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
I regularly use the same approaches from SOA in &#034;non-SOA&#034; projects and find they are a very good way to come up with a well organised service-centric architecture that is easy to build, deploy and test. At the end of the day, everything seems to be one giant cycle. SOA may be going out of fashion now while everybody talks about cloud computing, but its principles will live on and I&#039;m sure it&#039;ll be back in another guise before we know it.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2009/09/10/soa_may_be_failing_but_the_approaches_will_live_on.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2009/09/10/soa_may_be_failing_but_the_approaches_will_live_on.html</guid>
    <pubDate>Thu, 10 Sep 2009 07:15:00 GMT</pubDate>
  </item>
  
  <item>
    <title>System Design and Reconciliation</title>
    <link>http://www.codingthearchitecture.com/2008/02/08/system_design_and_reconciliation.html</link>
    
      
        <description>
          &lt;p&gt;
Even those not working in Finance have probably heard about the &lt;a href=&#034;http://news.bbc.co.uk/1/hi/business/7208439.stm&#034;&gt;intriguing events&lt;/a&gt; in a large investment bank and the HUGE losses that have occurred.
&lt;/p&gt;&lt;p&gt;
The interesting comment from an IT and architecture point of view is the following:
&lt;/p&gt;
&lt;blockquote&gt;The trader responsible for the fraud had &#034;in-depth knowledge of the control procedures resulting from this former employment in the middle-office&#034;, the bank said.
&lt;/blockquote&gt;
&lt;p&gt;
I&#039;m sure the story and our perception of it will change as more facts emerge but  we can be certain that the banks internal security and control systems failed.
&lt;/p&gt;&lt;p&gt;
Many security and control terms such as authentication, authorization and auditing are probably familiar what about reconciliation? Consider a simple stock-taking example. The number of items delivered to a warehouse minus the number of items sold should tell you how many are still there. If it&#039;s less,  you may have a thief. ( If you&#039;ve ever been involved in a stock-take you may have seen many missing items - they tend to be small and valuable.) Stock taking is a physical example of reconciliation i.e do all the numbers add up.
&lt;/p&gt;&lt;p&gt;
Should you be doing this in a system of your own? If you have developed an online store do you periodically make sure that the number of orders to your website equals the number of payments received and items sent? It&#039;s very common for a system designer to assume this will be the case, as the data normally flows from one component to the next, but consider what happens if someone sends messages to your delivery system directly. They bypass your ordering and payment systems so there is no matching order or payment. This is likely to be an insider that knows the system well and you can lose a lot of money as you send out goods without being paid. These kind of issues are increasingly likely as designers move away from monolithic systems to SOAs.
&lt;/p&gt;&lt;p&gt;
Apart from internal checks between your own systems you can reconcile with external ones. In securities trading, we usually get a list of trades from the markets and exchanges at the end of he day and reconcile against the banks internal list of trades. This should show if a trader has been placing trades they shouldn&#039;t have (or failing to place those they should).
&lt;/p&gt;&lt;p&gt;
It&#039;s important to make sure that the main system and the reconciliation system are separate otherwise an error or fraud in one could effect the other. (Reconciliation is often simple and can be done in something like a script). 
&lt;/p&gt;&lt;p&gt;
Finally, you should remember that regression testing is actually a form of reconciliation between different versions of systems, so you may be doing some already!
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/02/08/system_design_and_reconciliation.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/02/08/system_design_and_reconciliation.html</guid>
    <pubDate>Fri, 08 Feb 2008 22:06:20 GMT</pubDate>
  </item>
  
  <item>
    <title>What about the application tier?!</title>
    <link>http://www.codingthearchitecture.com/2007/09/24/what_about_the_application_tier.html</link>
    
      
        <description>
          &lt;p&gt;
I&#039;ve recently become involved in a project with a very clear idea of its functional and data requirements - so much so that the presentation technology has been selected and the database vendor and schema determined. The suppliers of these have also been chosen and brought in. So, you&#039;ve got your data, you&#039;ve got your user interface, all you&#039;ve got to do is connect the two.
&lt;/p&gt;
&lt;p&gt;
At first glance the omission of an application tier is just an oversight; the majority of functions can be delegated to the database: little more than a bit of remoting and a bit of transformation. On closer inspection it becomes evident that the hole between the presentation and the data is more than just technical. In fact, it&#039;s a dumping ground for all the requirements that didn&#039;t fit neatly into either of the other two. It&#039;s the region in which misaligned assumptions are going to be magically ironed out. For example, the presentation tier assumes (or at least prefers) synchronous calls whereas the database would be better addressed asynchronously. Sure the app tier could hide the asynchronous nature of the database call from the presentation tier but that&#039;s simply patching over the hole.
&lt;/p&gt;
&lt;p&gt;
In reality, the omission of the application tier is a clear sign that the exciting technology choices have led to a project starting without a clear system architecture. It sounds to me like another case of trying to introduce architecture during implementation.
&lt;/p&gt;
&lt;p&gt;
I&#039;m not sure you can architect and implement at the same time - there are always some aspects of the architecture such as technology, team and methodology selection that need prior thought.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2007/09/24/what_about_the_application_tier.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/09/24/what_about_the_application_tier.html</guid>
    <pubDate>Mon, 24 Sep 2007 15:05:32 GMT</pubDate>
  </item>
  
  <item>
    <title>Book Review - Understanding Enterprise SOA</title>
    <link>http://www.codingthearchitecture.com/2006/05/02/book_review_understanding_enterprise_soa.html</link>
    
      
        <description>
          &lt;p&gt;
If ever there was an overused three-letter acronym, SOA would be it. Sadly few people that use the acronym actually
understand what it really means. Managers think that it is the answer to &lt;i&gt;all&lt;/i&gt; of their problems (&#034;Let&#039;s just
get one of those SOA things in&#034;), and developers assume that it is &lt;i&gt;just&lt;/i&gt; exposing everything as web services
willy nilly. This book aims to cut through the hype and get to the truth behind the acronym.
&lt;/p&gt;
&lt;p&gt;
Initially it seems that the book is targeted towards management types, but it soon becomes apparent that there is
plenty in there for the technologists amongst us. Sure, there are no implementation examples, but this means that
the book is able to concentrate on the real issues behind SOA rather than the Hello World examples that so many books
turn to.
&lt;/p&gt;
&lt;p&gt;
The book is told as the story of the IT sprawl that is Titan Insurance. Titan face the same problem as a lot of large
IT organisations in that they have a lot of disparate systems that all need to work together to be effective. The
book presents the case for creating an SOA based on Web services standards to achieve the integration, and presents
many compelling arguments as the why this is the right way to go. The use of a recurring example through the book
helps to give good context to the explanations which is something that is missing from so many IT books at this
level.
&lt;/p&gt;
&lt;p&gt;
As an architect trying to sell the SOA dream, this book presents &#034;ready-canned&#034; arguments that you can use, and
plenty of technical information to back it up. This book explores both the technical and organisational issues behind
SOA and is not afraid to highlight the parts of the puzzle that are not quite ready for the prime-time yet, and
preempts most of the questions that people will typically ask you about SOA.
&lt;/p&gt;
&lt;p&gt;
Rarely is an IT book a compelling read, but some how this book manages to be just that. I believe that I gained
something from each and every chapter in this book. I think that the primary thing that I have learnt from this book is that employing an SOA is a great way to reduce coupling between systems (be they legacy or not) and also a good way to avoid the vendor lock-in associated with other EAI techniques. I also learnt that there is a fair way to go in some areas before this is an &#034;easy&#034; way to go, mainly regarding security.
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
If you are a developer looking to understand the nuts and bolts of web-services, then this book is certainly not for
you. If, however, you are a looking to understand the hype behind SOA and to be able to have a reasoned argument for
or against it&#039;s adoption, then you should give this book a read.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2006/05/02/book_review_understanding_enterprise_soa.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/05/02/book_review_understanding_enterprise_soa.html</guid>
    <pubDate>Tue, 02 May 2006 15:31:40 GMT</pubDate>
  </item>
  
  <item>
    <title>Service catalog</title>
    <link>http://www.codingthearchitecture.com/2006/03/27/service_catalog.html</link>
    
      
        <description>
          &lt;p&gt;
Having been involved in an SOA project, one of the lessons that I&#039;ve learnt is that we need to be far smarter in the way that we manage, organise and reuse services. One of the key promises of SOA is reuse on a much more granular level than one could ever hope to achieve with pure object oriented techniques, but my experience suggests that reuse isn&#039;t something that you get for free. Particularly, reuse problems arise when others within your team|department|enterprise don&#039;t realise that you&#039;ve already defined and/or built a particular service that they could reuse. How do you solve this? Well I think that the answer to this is two-fold.
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Define&lt;/b&gt; : ensure your service interfaces are agreed upon up-front.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Catalog&lt;/b&gt; : document the basics of each service somewhere.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
The first part (service definition) won&#039;t come as any surprise, but it&#039;s a prerequisite for the second part, which is all about building a service catalog. One of the hardest parts of SOA is actually defining the services in the first place and, once this is done, cataloguing them is fairly straightforward. However, without this last step, how do you easily work out what services are available to you and the operations they provide. 
&lt;/p&gt;

&lt;p&gt;
First of all, what sort of information is it useful to capture in a service catalog? My initial suggestion would be as follows.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service name&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Type of service (e.g. business, application specific, data, etc)&lt;/li&gt;
&lt;li&gt;Service level agreements and other quality of service characteristics (e.g. performance, scalability, security, availability, etc)&lt;/li&gt;
&lt;li&gt;For each service operation
&lt;ul&gt;
&lt;li&gt;Operation name&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Request/response messages | input/output parameters and possible errors&lt;/li&gt;
&lt;li&gt;Pre-conditions&lt;/li&gt;
&lt;li&gt;Post-conditions&lt;/li&gt;
&lt;li&gt;Whether the operation is idempotent&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
So what alternatives do we have for building a service catalog? In the case of web services, one option is to augment the WSDL used to define the services, perhaps performing an XSLT transformation on the document to make it more readable, perhaps in a HTML format. This might work if you have control over the generation of your WSDL, but many tools auto-generate it for you. Another option is to build your service catalog within a UML model. This is the approach that I&#039;ve seen tried and while it&#039;s easy to define services, their operations and the common view of data that those operations work upon, some of the other aspects are harder to document. Well, they&#039;re not harder to document because most modeling tools support the notion of adding your own metadata to your classes. It&#039;s finding the information that is hard. Ideally it should be be readily available and people shouldn&#039;t have to click through lots of dialogs to find this &#034;hidden&#034; metadata. Unless you can get some good reports out of your modeling tool of choice, I&#039;d be tempted not to use it for this purpose.
&lt;/p&gt;

&lt;p&gt;
Ultimately, I think a simple text/HTML file or Word document is the best option because it&#039;s more easily accessible to all types of users, including those on the business and technical sides. Of course, this doesn&#039;t mean that you need to manually create it. If you can automatically extract information from your UML model|WSDL|annotations in Java implementations|etc then you&#039;ll spend less effort keeping the catalog up to date.
&lt;/p&gt;

&lt;p&gt;
What do you think? If you&#039;ve used something like a service catalog, what information did it capture and how?
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you share software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2006/03/27/service_catalog.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/03/27/service_catalog.html</guid>
    <pubDate>Mon, 27 Mar 2006 19:02:01 GMT</pubDate>
  </item>
  
  <item>
    <title>Understanding Enterprise SOA</title>
    <link>http://www.codingthearchitecture.com/2006/03/08/understanding_enterprise_soa.html</link>
    
      
        <description>
          &lt;p&gt;
The Register have just published &lt;a href=&#034;http://www.regdeveloper.co.uk/2006/03/08/understanding_enterprise_soa/&#034;&gt;a review of Manning&#039;s Understanding Enterprise SOA&lt;/a&gt;. Their verdict?
&lt;/p&gt;

&lt;blockquote&gt;
For developers looking to get to grips with the nuts and bolts of SOAP, REST and the, er, rest, this isn&#039;t the place to look for details. This is decidedly not a book for those about to cut code. However, if you want to make sense of all of the SOA fuss and how it fits in with the web services you&#039;re crafting then this is definitely a good place to start.
&lt;/blockquote&gt;

&lt;p&gt;
I wonder what &lt;a href=&#034;http://www.thepragmaticarchitect.com/2006/02/06/understanding_enterprise_soa.html&#034;&gt;Sam will think of it&lt;/a&gt;.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2006/03/08/understanding_enterprise_soa.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/03/08/understanding_enterprise_soa.html</guid>
    <pubDate>Wed, 08 Mar 2006 21:32:03 GMT</pubDate>
  </item>
  
  <item>
    <title>Service dependencies</title>
    <link>http://www.codingthearchitecture.com/2006/03/02/service_dependencies.html</link>
    
      
        <description>
          &lt;p&gt;
Dan Creswell has an interesting take on how he sees &lt;a href=&#034;http://jroller.com/page/dancres?entry=service_aggregation&#034;&gt;service aggregation&lt;/a&gt; panning out in the future, particularly with respect to the problems around service dependencies.
&lt;/p&gt;

&lt;blockquote&gt;
There is much talk about aggregating services together with a lot of excitement around the idea of combining services supplied by other enterprises. At the base level this seems like an exciting proposition and it&#039;s possible to realize this promise now but I think there are some interesting issues just over the horizon.
&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;
Assuming that you&#039;ve managed to wire all these services together successfully, you&#039;ve now substantially widened your network of dependencies. Many of the factors in question are now out of your control, you are reliant on the service&#039;s vendor to &#034;do the right thing&#034;. This is an order of magnitude worse than being reliant on some other team&#039;s services within a single enterprise.
&lt;/blockquote&gt;

&lt;p&gt;
Personally, this makes me think that (1) it&#039;s even more important to define &lt;i&gt;public&lt;/i&gt; services at the correct level of granularity and (2) you need to think carefully about designing service interfaces that are seamlessly upgradeable. Certainly some food for thought.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2006/03/02/service_dependencies.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/03/02/service_dependencies.html</guid>
    <pubDate>Thu, 02 Mar 2006 17:49:58 GMT</pubDate>
  </item>
  
  <item>
    <title>Service-Oriented Architecture Compass</title>
    <link>http://www.codingthearchitecture.com/2006/02/07/service_oriented_architecture_compass.html</link>
    
      
        <description>
          &lt;p&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/isbn-0131870025.jpg&#034; alt=&#034;Service-Oriented Architecture Compass: Business Value, Planning, and Enterprise Roadmap&#034; align=&#034;right&#034; /&gt;
I&#039;ve just finished reading &lt;a href=&#034;http://www.ibmpressbooks.com/bookstore/product.asp?isbn=0131870025&#034;&gt;Service-Oriented Architecture Compass : Business Value, Planning and Enterprise Roadmap&lt;/a&gt; for JavaRanch and the review has been posed &lt;a href=&#034;http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&amp;f=49&amp;t=000680&#034;&gt;here&lt;/a&gt;. My summary? Here it is.
&lt;/p&gt;

&lt;blockquote&gt;
Overall, if you&#039;re an architect looking at SOA now or planning to in the future, this book will help you clarify your thoughts and steer you through the brave new world of a service oriented architecture. It comes highly recommended.
&lt;/blockquote&gt;

&lt;p&gt;
This is a great book and covers a much broader range of topics than how to build an SOA with [Java|.NET|another technology]. It&#039;ll be interesting to see how this book stacks up to the one that &lt;a href=&#034;http://www.thepragmaticarchitect.com/2006/02/06/understanding_enterprise_soa.html&#034;&gt;Sam is reviewing&lt;/a&gt;. If you&#039;ve read this book, what did you think?
&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2006/02/07/service_oriented_architecture_compass.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/02/07/service_oriented_architecture_compass.html</guid>
    <pubDate>Tue, 07 Feb 2006 10:39:29 GMT</pubDate>
  </item>
  
  </channel>
</rss>

