Domain Driven Design
Domain Driven Design has been one of the major cornerstones in large system design for many years. It has recently been in the zeitgeist as of late, especially when it comes to the terms bounded context and microservices. This five-day class introduces you to Domain Driven Design, and why it is important. We will cover the design and pattern, discuss subdomains, context mapping, tools, and management
Our class will not only introduce you to the terms, but we will cover planning, and go through challenges on design so we can discuss the tradeoffs that come with the design. We will also cover some of the more modern patterns that came out of DDD like CQRS, Data Mesh, Rest, and more.
-
Domain Driven Design
-
What is it?
-
What is it not?
-
Wait, isn’t this Waterfall?
-
Advantages, Disadvantages
-
-
Case Studies and Exploration
-
Understanding the Business Behind the Case Study
-
-
Analyzing Business Domains
-
What is it?
-
Business Domain Discovery Exploration
-
Discovering Business Processes
-
Understanding Subdomains
-
Domain Examples
-
Identifying Domain Experts
-
-
Discovering Domain Knowledge
-
Pain point Discovery
-
Knowledge Discovery
-
Communication between business people and teams
-
Defining Ubiquitous Language
-
Cynefin ("ku-nev-in")
-
-
Modeling Business Design
-
What is a Model
-
Effective Modeling
-
"You can’t solve the world"
-
Modeling the Business Domain
-
Tools
-
Challenges
-
-
Managing Domain Complexity
-
Consistent & Inconsistent Models
-
Bounded Context
-
Boundaries
-
Semantic Domains
-
Real Life Study
-
-
Integrating Bounded Contexts
-
Cooperation
-
Customer-Supplier
-
Separate Ways
-
Creating a Context Map
-
-
Simple Business Logic
-
Transaction Script
-
Active Record
-
-
Complex Business Logic
-
History
-
Complex Data Models
-
Aggregates
-
Entities
-
Value Objects
-
Services
-
Factories
-
Repositories
-
-
-
Modeling Time
-
Events
-
Event Sourcing
-
Event Storming
-
-
Architectural Patterns
-
Layered Architecture
-
Hexagonal Architecture
-
Ports & Adapter
-
Presentation, Business, Data Access, Service Layers
-
CQRS (Command Query Responsibility Segregation)
-
-
Communication Patterns
-
Model Translations
-
Integrating Aggregates
-
Outbox
-
Saga
-
Process Manager
-
-
-
"Hey, this looks like Spring Boot Annotations!"
-
Security and DDD
-
Who is in charge?
-
Identity Access and Access Control
-
-
Integration with Agile
-
Other Related Patterns
-
Microservices
-
Event-Driven-Architecture
-
Data Mesh
-