event-driven designmedia.abdullin.com/blog/2015/2015-03-18-edd-ebay...2015/03/18  · • practical...

35
Event-Driven Design Rinat Abdullin | abdullin.com | @abdullin

Upload: others

Post on 10-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Event-Driven DesignRinat Abdullin | abdullin.com | @abdullin

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

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
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

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

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

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

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

–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

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

–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

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
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

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

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

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
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

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

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

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
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

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
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

Capture Behaviors

Page 24: 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

API Use Casehttp://github.com/abdullin/omni/

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

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
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
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
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
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

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
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

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

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

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

Questions?Time for CQRS Beers!