Library Dependency and SOA Modular Development

26. February 2009

There always has been been promises to solve tech problems since ever; although, sometimes a solution creates another problem, first we had monolithic applications where all code has to be written by the same team; from I/O access to Presentation; then we had libraries to concentrate common pieces of code for a particular task, but these libraries created to be reuse had interdependencies with other libraries of code, then to solve these interdependencies we create versioned libraries and ship them in a single file, but as we had versioning we start to have problems with libraries having dependencies for a particular version and any new version might break the code; thus our code is still tightly coupled; even though, we have tried all tricks in the book (and some that aren’t in the book) to decouple our modules.


One common approach is to use patterns such factories to decouple the modules and leave the factory to decide (based on configuration) which “module” to deliver, and yet still once the object has been delivered it cannot be retaken or change into some new version; despite all these efforts, one fundamental problem remains: “how to decouple our modules and make them resilient to change in other modules”. Since 1999 there has been efforts from a group to define a standard for a framework capable of this decoupling, it first started as a solution for device communication where its applicability is obvious (i.e. in a Smart House where appliances come a goes any time) where the modules should be self aware of each other and auto-configurable.
Nowadays this framework is making its way into the enterprise application world to allow a SOA environment to exists in a single JVM or distributed JVMs, making modules reusable, secure, distributed, resilient, environment aware, self configurable, versioned and more; it varies from WS SOA in not requiring a transport layer removing this overhead and making services resilient. This framework its defined by OSGi Alliance and they provide the detailed specs for the framework but several implementations can be found both in commercial and open source versions, some examples are:

http://www.knopflerfish.org/
http://www.eclipse.org/equinox/
http://felix.apache.org/

A promise of a SOA environment without the overhead of the transport layer and a build in ability to react to failures and code changes is a great improvement it definitely adds a great number of advantages for (at last) modular development. We definitely should keep an eye in the releases of implementations of RFCs from this group.

Allan Cascante @ 05:37

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tips & Examples, Comentarios , ,