SlideShare a Scribd company logo
1 of 17
Download to read offline
SOFTWARE ARCHITECTURE
MEETUP
DECEMBER 2018
Muhammad Ali
SOFTWARE ARCHITECT
VENTUREDIVE
Practicing DDD & CQRS
Agenda
• We’ll try to analyze a problem and will try to solve this with DDD
• We’ll develop our Ubiquitous language
• Develop our model i.e. reflection of our Ubiquitous language
• Will find Entities, Value Objects & Aggregates
• Will try to break it down into commands, events and state
Architectural Katas
“How do we get great designers? Great designers design, of course.”
Fred Brooks
So how are we supposed to get great architects, if they only get the
chance to architect fewer than a half-dozen times in their career?
Ted Neward
Architectural Katas
• Kata is a detailed choreographed pattern of movement made to be
practice alone or in groups.
• Architects needs chance to practice, similar to how programmer
needs chance to practice
• Architectural Katas are architectural problems that needs to be run in
a group of 2-3 people.
• There are usually 4-10 groups
• Katas are generally run by a moderator
Architectural Katas
• Today we are going to pick one of the kata and try it out here in this
session.
• You can find more katas here https://archkatas.herokuapp.com
• We’ll run a full architectural katas session in one of our upcoming
meetup
Sysop Squad
• An electronics giant needs a new trouble-ticket system for their
customer-facing IT consultants (the Sysop Squad) in their stores
nationwide
• Requirements: trouble tickets can be entered by either call-center
receptionists, store staff or customers online; tickets route to the
appropriate consultant based on location, availability and skill;
customers enter consultant evaluation after service; consultant tracks
work performed in customer record(s) for future reference
• Users: thousands of customers, hundreds of consultants, hundreds of
store staff
Sysop Squad
• An electronics giant needs a new trouble-ticket system for their
customer-facing IT consultants (the Sysop Squad) in their stores
nationwide
• Requirements: Trouble Tickets can be entered by either call-center
Receptionists, Store Staff or Customers online; tickets route to the
appropriate Consultant based on location, availability and skill;
customers enter consultant evaluation after service; consultant tracks
work performed in customer record(s) for future reference
• Users: thousands of customers, hundreds of consultants, hundreds of
store staff
Sysop Squad
• An electronics giant needs a new trouble-ticket system for their
customer-facing IT consultants (the Sysop Squad) in their stores
nationwide
• Requirements: trouble tickets can be entered by either call-center
receptionists, store staff or customers online; tickets route to the
appropriate consultant based on location, availability and skill;
customers enter consultant evaluation after service; consultant
tracks work performed in customer record(s) for future reference
• Users: thousands of customers, hundreds of consultants, hundreds of
store staff
Identifying Entities & Value Objects
ENTITIES
• Ticket
• Receptionist
• Store Staff
• Customer
• Consultant
VALUE OBJECTS
• Consultant Evaluation
• Work Log
Attributes
• What about other attributes? Like
• Location awareness
• Skills
• Availability
Identifying Actions
• Add Ticket
• Routing
• Service
• Consultant Evaluation
• Track Work
Event Storming
Event Storming
“All models are wrong; some models are useful”
George E. P. Box
CQRS
• Aren’t we missing something?
• If you see the model that we discussed, it only talks about commands
& events
• Once we have events, we can have an event listener to create state
• State is just a snapshot, it can be saved in Redis , CQEngine or SQL
store.
• On top of that we can have services that can be used to read the state
and respond to queries.
Questions?

More Related Content

Similar to Practicing DDD & CQRS

CP Summary of Computer People
CP Summary of Computer PeopleCP Summary of Computer People
CP Summary of Computer PeopleSyed Shah
 
BizTransSysTech_TalentOut_v1.0
BizTransSysTech_TalentOut_v1.0BizTransSysTech_TalentOut_v1.0
BizTransSysTech_TalentOut_v1.0BizTrans SysTech
 
Sullivan and Cogliano Capabilties 1.22.16
Sullivan and Cogliano Capabilties 1.22.16Sullivan and Cogliano Capabilties 1.22.16
Sullivan and Cogliano Capabilties 1.22.16Herb Cogliano
 
Flexible Product Development Process
Flexible Product Development ProcessFlexible Product Development Process
Flexible Product Development ProcessDanielReinold1
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation ProjectsAmazon Web Services
 
Service frameworks and toolkits: Making design artefacts actionable
Service frameworks and toolkits: Making design artefacts actionableService frameworks and toolkits: Making design artefacts actionable
Service frameworks and toolkits: Making design artefacts actionableKarina Smith
 
