CQRS - Architecture for scalable web applications
The web has changed drastically the last few years. The browser is becoming the de-facto application platform for online cooperation. To accommodate this, applications need to be able to scale up and down dynamically as the number of users fluctuates. While a few years ago planned downtime was as normal as anything, nowadays most applications need 100% uptime. Furthermore, the continuous need to innovate stresses the importance of extensibility and maintainability of these applications.
Yet, most web applications nowadays are built using the same architectural principles that were used several years ago: a layered architecture and, more often than not, an anemic domain model. Although this style is familiar to many developers and easy to set up, it lacks the capability to help us cope with increasing complexity and doesn't allow applications to scale very well.
In this presentation, Allard will introduce another architectural principle: Command and Query Responsibility Segregation (CQRS). CQRS promotes the decoupling of components that change an application's state (the commands) from the components that provide information about the current state (the queries). This architectural approach makes it easier to handle increasing complexity and ensure the application's ability to scale. You will also see how CQRS can help build high performance applications and provide business value by storing valuable information about the application's history. Finally, we will cover how the Event Driven aspect of CQRS allows for decoupling of components, keeping applications extensible without compromising maintainability.
The presentation contains both the theoretical background of CQRS, but will mostly focus on the practical aspects, including code. You will learn how your applications can benefit by applying some very simple principles to your architecture.