Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical...
Transcript of Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical...
![Page 2: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/2.jpg)
Plan
• Software Design
• Event Storming
• Practical Event-Driven Design
• CQRS Beers
![Page 3: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/3.jpg)
![Page 4: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/4.jpg)
Software Design Process
![Page 5: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/5.jpg)
Software Design
![Page 6: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/6.jpg)
Divide and Conquer
![Page 7: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/7.jpg)
Context MapMap is not the territory
![Page 8: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/8.jpg)
–Nathan Marz, Suffering-oriented programming
“First make it possible. Then make it beautiful. Then make it fast.”
![Page 9: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/9.jpg)
Feedback Loops
![Page 10: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/10.jpg)
–EU DDD Community
“Software development is a learning process.
Working code is a side-effect.”
![Page 11: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/11.jpg)
Iterate & Reduce Friction
![Page 12: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/12.jpg)
![Page 13: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/13.jpg)
One ExampleRapid Iterations FTW
![Page 14: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/14.jpg)
Events and APIInterchange Context + ACL
![Page 15: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/15.jpg)
Contracts at BoundaryEvents, API, ACL
![Page 16: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/16.jpg)
![Page 17: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/17.jpg)
Questions?
![Page 18: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/18.jpg)
Event-StormingLet’s explore our boundaries
![Page 19: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/19.jpg)
Requirements• Invite domain experts and developers
• No chairs
• Lots of writing space
• Post-it notes and markers
• Just map the commands/events
• Everybody participates
• Have fun
![Page 20: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/20.jpg)
![Page 21: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/21.jpg)
Practical ApplicationsBack to the code
![Page 22: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/22.jpg)
![Page 23: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/23.jpg)
Capture Behaviors
![Page 25: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/25.jpg)
Use cases• Verify API correctness
• Allow iterative TDD/BDD
• Automatic stress-testing
• Human-readable documentation
• API documentation with samples
• Dependency diagrams
• Module sanity checks
![Page 26: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/26.jpg)
![Page 27: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/27.jpg)
![Page 28: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/28.jpg)
![Page 29: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/29.jpg)
![Page 30: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/30.jpg)
Check out the codeAPI Use Cases
![Page 31: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/31.jpg)
![Page 32: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/32.jpg)
Divide and ConquerTo manage, optimize and scale individually
![Page 33: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/33.jpg)
Front-endWhere the real fun starts
![Page 34: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/34.jpg)
Flux/ReactJSEvent-driven, one of many options for UI/UX Design
![Page 35: Event-Driven Designmedia.abdullin.com/blog/2015/2015-03-18-edd-eBay...2015/03/18 · • Practical Event-Driven Design • CQRS Beers Software Design Process Software Design Divide](https://reader033.fdocuments.us/reader033/viewer/2022060210/5f04b4887e708231d40f4b72/html5/thumbnails/35.jpg)
Questions?Time for CQRS Beers!