Scalable Architecture of Cloud Application
Based on CQRS and Event Sourcing
Andrzej Dębski, Bartłomiej Szczepanik
project timeline
-
11/2013 - Master thesis proposal
-
02/2014 - Started working on application on-site in Berlin
-
03/06/2014 - first presentation at AGH
-
10/09/2014 - presentation for PaaSage technical board
-
01/10/2014 - abstract of the first whitepaper
-
28/10/2014 - CGW'14 presentation
-
early 11/2014 - finished implementation
-
mid 11/2014 - first whitepaper finished
-
11/2014-02/2015 - applying for various conferences
-
mid 11/2014 - start research on causal consistency
-
12/2014 - assemble master thesis
THESIS
CQRS+ES-based applications are highly scalable.
THESIS goals
-
Build highly scalable and distributed application
-
Implement CQRS + ES architecture
- Evaluate scalability
we need horizontal scalability
Reactive programming
www.reactivemanifesto.org
Domain-driven design
- Set of strategic and tactical patterns
in software engineering
- More and more popular
- Fits well with reactive programming - commands & events
-
All business logic resides in the "domain model"
Command-query responsibility segregation (CQRS)
Application business requirements
- Flight scheduling service
- Legs and airplane rotations
- Schedule validity checks
- Simple domain
- Focus on architecture
CQRS+ES available solutions
- Axon framework
- akka-persistence
- EventStore by Greg Young
-
Jdon frameworkj - dead?
- Lokad.CQRS - already dead
- ncqrs - already dead
-
handmade
Application architecture
Write model scalability
TOOLS
-
Ansible
- Kamon
- Zipkin
- Akka tracing
- Gatling
- Akka clustering JMX
- Visual VM
- SBT
MAIN CHALLENGES
-
Event sourcing
- solution: akka-persistence
- Replayable event bus
- solution: own on top of Kafka and Cassandra
- Load balancing
- solution: akka-clustering routers
- Write model distribution
- solution: akka-cluster-sharding
current progress
-
CQRS + ES architecture
- Neo4j read model
- Most of business logic implemented
- Tackled lots of technical problems
-
Read model scalability evaluation done
-
Write model distributed, not tested yet
- CGW'14 presentation
FUTURE work
- Full-fledged white paper
- Causal consistency research
- Integration with PaaSage
- Detailed evaluation of the architecture
SCALABLE ARCHITECTURE OF CLOUD APPLICATION
BASED ON CQRS AND EVENT SOURCING
Andrzej Dębski
andrzejdebski91 @ gmail.com
Bartłomiej Szczepanik
mequrel @ gmail.com