https://www.youtube.com/watch?v=8k2yNRHdG2U
Domain Driven Design (DDD) is a proven approach to building software that people love, and that delivers lasting business value. Unfortunately, the way we commonly present DDD in the community has made the subject feel academic and complex. In this talk, we’ll strip away the confusing jargon and focus in on the surprisingly simple core principles that make DDD so powerful. Then, we’ll explore a few exemplar software projects from the real world in order to learn techniques for establishing, and maintaining, Domain Driven Design on teams composed of mere mortals.
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Domain Driven Design for Mere Mortals
1. Domain Driven Design for Mere Mortals
Justin Holmes
App Dev Architect, Open Innovation Labs
October 19, 2017
2. Justin Holmes2
● Why Domain Driven Design (DDD) Is Relevant in 2017
● The Principles of DDD
● The Bounded Context By Example
● 5 Ways to Apply DDD Without A Textbook
Topics
4. Justin Holmes4
Microservices Optimize for Speed By...
● Reducing the size and increasing the autonomy of
○ Software components
○ Delivery Teams
● The trouble is autonomy is really, really hard
○ People: Coordination between teams
○ Process: Bureaucracy (e.g. your release process)
○ Technology: Data & Transactional Boundaries
● See Christian Posta [1][2]
8. Justin Holmes8
Principles of DDD
1. Speak a shared language within a bounded context
2. Focus on the core complexity & opportunity in the domain
3. Explore models in a collaboration of domain experts and software experts
4. Write software that expresses those models explicitly
Eric Evans - Explore DDD 2017 Keynote [4]
9. Justin Holmes9
What Is A Model?
1. Mercator’s Model
2. Useful, not necessarily realistic
3. Usefulness is specific to a particular scenario
4. There is no one, true model of a domain
5. Focused on a specific, difficult, important problem
Eric Evans - Explore DDD 2017 Keynote [4]
15. Justin Holmes15
Express Models Explicitly in Software
Alistair Cockburn - Ports & Adapters / Hexagonal Architecture [8]
● “Application” == domain model
● Minimal dependencies in domain model
○ E.g. slf4j / logging
○ No Spring in the domain!
● Put adapters in their own packages
○ E.g separate JARs that depend on domain
● Package for assembling the deployable
16. Justin Holmes16
Express Models Explicitly in Software
No more setters. Return immutable data with getters
Cart cart = new Cart();
List<Item> items = new ArrayList<>();
Item item = new Item(“DDD”);
items.add(item);
cart.setItems(items);
Cart cart = new Cart();
cart.addItem( new Item(“DDD”) );
20. REFERENCES
1. http://blog.christianposta.com/microservices/the-hardest-part-about-microservices-data/
2. http://blog.christianposta.com/microservices/when-not-to-do-microservices/
3. http://bit.ly/eddd_videos @ExploreDDD
4. Eric Evans Explore DDD Keynote 2017
a. Principles of DDD - https://youtu.be/kIKwPNKXaLU?t=3m08s
b. What is a Model? - https://youtu.be/kIKwPNKXaLU?t=14m59s
5. https://www.confluent.io/blog/making-sense-of-stream-processing/
6. https://www.infoq.com/articles/ddd-contextmapping
7. Books
a. http://dddcommunity.org/book/evans_2003/
b. https://vaughnvernon.co/?page_id=168#distilled
c. https://vaughnvernon.co/?page_id=168#iddd
8. http://alistair.cockburn.us/Hexagonal+architecture
9. https://dannorth.net/introducing-bdd/
10. https://gojko.net/books/specification-by-example/
11. https://swagger.io/swagger-editor/
12. http://eventstorming.com/
13. https://blog.redelastic.com/corporate-arts-crafts-modelling-reactive-systems-with-event-storming-73c6236f5dd7
14. Labs Residencies
a. https://www.youtube.com/watch?v=zialx0c2l3U
b. https://www.youtube.com/watch?v=H3hp_2hzLLg