RUBY♥DDD@EMADBwas DDD IN RUBY
HI,I’MEMANUELE@EMADB
DDDISABOUT...
ANALYSIS
DESIGN
PATTERNS
UBIQUITOUSLANGUAGE
BOUNDEDCONTEXT
Customer CustomerIdNameShippingAddressIdNameShipOrder(...)VatCodeBillingAddress
ENTITYANDVALUEOBJECT
CustomerAddress
AGGREGATE
REPOSITORYANDSERVICE
DOMAINEVENT
RUBY
‣Fully OOP (...for real)‣Expressiveness‣Metaprogramming‣DSL with ease‣Gems...tons of gems‣Great community
CODE
WE CAN DOMORE
UIDOMAIN MODEL/BUSINESS LAYERDATA LAYER/ORMDATABASEAPPLICATION LAYER
READvsWRITE
STOPTHINKINGINCRUD
CQRS
UICOMMANDS/HANDLERSDATA LAYERDATABASEDOMAIN MODEL
UICOMMANDS/HANDLERSDATA LAYERWRITE DBDOMAIN MODELREAD DBHANDLER
EVENTSOURCING
STATEvsTRANSITIONS
ADD ITEM
ADD ITEMADD ITEM
ADD ITEMADD ITEMREMOVE ITEM
ADD ITEMADD ITEMREMOVE ITEMAPPLY COUPON
ADD ITEMADD ITEMREMOVE ITEMAPPLY COUPONSET SHIPPING ADDRESS
ADD ITEMADD ITEMREMOVE ITEMAPPLY COUPONSET SHIPPING ADDRESSCOMPLETE ORDER
‣ Don’t store the state but thedeltas‣ The state can be rebuilt fromevents‣ Simple storing structures‣ Snapshot could be h...
THISRESOLVETHEEPICCUSTOMERREQUEST
IWANTITFORYESTERDAY
CODE
REFERENCES
SOURCECODEhttps://github.com/emadb/ruby_loves_ddd
SPECIAL THANKS TO @BITTSTATIC @SANDROPAGANOTTI @AMELCHIORI
Ruby loves DDD
Ruby loves DDD
Ruby loves DDD
Ruby loves DDD
Ruby loves DDD
Ruby loves DDD
Ruby loves DDD
Ruby loves DDD
Ruby loves DDD
Ruby loves DDD
Ruby loves DDD
Upcoming SlideShare
Loading in...5
×

Ruby loves DDD

2,046

Published on

The Rubyday 2013 presentation about Domain Driven Design implementation in Ruby. Source code is available here https://github.com/emadb/ruby_loves_ddd

Published in: Technology
2 Comments
16 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,046
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
2
Likes
16
Embeds 0
No embeds

No notes for slide

Transcript of "Ruby loves DDD"

  1. 1. RUBY♥DDD@EMADBwas DDD IN RUBY
  2. 2. HI,I’MEMANUELE@EMADB
  3. 3. DDDISABOUT...
  4. 4. ANALYSIS
  5. 5. DESIGN
  6. 6. PATTERNS
  7. 7. UBIQUITOUSLANGUAGE
  8. 8. BOUNDEDCONTEXT
  9. 9. Customer CustomerIdNameShippingAddressIdNameShipOrder(...)VatCodeBillingAddress
  10. 10. ENTITYANDVALUEOBJECT
  11. 11. CustomerAddress
  12. 12. AGGREGATE
  13. 13. REPOSITORYANDSERVICE
  14. 14. DOMAINEVENT
  15. 15. RUBY
  16. 16. ‣Fully OOP (...for real)‣Expressiveness‣Metaprogramming‣DSL with ease‣Gems...tons of gems‣Great community
  17. 17. CODE
  18. 18. WE CAN DOMORE
  19. 19. UIDOMAIN MODEL/BUSINESS LAYERDATA LAYER/ORMDATABASEAPPLICATION LAYER
  20. 20. READvsWRITE
  21. 21. STOPTHINKINGINCRUD
  22. 22. CQRS
  23. 23. UICOMMANDS/HANDLERSDATA LAYERDATABASEDOMAIN MODEL
  24. 24. UICOMMANDS/HANDLERSDATA LAYERWRITE DBDOMAIN MODELREAD DBHANDLER
  25. 25. EVENTSOURCING
  26. 26. STATEvsTRANSITIONS
  27. 27. ADD ITEM
  28. 28. ADD ITEMADD ITEM
  29. 29. ADD ITEMADD ITEMREMOVE ITEM
  30. 30. ADD ITEMADD ITEMREMOVE ITEMAPPLY COUPON
  31. 31. ADD ITEMADD ITEMREMOVE ITEMAPPLY COUPONSET SHIPPING ADDRESS
  32. 32. ADD ITEMADD ITEMREMOVE ITEMAPPLY COUPONSET SHIPPING ADDRESSCOMPLETE ORDER
  33. 33. ‣ Don’t store the state but thedeltas‣ The state can be rebuilt fromevents‣ Simple storing structures‣ Snapshot could be helpfulEVENTSOURCING
  34. 34. THISRESOLVETHEEPICCUSTOMERREQUEST
  35. 35. IWANTITFORYESTERDAY
  36. 36. CODE
  37. 37. REFERENCES
  38. 38. SOURCECODEhttps://github.com/emadb/ruby_loves_ddd
  39. 39. SPECIAL THANKS TO @BITTSTATIC @SANDROPAGANOTTI @AMELCHIORI

×