How to allow for modular development while still running in same JVM?

Posted by Marcus on Stack Overflow See other posts from Stack Overflow or by Marcus
Published on 2010-03-14T20:43:18Z Indexed on 2010/03/14 20:45 UTC
Read the original article Hit count: 275

Our current app runs in a single JVM.

We are now splitting up the app into separate logical services where each service runs in its own JVM.

The split is being done to allow a single service to be modified and deployed without impacting the entire system. This reduces the need to QA the entire system - just need to QA the interaction with the service being changed.

For interservice communication we use a combination of REST, an MQ system bus, and database views.

What I don't like about this:

  • REST means we have to marshal data to/from XML
  • DB views couple the systems together which defeats the whole concept of separate services
  • MQ / system bus is added complexity
  • There is inevitably some code duplication between services
  • You have set up n JBoss server configurations, we have to do n number of deployments, n number of set up scripts, etc, etc.

Is there a better way to structure an internal application to allow modular development and deployment while allowing the app to run in a single JVM (and achieving the associated benefits)?

© Stack Overflow or respective owner

Related posts about best-practices

Related posts about architecture