Friday, January 30, 2009

SOA Contract-first Design

I was once questioned "Why should we care about contract-first design? It takes time. Look how quick I can do code-first approach". And let me attempt to answer that. Carefully designed contract-first design lasts years with minimal changes saving time effort and money.
  • If you do not design the contracts between services first, there will be complex integration problems between your services.
  • Existing code was not designed to exposed as services. Therefore operations will be either too fine grained or course grained. If the service interface has too fine grained operations there will too many messages going back and forth. If there was a contract design phase this can be eliminated.If the service has too coarse grained operations, it may not yield the intermediate results will be lost.
  • A good services have independent atomic operations.
If WSDL is what keeping you away from contract first design, well ... now there are free opensource tools that can write the WSDL for you. Carefully design the contract as a Java Interface and use one of these tools to generate the WSDL file. WSDL2Java in Axis2 is one such tool.

Wednesday, January 21, 2009

Java Caching Implementations

I had to do some database improvements by caching user permissions. Java caching is covered by JSR 107. I started looking at java opensource caching implementations. I found couple of products.

These are the first impressions I got while evaluating different implementations.
  • Apache JCS - Still requires EDU.oswego.cs.dl.util.concurrent
  • Ehcache - I managed to get it running on the first poc

So I settled down for Ehcache and right now I am very happy with it.