scaling domain driven design
play

Scaling Domain Driven Design Greg Young IMIS Presentation Is Is - PowerPoint PPT Presentation

Scaling Domain Driven Design Greg Young IMIS Presentation Is Is Not Discussion of DDD A DDD Tutorial being used in a large A Scalability Tutorial scale system Discussion of concepts that can be applied to other domains to


  1. Scaling Domain Driven Design Greg Young IMIS

  2. Presentation Is Is Not  Discussion of DDD  A DDD Tutorial being used in a large  A Scalability Tutorial scale system  Discussion of concepts that can be applied to other domains to solve common infrastructure issues

  3. Context

  4. IMIS Algorithmic Trading Regression Analysis Data Warehousing

  5. Incoming Data • NT TSX / V • RIM • NT • EBAY NYSE • RIMM Nasdaq • CSCO

  6. Challenges  Large Amounts of Complex Business Logic  Large Amounts of Historical Data  Large Amounts of Real-Time Data  Nearly all Real-Time Data is Stateful  Extremely Low Latency (< 100 ms)

  7. DDD & Performant Systems

  8. DDD Scalability

  9. Bounded Contexts  Language Specialization  Knowledge Hiding  Team Partitioning  Scalability??

  10. Context Mapping Anti- Bounded Core Corruption Context Domain Layer

  11. Many Bounded Contexts do not need real time data…

  12. First Attempt Remote Domain Facade Async Analysis

  13. Analysis Pros Cons  Easily Scalable  Fractured Domain/ Duplicated Logic  Simplicity  Wrong Language  “ Retrofitability ”  Too Much Information

  14. If things seem hard, there is something wrong with the model…

  15. Are state changes domain concepts?

  16. Changes are First Class Citizens Customer CustomerAddressChangedMessage GetStateChanges()

  17. Benefits Explicit! Testing Auditing Optimism

  18. Annoyances  Creating all of the messages (especially creates)  Not easily applied to an existing domain

  19. Reversed Anti- Core Bounded Corruption Domain Context Layer

  20. How to send the state changes? Pipeline Pub/Sub Only a All or most of fraction of the data is data is needed needed Many Smaller Reporting Systems

  21. Reporting Async Pipeline Reporting Domain Infrastructure

  22. Warm/Hot Replication Async Pipeline Mirrorrer Domain

  23. Load Balancing w/ Optimistic Locking Mirrorrer Domain

  24. Striping (Partitioning) Locator Async Pipeline Striper Domain

  25. Summary

  26. Summary  Bounded Contexts are Also for Scalability  Most Context Mapping Need not be Synchronous  State Changes are First Class Citizens

  27. Questions

Recommend


More recommend