A developer who can build systems that take advantage of the segregation of commands and queries.
- Define "commands" in the CQRS context
- Define "queries" in the CQRS context
- Defend the utility of segregating commands from queries
- Discuss the opportunities that arise when we segregate commands from queries
- Discuss the shortcomings of typical CRUD-based systems
- Discuss the benefits the come when we embrace eventual consistency
- Discuss the challenges that come with eventual consistency
- Implement basic CQRS by maintaining a strict segregation between commands and queries
- Write a command dispatcher that adheres to Open/Closed Principle
- Dispatch immutable commands from the presentation later
- Demonstrate aggregates that form a rich domain model
- Write command handlers that apply changes to rich domain aggregates before persisting changes
- Handle commands with command handlers
- Write unit tests for aggregate methods
- Write unit tests for command handlers
- Run a complete workflow from endpoint request (PUT or POST) to database to the UI
- CQRS{:target="_blank"}
- Command-Query Separation{:target="_blank"}
Ask your mentor if you are ready for evaluation. Then, do one of the following:
- Schedule a live evaluation by clicking here to find a time on the calendar. After the evaluation, claim the badge.
or
- Record a screencast where you talk about and demonstrate each competency listed above. Make sure badge criteria and relevant tools are visible in the screen cast AND that your audio is good enough for the evaluator to hear. Upload the video to a service like Vimeo or Youtube (unlisted is fine) so that you can provide a public url for an evaluator to view. Claim the badge and include the video url in the evidence box.