What would your dream business application look like? Focused on capturing business intent? Well structured, easily maintained, robust, reliable, predictable and scalable? If these are the associations that appear in your mind when you hear the word ‘better’ in terms of business application, then this talk is for you.
For many years developers have been thinking about the ways how to make their applications better. Mastering object-oriented paradigm, architecture patterns, test-driven development (TDD), domain-driven design (DDD) were the steps on this steep way. CQRS (command query responsibility segregation) is the next step.
CQRS originates from the idea of CQS (command query separation) pattern: all methods should be either functions (return result and not have any side effects) or procedures (perform action and not return anything).
In CQRS approach this idea is applied on the architecture level decomposing the application into two parts: read and write. This simple maneuver gives much room for tailoring each side for its particular needs.
The statistics shows, that for common business application read operations are much frequent than data modification. As no data transformations happen to the read side, we can without worries denormalize the data to avoid complex joins and thus improve read performance. Moreover denormalized data is easily scalable across physical storages if our performance needs will later grow. On its turn, the write part has to be transaction-friendly and should implement all the complex business logic that brings value to our customer. While working on the write side we will focus on capturing customer’s business intent and won’t be constrained by necessity to use suboptimal data storages just because we have to address reporting needs.
In my presentation I will show the high-level organization of an application built using CQRS approach, discuss the specifics of design and development and share our team’s experience while implementing a prototype using this approach.
Ksenia Mukhortova
Senior software engineer, Intel, Nizhniy Novgorod
Ksenia specializes on business processes automation and creation of corporate business applications. For last 7 years she has been working for Intel lab in Nizhniy Novgorod, where she took part in various development projects both developed from scratch and being maintained. Her professional interests are distributed applications architecture, patterns and practices of high-quality and maintainable code, development processes in a team, web-technologies, usability.