Wednesday, January 17, 2007
« If there is a vanity mirror behind the d... | Main | ASP.Net Controls, Part 1: Web User Cont... »

Oddly enough, this blog post is to remind me of a discussion I had with a friend tonight about SOA;

Here's one to not tackle after pork, sausage, squash and cabbage (no, really! *burp*): Does it count if it is not over SOAP Web Services?  What if your services are in the same app domain as in a plugin architecture?

The benchmark I lean on here is:  If our systems agree on schema & contract over classes & data then we are on the path to SOA.

Which brings us back to Jean Paul de Sousa.  The story of the small ISV in the corporate space can be -to lean on a canonical example- recieving a requiment like: Here's our definition of "The Customer" <insert schema here>. 

The good news is for the ISV maybe I don't care how you store your customer, so long as the system boundaries talk with respect to the agreed on schema for a customer.  The bad news is for, again to pick on a common example, what if wearing the ISV hat I store the customer_name as one field, however "The Customer" definition has it as first_name & last_name.

As the ISV, the temptation is to split our customer_name field at the service boundary translation code on the first occurance of space, so that "John Smith" becomes "John" "Smith".  "Jean Paul de Sousa" however should be split on the second space! 

My ETL experience and ponderings, coupled with the non-trivial digestion task I am faced with, bring me to the conclusion that this isn't a new problem at all!  Just a new place for an old problem to live.  Awesome.  Schema and contract it is ;-D

Listening To: Almost Crimes by Broken Social Scene from You Forgot it in People

Wednesday, January 17, 2007 12:42:37 PM (AUS Eastern Standard Time, UTC+10:00)
So what if I wanted to sell a product which did statistical analysis on your financial system? In a plugin architecture the analysis whiz through the data because participates in the same domain as the application. All that you need to do is write a plugin contract.

In a SOA I would have to transfer that data in and out of the domain. This would require additional hardware, configuration and support. It's like the difference between writing a filter for tcpdump and deciding to copy every packet and send it to a network analyzer. It's kind of pointless to buy a network analyzer if you're running tcpdump.

My own example is when I wrote some SPECT (Single Photon Emission Computed Tomography) applications. I did it SOA style by transferring (TCP) the preprocessed data to my application and then sending post processed data back. The problem came when we got a PET/CT and the data increased by an order of magnitude. I tried the same approach and it brought the workstation to it's knees.

I think that the decision for SOA should consider in what way the application may scale. In any case there is no reason why a well-designed product could not be ported from SOA to a plugin architecture and vice versa. So, it's all a bit of a moot point.
Robbie
Wednesday, January 17, 2007 12:47:29 PM (AUS Eastern Standard Time, UTC+10:00)

Listening to: Hope and Validation by Bernard Fanning from Tea & Sympathy

Currently writing contracts (hope) and unit tests (validation).
Robbie
Comments are closed.