Cool… Here are some thoughts on the what and how
- seriously look at the akka Actor heirarchy model (inspired by Erlang) for “let it crash” into Axon core by wrapping Command Handlers, Aggregate roots, Entitty, Sagas and POJO event handler type actors (maybe persisestence actors also) into the underlying core
- Leverage cluster capability of the akka framework however not visible to the Axon Core API (this would be beautiful if possible)
- The mailbox pattern for events enabling snapshotting/event sourcing on the Actor subsystem heirarchy gives true reestart and let it crash capability on the actor subsystem. Lot of these type capabilities are core to akka and could simplify Axon further.
Seriously encourage you to deep dive into AKKA
http://doc.akka.io/docs/akka/2.3.5/java.html?_ga=1.209799185.566199763.1409683514
with Netty under the covers and compare the auto scaling and auto healing capabilities of a futuristic Axon with these capabilities vs current Axon. I think Akka could beautiful map to the axxon core under the hood and give this promise of infinite scalability and healing with streaming end point bootsrapping and capability for true async clients for the best performant architecture and with fault tolerance and resiliency at all levels.
I think there needs to be a layer for Command down heirarchies which could be blocking or streaming depending on clients. This is where the REST endpoints or websocket type async channels for commands/queries also can get very interesting with a full DDD/CQRS pattern and some kind of addon play module for Axon maybe. Also bootstrapping Axon without servlets and threading challenges would be very powerful.
I strongly feel that the DDD/CQRS design patterns are so powerful for designing large software systems but this type of scalability would take the solution to the next level. Also, event sourcing may be easier with akka messages under the hood and akka persistence technology.
Also, heavy Spring transacting can be optional or removed for blocking and maybe two modes for Axon where failure for heirarchy (faill all, fail one/restart) vs transactions would be the future direction where transactions are headed. They even have a reactive driver for Mongodb to do async non blocking persistence.
These are some initial thoughts. Will continue to read more… however I think something like this a best of two worlds could be market disruptive and game changing for the enterprise systems space. Almost too good to be true.
I think the Axon abstractions are loose enough for underlying core and starting to build this kind of control hierarchy of actors for Axon and with Event sourcing and immutable events which is core of the reactive strategy and also core to Axon and DDD/CQRS.
Cheers!