Skip to content
Leo Jung

Archives

All the articles I've archived.

2025 7
February 4
January 3
2024 23
December 7
November 6
October 10
  • [DDD Intro #10] Anti-Corruption Layer: Protecting my model from external models

    Creating a good domain model is hard. We need to talk with domain experts, refine Ubiquitous Language, split Bounded Contexts, and think about Aggregate boundaries. But even a model created with difficulty can easily break down.

  • [DDD Intro #9] Context Map: Boundaries do not exist alone

    Once we understand Bounded Context, we let go of the desire to merge models into one. We accept that the same word can have different meanings depending on context, and that several consistent models can be better than one giant model.

  • [DDD Intro #8] Core Domain: Do not spend the same care everywhere

    When studying DDD, it is tempting to apply good design everywhere. We create Entities, Value Objects, split Aggregates, and set up Repositories and Domain Services. We publish Domain Events and cleanly separate layers.

  • [DDD Intro #7] Why DDD fails

    After studying DDD, it feels like design should get better. Once we learn concepts such as Entity, Value Object, Aggregate, Repository, and Domain Event, it feels like complex business logic can be organized cleanly.

  • [DDD Intro #6] Domain Event: Expressing what happened in the domain

    A domain model is not made only of state. Things keep happening in the domain. Orders are placed, payments are completed, shipments are requested, subscriptions are renewed, refunds are approved, and entitlements expire.

  • [DDD Intro #5] Aggregate: The boundary of consistency

    Among DDD's tactical patterns, Aggregate is one of the most important and most misunderstood concepts. Entity and Value Object are relatively intuitive. Aggregate feels vague when we first encounter it.

  • [DDD Intro #4] Bounded Context: A model is consistent only within a boundary

    If asked to choose just one of the most important concepts in DDD, many people would say Bounded Context. At the same time, it is also one of the most misunderstood concepts.

  • [DDD Intro #3] Ubiquitous Language: Good design starts with good language

    Ubiquitous Language is one of the most important concepts in DDD, and also one of the easiest to treat lightly. Many teams understand Ubiquitous Language as little more than "creating a glossary." Of course, organizing terms is a good start. But Ubiquitous Language is much deeper than a glossary.

  • [DDD Intro #2] A model is not a copy of reality

    To understand DDD, we first need to rethink the word "model." Many people think of a model as something that copies reality as accurately as possible. There is a member in reality, so we create Member. There is an order, so we create Order. There is a payment, so we create Payment. We try to include every attribute that exists in reality.

  • [DDD Intro #1] DDD is not a technology, but a perspective

    When you first study DDD, technical terms naturally stand out first. Entity, Value Object, Aggregate, Repository, Domain Service, Domain Event. Go a little further and terms like Layered Architecture, Hexagonal Architecture, CQRS, and Event Sourcing follow.