Building Business with Cincom Smalltalk
Building Business with Cincom SmalltalkBuilding Business with Cincom Smalltalk
Building Business with Cincom SmalltalkESUG
 
Mariner innovations practice of architecture
Mariner innovations   practice of architectureMariner innovations   practice of architecture
Mariner innovations practice of architectureCarl Ozkaynak
 
BizTransSysTech_CareerEd_v1.0
BizTransSysTech_CareerEd_v1.0BizTransSysTech_CareerEd_v1.0
BizTransSysTech_CareerEd_v1.0BizTrans SysTech
 
How to do agile roadmapping
How to do agile roadmappingHow to do agile roadmapping
How to do agile roadmappingJeff Brantley
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyJohn Giaconia
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyKara Hansen
 
Technology Planning for River Groups
Technology Planning for River GroupsTechnology Planning for River Groups
Technology Planning for River GroupsSean Larkin
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
 
Dashlane Mission Teams
Dashlane Mission TeamsDashlane Mission Teams
Dashlane Mission TeamsDashlane
 
Introduction à l'agilité - Martin Goyette
Introduction à l'agilité - Martin GoyetteIntroduction à l'agilité - Martin Goyette
Introduction à l'agilité - Martin GoyetteAgile Montréal
 

Similar to Practicing DDD & CQRS (20)

CP Summary of Computer People
CP Summary of Computer PeopleCP Summary of Computer People
CP Summary of Computer People
 
BizTransSysTech_TalentOut_v1.0
BizTransSysTech_TalentOut_v1.0BizTransSysTech_TalentOut_v1.0
BizTransSysTech_TalentOut_v1.0
 
Sullivan and Cogliano Capabilties 1.22.16
Sullivan and Cogliano Capabilties 1.22.16Sullivan and Cogliano Capabilties 1.22.16
Sullivan and Cogliano Capabilties 1.22.16
 
Flexible Product Development Process
Flexible Product Development ProcessFlexible Product Development Process
Flexible Product Development Process
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Service frameworks and toolkits: Making design artefacts actionable
Service frameworks and toolkits: Making design artefacts actionableService frameworks and toolkits: Making design artefacts actionable
Service frameworks and toolkits: Making design artefacts actionable
 
Discovery Phase: Planing Your Web Project
Discovery Phase: Planing Your Web ProjectDiscovery Phase: Planing Your Web Project
Discovery Phase: Planing Your Web Project
 
Sap abap course
Sap abap course Sap abap course
Sap abap course
 
Sap abap course content
Sap abap course contentSap abap course content
Sap abap course content
 
Building Business with Cincom Smalltalk
Building Business with Cincom SmalltalkBuilding Business with Cincom Smalltalk
Building Business with Cincom Smalltalk
 
Mariner innovations practice of architecture
Mariner innovations   practice of architectureMariner innovations   practice of architecture
Mariner innovations practice of architecture
 
BizTransSysTech_CareerEd_v1.0
BizTransSysTech_CareerEd_v1.0BizTransSysTech_CareerEd_v1.0
BizTransSysTech_CareerEd_v1.0
 
How to do agile roadmapping
How to do agile roadmappingHow to do agile roadmapping
How to do agile roadmapping
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an Agency
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an Agency
 
Technology Planning for River Groups
Technology Planning for River GroupsTechnology Planning for River Groups
Technology Planning for River Groups
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 
Dashlane Mission Teams
Dashlane Mission TeamsDashlane Mission Teams
Dashlane Mission Teams
 
Project to Product roadmap
Project to Product roadmapProject to Product roadmap
Project to Product roadmap
 
Introduction à l'agilité - Martin Goyette
Introduction à l'agilité - Martin GoyetteIntroduction à l'agilité - Martin Goyette
Introduction à l'agilité - Martin Goyette
 

More from Muhammad Ali

Communication Mechanisms, Past, Present & Future
Communication Mechanisms, Past, Present & FutureCommunication Mechanisms, Past, Present & Future
Communication Mechanisms, Past, Present & FutureMuhammad Ali
 
WebRTC Introduction & Basics
WebRTC Introduction & BasicsWebRTC Introduction & Basics
WebRTC Introduction & BasicsMuhammad Ali
 
Introduction to Architectural Katas
Introduction to Architectural KatasIntroduction to Architectural Katas
Introduction to Architectural KatasMuhammad Ali
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignMuhammad Ali
 
DBMS Modeling & Optimization
DBMS Modeling & OptimizationDBMS Modeling & Optimization
DBMS Modeling & OptimizationMuhammad Ali
 
Android architectural components
Android architectural componentsAndroid architectural components
Android architectural componentsMuhammad Ali
 
Architectural katas
Architectural katasArchitectural katas
Architectural katasMuhammad Ali
 
