Introduction to Domain Driven Design Training

Course #:WA2594

Introduction to Domain Driven Design Training

This course is an intro to Domain Driven Design

This 2 day course covers the following topics

  • Domain Driven Design concepts
  • Strategic domain driven design
  • Domain Driven Design Building Blocks
  • Application Architecture under Domain Driven Design

Outline of Introduction to Domain Driven Design Training

Chapter 1. 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
  • Summary

Chapter 2. 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
  • Summary

Chapter 3. 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
  • Summary

Chapter 4. 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)
  • Summary

Chapter 5. 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
  • Summary

Chapter 6. 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
  • Summary

Lab Exercises

Lab 1. Domain Driven Design Concepts
Lab 2. Strategic Domain Driven Design
Lab 3. Domain Driven Design Project

We regularly offer classes in these and other cities. Atlanta, Austin, Baltimore, Calgary, Chicago, Cleveland, Dallas, Denver, Detroit, Houston, Jacksonville, Miami, Montreal, New York City, Orlando, Ottawa, Philadelphia, Phoenix, Pittsburgh, Seattle, Toronto, Vancouver, Washington DC.