WA2594
Introduction to Domain Driven Design Training
This course is an intro to Domain Driven Design
Course Details
Duration
2 days
Skills Gained
- Domain Driven Design concepts
- Strategic domain driven design
- Domain Driven Design Building Blocks
- Application Architecture under Domain Driven Design
Course Outline
- Domain Driven Design Concepts
- Domain Driven Design - What is it?
- Domain Driven Design - What it's Not
- Complex Problem Space
- Design Effort
- Division of Labor
- Tactical Design
- Strategic Design
- Separate Languages
- Ubiquitous Language 1/2
- Ubiquitous Language 2/2
- Capturing the Ubiquitous Language 1/3
- Capturing the Ubiquitous Language 2/3
- Capturing the Ubiquitous Language 3/3
- Domain
- Domain Examples
- Types of Domains
- Sub-Domains
- Context
- Model
- Domain Model Example - Bookstore
- Bookstore Domain Model
- Domain Model Example - Custom Cabinet Business
- Strategic Domain Driven Design
- Strategic Design
- The Domain Model
- Creating the Model
- Separate Concerns
- Domains vs. Contexts
- Bounded Contexts
- Bounded Contexts Stand Alone
- Analyzing Overlap in Bounded Contexts
- Resolving Overlaps with Contexts Mapping
- Mapping Types
- Partnership Mapping
- Shared Kernel
- Cross Cutting Concerns
- Customer-Supplier
- Conformist
- Anti corruption-layer
- Open Host Service
- Separate Ways
- Big Ball of Mud (BBOM)
- Integration via Database
- Domain Driven Design Building Blocks
- Building Blocks
- Entity Objects
- Value Object
- Value Object - Examples
- Aggregate 1/2
- Aggregate 2/2
- An Example Aggregate 1/2
- An Example Aggregate 2/2
- Module
- A Module Example
- Levels of Granularity
- Domain Event 1/2
- Domain Event 2/2
- Domain Event Advantages
- Services
- Service Examples
- Repository
- Generic Repository Interface
- Domain Repository Interface
- Factory
- Factory Example
- Application Architecture Under Domain Driven Design
- Overall Architecture
- Interface/Presentation Layer
- Application Layer
- Domain Layer
- Domain Layer - In Practice
- Infrastructure (Services) Layer
- Technologies to use with Domain Driven Design
- Dependency Injection (DI)
- Aspect Oriented Programming (AOP)
- Aspect Oriented Programming (AOP)
- Java Persistence API (JPA)
- Microservices
- What is a "Microservice"?
- One Helpful Analogy
- SOA - Microservices Relationship
- ESB - Microservices Relationship
- Traditional Monolithic Designs and Their Role
- Disadvantages of Monoliths
- Moving from a Legacy Monolith
- When Moving from a Legacy Monolith
- The Driving Forces Behind Microservices
- How Can Microservices Help You?
- The Microservices Architecture
- Utility Microservices at AWS
- Microservices Inter-connectivity
- The Data Exchange Interoperability Consideration
- Managing Microservices
- Implementing Microservices
- Embedding Databases in Java
- Microservice-Oriented Application Frameworks and Platforms
- Hexagonal Architecture and Microservices
- A Different View of Application Architecture
- Traditional Layers for Traditional User Interface
- Layers with DDD
- Modern Interaction Methods
- Modern Data Storage
- Hexagonal Architecture – Ports and Adapters
- DDD in Hexagonal Architecture
- The Adapter Pattern
- The Adapter Pattern Structure
- Adapter Pattern Behavior
- Entities, Values, and Aggregates
- Repositories – Overview
- Collection Oriented Repositories
- Persistence Oriented Repositories
- Domain Services
- Domain Events
- Discovering Events
- Modeling Events
- Events and Bounded Contexts
- Publishing Domain Events
- Storing Domain Events
- Forwarding Domain Events
- Integration Between Bounded Contexts
- Mapping to Microservices
- Communication Styles for Microservices
- User Interfaces – Crossing the System Boundary
- UI Communication Strategies
- Integration Between Bounded Contexts Revisited – Options
- Integration Via RESTful Services
- Integration Via Binary Formats
- Integration Via Messaging
- Lab Exercises
- Lab 1. Domain Driven Design Concepts
- Lab 2. Strategic Domain Driven Design
- Lab 3. Domain Driven Design Project
Upcoming Course Dates