Saturday, September 08, 2007

SOA and data

Nick Malik posted an article the other day titled: SOA drives an odd data model. As an SOA-architect you should read it. I recommend to read all of his postings as he has great insights. If there is one mandatory blog on the SOA-EDA subject to subscribe to, it is this one.

My own thoughts on the subject of SOA and data is (in short and generalized):

  • Data should be modeled within the boundaries of a service. This principle helps in determining the right level of granularity of the services.
  • Also data persistency should be organized within the boundaries of a service.
  • This may lead to redundant data as an architectural principle, which is right to maintain independency.
  • Event-driven architecture principles are at the basis of keeping the redundant data in sync.


Libor SOUCEK said...


Your thoughts on data in SOA might not be good way for every scenario.

In the case one service from two cooperating services uses most of data from other service and needs to store them persistently there is more than reasonable approach share DB tables as well (i.e. think of purchase order with referenced product definition). Certainly you can only do that under certain rules. The most important ones are that DB does not have implemented any business logic on shared data part and shared data are quite complex to persistently store. You will also need same DAL to retrieve data from DB on both services.

Main advantage of this approach is that simplified DB upgrade, data management when developed and operation cost.

I agree with Nick Malik conclusion not to do sharing DB data on purchase and invoice header to be clear.


Jack said...

@libor soucek,

You are right, no single solution fits every scenario. In the case of SOA and data it is a matter of granularity. I am talking about services at the top-level of SOA where EDA should be the communication pattern. Of course at the lower levels shared data and shared services are better (in most cases).

Anonymous said...

My feeling is that EDA is much more information focused than SOA which should make EDA more business oriented. What is your opinion on this?