Domain Driven Design

Categories: Domain Driven Design DDD Architecture
Course Length: 5 Days

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.

  1. Domain Driven Design

    1. What is it?

    2. What is it not?

    3. Wait, isn’t this Waterfall?

    4. Advantages, Disadvantages

  2. Case Studies and Exploration

    1. Understanding the Business Behind the Case Study

  3. Analyzing Business Domains

    1. What is it?

    2. Business Domain Discovery Exploration

    3. Discovering Business Processes

    4. Understanding Subdomains

    5. Domain Examples

    6. Identifying Domain Experts

  4. Discovering Domain Knowledge

    1. Pain point Discovery

    2. Knowledge Discovery

    3. Communication between business people and teams

    4. Defining Ubiquitous Language

    5. Cynefin ("ku-nev-in")

  5. Modeling Business Design

    1. What is a Model

    2. Effective Modeling

    3. "You can’t solve the world"

    4. Modeling the Business Domain

    5. Tools

    6. Challenges

  6. Managing Domain Complexity

    1. Consistent & Inconsistent Models

    2. Bounded Context

    3. Boundaries

    4. Semantic Domains

    5. Real Life Study

  7. Integrating Bounded Contexts

    1. Cooperation

    2. Customer-Supplier

    3. Separate Ways

    4. Creating a Context Map

  8. Simple Business Logic

    1. Transaction Script

    2. Active Record

  9. Complex Business Logic

    1. History

    2. Complex Data Models

      1. Aggregates

      2. Entities

      3. Value Objects

      4. Services

      5. Factories

      6. Repositories

  10. Modeling Time

    1. Events

    2. Event Sourcing

    3. Event Storming

  11. Architectural Patterns

    1. Layered Architecture

    2. Hexagonal Architecture

    3. Ports & Adapter

    4. Presentation, Business, Data Access, Service Layers

    5. CQRS (Command Query Responsibility Segregation)

  12. Communication Patterns

    1. Model Translations

    2. Integrating Aggregates

      1. Outbox

      2. Saga

      3. Process Manager

  13. "Hey, this looks like Spring Boot Annotations!"

  14. Security and DDD

    1. Who is in charge?

    2. Identity Access and Access Control

  15. Integration with Agile

  16. Other Related Patterns

    1. Microservices

    2. Event-Driven-Architecture

    3. Data Mesh