cqrs
play

CQRS explained with a million dollar idea What are we going to do? - PowerPoint PPT Presentation

CQRS explained with a million dollar idea What are we going to do? The million dollar idea Command and query segregation Command and query responsibility segregation Code structure Disclaimer: when (not) to use The million


  1. CQRS explained with a million dollar idea

  2. What are we going to do? • The million dollar idea • Command and query segregation • Command and query responsibility segregation • Code structure • Disclaimer: when (not) to use

  3. The million dollar idea • Based on my graduation project • Car/ride-sharing application • Focus on social aspect 
 (you both know this person 
 or both sharing the same interest) • Primarily used for scheduled travel • Assumptions • We need CQRS

  4. Command and query segregation • Commands • Changing the state of a system without returning a value • Queries • Return a result without changing the state of the system (generating no side- effects) • Can be described as use-cases, i.e. • RegisterRide • FindRide • FindRideMatch

  5. Why? • Ease of mind, you don’t have to worry about executing queries since you “can’t” break things • “Out of the box” able to perform commands asynchronously

  6. Command and query responsibility segregation “At its heart is the notion that you can use a different model to update information than the model you use to read information.” –Martin Fowler

  7. Command and query responsibility segregation

  8. Command and query responsibility segregation • Different read and write models • Domain events • They describe what happend in the domain 
 (for example RideWasCreated, DepartureTimeHasChanged) • Are dispatched for every change in the domain • Are used to update the read models • Side effect: allows traceability and accountability (i.e. the bug is caused by this sequence of steps)

  9. Why? • Storing data at the best possible place (No-SQL, Graph etc) in the best possible format (normalized or denormalized) for the use-case • Scalability advantages • Better performance

  10. The example application

  11. Disclaimer: when (not) to use? • Be aware that CQRS can overcomplicate your application, explore alternatives before falling for the “cool” factor of this pattern • Consider using CQRS in the following cases • When working in large teams • When working with difficult business logic • When scalability matters

  12. Further reading… • https://leanpub.com/ddd-in-php - DDD in PHP • http://getprooph.org/ - The CQRS and event sourcing components for PHP

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend