As I dive deeper into the exploration of this framework, here are some observations and please correct me if I am wrong.
- The management of JVMs could and should not be done by the framework. Application server scalability with load balancing at the app server tier, database load balancing with data tier and grids of databases (e.g. mongo, google big table, oracle 11G grid, mysql clustering) can handle very advanced write clustering and read too. However a write db could be relational and the read could be search/analytics friendly like Lucene
- Spring does a good job of giving piece parts to integrate non VM centric frameworks
- I see the XStream solutions may require Executor type management of multiple VMs on multiple nodes. I think embedding that type fo logic in the framework will raise a red flag for lot of enterprises who rely on standard scaling through horizontal technologies and not app framework/code specific.
- Other potential solution for eventbus is leveraging Active MQ/Rabbit MQ for guaranteed message delivery to endpoints.
- I think default spring plug-ability would really be cool in addition to what you have and staying away from managing synching between VMs.
- Webapp load balancing with session affinity and hardware/software load balancers is another way to consider the load distribution across incoming requests to VMs, From there writes could be farmed out to a db cluster for write and read via persistent queue cluster/bus on something like Active MQ/Rabbit MQ.
Just brainstorming…
Would like to understand your thought and hypothesis to make this solutions JVM aware, rather than a overlay on top of popular technologies like Spring and spring projects, (Integration, batch, spring mvc, spring -ws, Active MQ, Db clustering, Lucene for Read access indexing etc). The adoption of these technolgies is widespread in fortune 500 enterprise. The plug-ability and non proprietary horizontal scaling capabilities of this framework will be a key driver for adoption and migration push of existing and new apps in this direction.
Welcome your thoughts on this subject. This is really good work on CQRS concept in the Java world.