Skip to content

Instantly share code, notes, and snippets.

Last active May 4, 2022 11:14
Show Gist options
  • Save Richard87/af71f702b164302338c6adb9ba52a663 to your computer and use it in GitHub Desktop.
Save Richard87/af71f702b164302338c6adb9ba52a663 to your computer and use it in GitHub Desktop.
DDD Workshop

Domain-driven Design workshop

Instructor: Jimmy Bogard

Strategic Design

Not all subdomains require software!

Generic subdomains, might be good to outsource / integrate different product Supporting subdomains, low complexity / may or may not require (custom) software


  • Solved problem? Yes / No
  • Competitive advantage? Important / Not important
  • Complexity? High / Low
  • Volatility? High / Low
  • Implementation? In-house / Buy / Outsource
  • Problem? Interesting / Solved / Obvious

Ubiquitous language: A single, shared language describing the busines domain

  • Use same language in all layers (screen, api, code, database)



  • Course
    • Course admin
    • Tasks (Meeting, Scorm, Forms)
    • Progress
    • Stats
    • Signup
    • Participant / Invitee / Admin
    • Meetings (Attendee)
    • Groups (Member / Previous member / Counselor / Leader)
  • Forms
    • Edit form
    • View results
    • Answerset
      • Tasks Variants (these belong in respected domain/subdomain):
        • Variants is about who is allowed to create/edit/see them, and specifically Course which is a required Task to complete a course.
        • Each should have their own endpoints to create/updateAnswerset/view, but the API should be identical, so the frontend can be as simple as possible.
        • Variants:
          • Course-Anonumous *Regular form task w/Anonumous
          • Course *Regular form task
          • SKIL *Global forms
          • Office *New
          • Doctor *New
          • Kommunedashboard *New
          • Preview *Hack
  • Kommunedashboard
    • Backoffice
    • Frontoffice
  • Profile / Office
  • Nefle
    • Setup
    • Venterom
  • Automatic emails (core)
  • Helfo (supporting domain)
  • PraksisNett
  • Authentication (keycloak, generic/supportiv subdomain?)

Tactical design

  • Implement outbox pattern for Integration (old Domain) events, for example "UserCreated"
  • Remove "SKIL Integration messages" like UserProfileChanged, and have the domain dispatch its own messages
  • Async Events (Domain Events) vs Integration Events


Link domain to Sharepoint folder? upload files there instead of to S3?

Saga = Specialized Aggregate / Entity

Book tips

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment