In Search for a Scalable and Reactive Architecture of a Cloud Application: CQRS and Event Sourcing Case Study
AUTHORS: Andrzej Dębski, Bartłomiej Szczepanik, Maciej Malawski, Stefan Spahr, Dirk Muthig
As cloud infrastructures are gaining popularity, new concepts and design patterns such as Command-Query Respon- sibility Segregation and Event Sourcing promise to facilitate development of scalable applications. Despite recent work and the availability of many blogs and tutorials devoted to these topics, there are still few reports on existing implementations in real-world use cases which would provide experimental insight into their scalability. To bridge this gap, we have developed an architecture which exploits both patterns in accordance with Reactive Manifesto guidelines, and implemented a prototype interactive flight scheduling application to experimentally answer the key question concerning scalability. Our performance evalu- ation in a cloud environment consisting of 15 VMs demonstrates the horizontal scalability of the Command-Query Responsibility Segregation and Event Sourcing patterns, observed independently for read and write models of the application. We present in detail how to assemble this type of architecture from smaller building blocks, first on a conceptual level and later with specific technologies including Akka, Cassandra, Kafka and Neo4J. Our reference implementation is available as an open-source project. We conclude that the evaluated concepts provide many interesting advantages without compromising performance, and thus we can expect to witness their rapid adoption by the industry.