Agile, Architecture, DDD and CQRS

Owner Cloud Create
Oct. 3, 2013
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
Agile, Architecture, DDD and CQRS
1 of 112

More Related Content

What's hot

Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledNicola Costantino
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)Tom Kocjan
Domain Driven DesignDomain Driven Design
Domain Driven DesignAraf Karsh Hamid
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slidesthinkddd
Domain Driven DesignDomain Driven Design
Domain Driven DesignRyan Riley
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDDennis Doomen

Similar to Agile, Architecture, DDD and CQRS

Pragmatic Approach to Microservices and Cell-based Architecture Pragmatic Approach to Microservices and Cell-based Architecture
Pragmatic Approach to Microservices and Cell-based Architecture Andrew Blades
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"GlobalLogic Ukraine
SessionSession
SessionAmr Salah
Introduction to microservicesIntroduction to microservices
Introduction to microservicesAnil Allewar
SpringPeople - Introduction to Cloud ComputingSpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud ComputingSpringPeople
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...DevOps.com

Similar to Agile, Architecture, DDD and CQRS(20)

More from Jeppe Cramon

Updated: Should you be using an Event Driven ArchitectureUpdated: Should you be using an Event Driven Architecture
Updated: Should you be using an Event Driven ArchitectureJeppe Cramon
The Dual write problemThe Dual write problem
The Dual write problemJeppe Cramon
SOA, Microservices and Event Driven ArchitectureSOA, Microservices and Event Driven Architecture
SOA, Microservices and Event Driven ArchitectureJeppe Cramon
Domain Driven Analysis and DesignDomain Driven Analysis and Design
Domain Driven Analysis and DesignJeppe Cramon
CQRS and event sourcingCQRS and event sourcing
CQRS and event sourcingJeppe Cramon
Should you be using an event driven architecture - IDA IT (short version)Should you be using an event driven architecture - IDA IT (short version)
Should you be using an event driven architecture - IDA IT (short version)Jeppe Cramon

Recently uploaded

Mule Meetup Calgary- API Governance & Conformance.pdfMule Meetup Calgary- API Governance & Conformance.pdf
Mule Meetup Calgary- API Governance & Conformance.pdfNithaJoseph4
GDSC Cloud Lead Presentation.pptxGDSC Cloud Lead Presentation.pptx
GDSC Cloud Lead Presentation.pptxAbhinavNautiyal8
Understanding Wireguard, TLS and Workload IdentityUnderstanding Wireguard, TLS and Workload Identity
Understanding Wireguard, TLS and Workload IdentityChristian Posta
Product Research Presentation-Maidy Veloso.pptxProduct Research Presentation-Maidy Veloso.pptx
Product Research Presentation-Maidy Veloso.pptxMaidyVeloso
Common WordPress APIs_ Settings APICommon WordPress APIs_ Settings API
Common WordPress APIs_ Settings APIJonathan Bossenger
Meetup_adessoCamunda_2023-09-13_Part1&2_en.pdfMeetup_adessoCamunda_2023-09-13_Part1&2_en.pdf
Meetup_adessoCamunda_2023-09-13_Part1&2_en.pdfMariaAlcantara50

Agile, Architecture, DDD and CQRS

Editor's Notes

  1. When the various logical models (subdomain models) need to grow to facilitate new features, each conflicting concern will impede the progress of each other.The bigger the change, e.g. adding a new logical model (such as forecasting), the worse the effect will become.
  2. Scale up vertically
  3. E.g. In an Inventory system a Product (often referred to as an Item) can have manydifferentnamesdepending on where in the lifecycletheyare:An Ordered Item not yetavailable for Sale is called a Back-Ordered ItemAn Item beingReceived is called a Goods ReceivedAn Item in stock is called a Stock ItemAn Item beingconsumed is called a Item Leaving InventoryAn Item beingspoiled or broken is called a Wasted Inventory Item
  4. Autonomy and organizational unity around the subdomain. Independence on SLA
  5. Aggregates reference each other by Id only in a scalable systemAn Aggregate Root is more likely to match a Use Case than any model structure
  6. http://designingsoftware.net/2011/09/15/getting-more-business-value-with-task-based-ui/http://codebetter.com/iancooper/2011/07/15/why-crud-might-be-what-they-want-but-may-not-be-what-they-need/
  7. See http://cqrs.wordpress.com/documents/task-based-ui/ for more
  8. See http://cqrs.wordpress.com/documents/task-based-ui/ formore
  9. See http://cqrs.wordpress.com/documents/task-based-ui/ formore
  10. Spaghetti
  11. Lasagna
  12. [OrderService|registerOrder(...);closeOrder(...);updateAvailablility(...);addToOrder(...)]->[Order|OrderDate;Amount;Customer|get/setDate();get/setDate();get/setCustomer();get/setOrderLines()], [Order]++-*>[OrderLine|ProductId;UnitPrice;NoOfUnits|get/setProductId();get/setUnitPrice();get/setNoOfUnits()]
  13. [OrderService|registerOrder(...);closeOrder(...);updateAvailablility(...);addToOrder(...)]->[Order|OrderDate;Amount;Customer|update();close();totalAmount()], [Order]++-*>[OrderLine|ProductId;UnitPrice;NoOfUnits|calculateAmount()]
  14. From http://www.codeagle.com/blog/2010/03/10/275/
  15. Ourread model is structurallyoriented (the usersperspective on the data in the given context)The write model is behaviouraloriented (transaction and consistencyboundaryoriented)
  16. Why is this the bestwecan offer – Whyshould theuserbeinterrupted by a technicalconstraint?
  17. Commands and Events areimmutable
  18. [Order|OrderDate;Amount;Customer|addProduct();removeProduct();ship();...|onProductAdded(..);onProductRemoved(..);onOrderClosed(..);onOrderShipped(..)],[Order]++-*>[OrderLine|ProductId;UnitPrice;NoOfUnits|calculateAmount()]
  19. EventStore: Why store only the currentstate of the system.Matureindustries store transactions and calculate the currentstate
  20. Wecanassertthatbothwhatweexpectedhappened and nothingelsehappened (the unexpectedbecomesexplicit)
  21. This report is generatedbased on the previous test code
  22. (but youcanchosewhichare most important to you in the different cases)
  23. ACID:Atomic: The transaction is indivisible - either all the statements in the transactionareapplied to the database, or none are.Consistent: The database remains in a consistentstatebefore and aftertransactionexecution.Isolated: While multiple transactionscanbeexecuted by one or more userssimultaneously, onetransactionshould not see the effects of otherconcurrenttransactions.Durable: Once a transaction is saved to the database (an action referred to in database programmingcircles as a commit), itschangesareexpected to persist.