Software Architecture Meetup introduction
Software Architecture Meetup introductionSoftware Architecture Meetup introduction
Software Architecture Meetup introductionMuhammad Ali
 
Introduction to Domain driven design
Introduction to Domain driven designIntroduction to Domain driven design
Introduction to Domain driven designMuhammad Ali
 

More from Muhammad Ali (9)

Communication Mechanisms, Past, Present & Future
Communication Mechanisms, Past, Present & FutureCommunication Mechanisms, Past, Present & Future
Communication Mechanisms, Past, Present & Future
 
WebRTC Introduction & Basics
WebRTC Introduction & BasicsWebRTC Introduction & Basics
WebRTC Introduction & Basics
 
Introduction to Architectural Katas
Introduction to Architectural KatasIntroduction to Architectural Katas
Introduction to Architectural Katas
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
DBMS Modeling & Optimization
DBMS Modeling & OptimizationDBMS Modeling & Optimization
DBMS Modeling & Optimization
 
Android architectural components
Android architectural componentsAndroid architectural components
Android architectural components
 
Architectural katas
Architectural katasArchitectural katas
Architectural katas
 
Software Architecture Meetup introduction
Software Architecture Meetup introductionSoftware Architecture Meetup introduction
Software Architecture Meetup introduction
 
Introduction to Domain driven design
Introduction to Domain driven designIntroduction to Domain driven design
Introduction to Domain driven design
 

Recently uploaded

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Recently uploaded (20)

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

Practicing DDD & CQRS

  • 3. Agenda • We’ll try to analyze a problem and will try to solve this with DDD • We’ll develop our Ubiquitous language • Develop our model i.e. reflection of our Ubiquitous language • Will find Entities, Value Objects & Aggregates • Will try to break it down into commands, events and state
  • 4. Architectural Katas “How do we get great designers? Great designers design, of course.” Fred Brooks So how are we supposed to get great architects, if they only get the chance to architect fewer than a half-dozen times in their career? Ted Neward
  • 5. Architectural Katas • Kata is a detailed choreographed pattern of movement made to be practice alone or in groups. • Architects needs chance to practice, similar to how programmer needs chance to practice • Architectural Katas are architectural problems that needs to be run in a group of 2-3 people. • There are usually 4-10 groups • Katas are generally run by a moderator
  • 6. Architectural Katas • Today we are going to pick one of the kata and try it out here in this session. • You can find more katas here https://archkatas.herokuapp.com • We’ll run a full architectural katas session in one of our upcoming meetup
  • 7. Sysop Squad • An electronics giant needs a new trouble-ticket system for their customer-facing IT consultants (the Sysop Squad) in their stores nationwide • Requirements: trouble tickets can be entered by either call-center receptionists, store staff or customers online; tickets route to the appropriate consultant based on location, availability and skill; customers enter consultant evaluation after service; consultant tracks work performed in customer record(s) for future reference • Users: thousands of customers, hundreds of consultants, hundreds of store staff
  • 8. Sysop Squad • An electronics giant needs a new trouble-ticket system for their customer-facing IT consultants (the Sysop Squad) in their stores nationwide • Requirements: Trouble Tickets can be entered by either call-center Receptionists, Store Staff or Customers online; tickets route to the appropriate Consultant based on location, availability and skill; customers enter consultant evaluation after service; consultant tracks work performed in customer record(s) for future reference • Users: thousands of customers, hundreds of consultants, hundreds of store staff
  • 9. Sysop Squad • An electronics giant needs a new trouble-ticket system for their customer-facing IT consultants (the Sysop Squad) in their stores nationwide • Requirements: trouble tickets can be entered by either call-center receptionists, store staff or customers online; tickets route to the appropriate consultant based on location, availability and skill; customers enter consultant evaluation after service; consultant tracks work performed in customer record(s) for future reference • Users: thousands of customers, hundreds of consultants, hundreds of store staff
  • 10. Identifying Entities & Value Objects ENTITIES • Ticket • Receptionist • Store Staff • Customer • Consultant VALUE OBJECTS • Consultant Evaluation • Work Log
  • 11. Attributes • What about other attributes? Like • Location awareness • Skills • Availability
  • 12. Identifying Actions • Add Ticket • Routing • Service • Consultant Evaluation • Track Work
  • 15. “All models are wrong; some models are useful” George E. P. Box
  • 16. CQRS • Aren’t we missing something? • If you see the model that we discussed, it only talks about commands & events • Once we have events, we can have an event listener to create state • State is just a snapshot, it can be saved in Redis , CQEngine or SQL store. • On top of that we can have services that can be used to read the state and respond to queries.