본문으로 건너뛰기
Leo Jung

아카이브

연도와 월별로 모아둔 글입니다.

2025 7
2월 4
  • [DDD Intro #30] 내가 이해한 DDD: 좋은 설계는 좋은 질문에서 시작된다

    DDD를 처음 접하면 용어가 먼저 보인다. Entity, Value Object, Aggregate, Repository, Domain Service, Domain Event, Bounded Context, Context Map. 여기에 CQRS, Event Sourcing, Hexagonal Architecture, Microservice까지 이어지면 DDD는 거대한 기술 체계처럼 느껴진다.

  • [DDD Intro #29] DDD 도입 체크리스트

    DDD는 강력한 접근이지만 모든 문제에 필요한 것은 아니다. 복잡한 도메인에는 큰 도움이 되지만, 단순한 CRUD 시스템에 과하게 적용하면 오히려 비용만 늘어날 수 있다.

  • [DDD Intro #28] 모듈러 모놀리스: 마이크로서비스 전에 생각할 것

    시스템이 커지면 서비스를 나누고 싶어진다. 주문, 결제, 회원, 알림, 정산을 각각 독립 서비스로 만들면 더 깔끔해질 것 같다. 각 팀이 자신의 서비스를 소유하고, 독립적으로 배포하고, 장애도 격리할 수 있을 것처럼 보인다.

  • [DDD Intro #27] 레거시 시스템에 DDD 적용하기

    DDD를 공부하다 보면 깨끗한 예제를 많이 보게 된다. 도메인 객체는 선명하고, 계층은 분리되어 있으며, Aggregate 경계도 잘 잡혀 있다. 하지만 현실의 시스템은 그렇지 않은 경우가 많다.

1월 3
2024 23
12월 7
11월 6
10월 10
  • [DDD Intro #10] Anti-Corruption Layer: 외부 모델로부터 내 모델을 지키기

    좋은 도메인 모델을 만드는 일은 어렵다. 도메인 전문가와 대화하고, 유비쿼터스 언어를 다듬고, Bounded Context를 나누고, Aggregate 경계를 고민해야 한다. 그런데 어렵게 만든 모델도 쉽게 망가질 수 있다.

  • [DDD Intro #9] Context Map: 경계는 혼자 존재하지 않는다

    Bounded Context를 이해하면 모델을 하나로 합치려는 욕심을 내려놓게 된다. 같은 단어라도 맥락에 따라 다른 의미를 가질 수 있고, 하나의 거대한 모델보다 여러 개의 일관된 모델이 더 나을 수 있다는 사실을 받아들이게 된다.

  • [DDD Intro #8] Core Domain: 모든 곳에 같은 정성을 쏟지 않는다

    DDD를 공부하다 보면 좋은 설계를 모든 곳에 적용하고 싶어진다. Entity를 만들고, Value Object를 만들고, Aggregate를 나누고, Repository와 Domain Service를 세운다. 도메인 이벤트도 발행하고, 계층도 깔끔하게 분리한다.

  • [DDD Intro #7] DDD가 실패하는 이유

    DDD를 공부하고 나면 설계가 더 좋아질 것처럼 느껴진다. Entity, Value Object, Aggregate, Repository, Domain Event 같은 개념을 익히고 나면 복잡한 비즈니스 로직도 깔끔하게 정리될 것 같다.

  • [DDD Intro #6] Domain Event: 도메인에서 일어난 일을 표현하기

    도메인 모델은 상태만으로 이루어져 있지 않다. 도메인에서는 계속 어떤 일이 일어난다. 주문이 접수되고, 결제가 완료되고, 배송이 요청되고, 구독이 갱신되고, 환불이 승인되고, 이용 권한이 만료된다.

  • [DDD Intro #5] Aggregate: 일관성의 경계

    DDD의 전술적 패턴 중에서 가장 중요하면서도 가장 많이 오해되는 개념이 Aggregate다. Entity와 Value Object는 비교적 직관적으로 받아들이기 쉽다. 하지만 Aggregate는 처음 접하면 애매하다.

  • [DDD Intro #4] Bounded Context: 모델은 경계 안에서만 일관된다

    DDD에서 가장 중요한 개념을 하나만 고르라면 많은 사람이 Bounded Context를 이야기할 것이다. 그런데 동시에 가장 많이 오해되는 개념이기도 하다.

  • [DDD Intro #3] 유비쿼터스 언어: 좋은 설계는 좋은 언어에서 시작된다

    DDD에서 가장 중요하면서도 가장 쉽게 가볍게 다뤄지는 개념이 유비쿼터스 언어다. 많은 팀이 유비쿼터스 언어를 “용어집을 만드는 일” 정도로 이해한다. 물론 용어를 정리하는 것은 좋은 시작이다. 하지만 유비쿼터스 언어는 용어집보다 훨씬 더 깊은 개념이다.

  • [DDD Intro #2] 모델은 현실의 복사본이 아니다

    DDD를 이해하려면 먼저 “모델”이라는 말을 다시 생각해야 한다. 많은 사람이 모델을 현실을 최대한 정확하게 옮긴 것이라고 생각한다. 현실에 회원이 있으니 Member를 만들고, 주문이 있으니 Order를 만들고, 결제가 있으니 Payment를 만든다. 현실에 있는 속성은 되도록 빠짐없이 담으려 한다.

  • [DDD Intro #1] DDD는 기술이 아니라 관점이다

    DDD를 처음 공부하면 자연스럽게 기술적인 단어들이 먼저 눈에 들어온다. Entity, Value Object, Aggregate, Repository, Domain Service, Domain Event. 조금 더 나아가면 Layered Architecture, Hexagonal Architecture, CQRS, Event Sourcing 같은 단어들이 따라온다.