New architectural paradigms like microservices and evolutionary architecture, as well as the challenges associated with managing data and transactional contexts in distributed systems, have generated a renewed interest in disciplined software design and modular decomposition strategies. We know that the secret to obtaining the benefits of these architectures is getting the boundaries right, both at the team and the component/service level, and then keeping them right as the software continues to evolve! Fortunately, there is a mature, battle-tested approach to domain modeling and system decomposition that is a perfect compliment to these architectures: Domain-Driven Design (DDD). In this course, we’ll leverage an exemplar business domain, that of a pizza delivery store, to illustrate DDD-based decomposition strategies, data architecture patterns, and implementations.
DAY ONE:
Class Introduction (10 minutes)
* Intro to the Course
* Intro to the Instructor
* Class Logistics
* Class Outline
Lecture: Why do we need DDD?
Lecture: What is Ubiquitous Language and why is it so important?
Open Q&A and Class Discussion: Why DDD / Ubiquitous Language
Lecture: DDD 101 – Strategic Design: Bounded Contexts, Context Mapping, Subdomains (30 minutes)
Open Q&A and Class Discussion: Strategic Design
Lecture: DDD 101 – Tactical Design: Aggregates, Entities, Value Objects, Domain Events, Application Services, Domain Services (30 minutes)
Open Q&A and Class Discussion: Tactical Design
Lecture: Overview of Event Storming
Lecture: Introduction to the Pizza Shop domain
Open Q&A and Class Discussion: Event Storming and Pizza Shop Domain (10 minutes)
Group Activity: Event Storming Kata (90 minutes)
Afternoon Break (30 minutes)
Lecture: Discuss how Event Storm concepts translate into DDD concepts, User Stories, and TDD code (30 minutes)
Lecture: DDD and Technical Architectures (45 minutes)
Open Q&A and Class Discussion: Day One AMA
Day Two:
Day One Recap
Lecture: Intro to Evolutionary Architectures and Fitness Functions
Lecture: The App Continuum
Lecture: Overview of the Pizza Shop Coding Exercise Environment
Open Q&A and Class Discussion: Evolutionary Architecture / App Continuum
Student Activity: Lab 1: TDD Aggregate Root – Create Kitchen Commands with Business Logic and Invariants
Lecture: Lab 1 Solution
Student Activity: Lab 2: TDD Aggregate Root – Create and Publish Kitchen Domain Events
Lecture: Lab 2 Solution (10 minutes)
Student Activity: Lab 3: TDD Aggregate Repository – Create Kitchen Repositories and Add Domain Events
Lecture: Lab 3 Solution
Student Activity: Lab 4: TDD Aggregate Repository – Rehydrate Kitchen Aggregates by Reference
Lecture: Lab 4 Solution
Student Activity: Lab 5: TDD Application Service – Expose Kitchen Business Interface and Implement Transactions
Lecture:Lab 5 Solution
Student Activity: Lab 6: TDD Policy – Subscribe to a Kitchen Domain Event from within an Aggregate and Create CQRS View
Lecture: Lab 6 Solution
Student Activity: Lab 7: TDD Policy – Subscribe to a Kitchen Domain Event from an Adjacent Aggregate and Update State
Lecture: Lab 7 Solution
Student Activity: Lab 8: Evolutionary Refactoring – Move from Packages to Components, Externalize Persistence
Lecture: Lab 8 Solution
Student Activity: Lab 9: Evolutionary Refactoring – Move from Components to Microservices, Externalize Eventing
Lecture: Lab 9 Solution
Conclude
Matt Stine is the global CTO for architecture at Pivotal, where he spends much of his time helping customers develop cloud native application architectures. Matt is an 18-year veteran of the enterprise IT industry, 8 of them spent as consulting solutions architect for multiple Fortune 500 companies and the not-for-profit St. Jude Children’s Research Hospital. He is the author of Migrating to Cloud-Native Application Architectures (O’Reilly) and the host of the Software Architecture Radio podcast. Matt is obsessed with the idea that enterprise IT doesn’t have to suck. He focuses on Lean/Agile software development methodologies; DevOps; architectural principles, patterns, and practices; and programming paradigms in an attempt to find the perfect storm of techniques that will allow corporate IT departments to function like startups and create software that delights users while maintaining a high degree of conceptual integrity. Matt has spoken at conferences ranging from JavaOne to OSCON to YOW! and is an eight-year member of the No Fluff Just Stuff tour. Matt is also the founder and past president of the Memphis Java User Group.
For exhibition and sponsorship opportunities, email SAconf@oreilly.com
For information on trade opportunities with O'Reilly conferences, email partners@oreilly.com
View a complete list of O'Reilly Software Architecture contacts
©2019, O'Reilly Media, Inc. • (800) 889-8969 or (707) 827-7019 • Monday-Friday 7:30am-5pm PT • All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. • confreg@oreilly.com