도메인 주도 설계를 위한 함수형 프로그래밍 - 코틀린과 타입스크립트로 구현하는 실전 도메인 모델링
스콧 블라신 지음, 박주형 옮김 / 제이펍 / 2025년 11월
평점 :
장바구니담기




도메인 주도 설계(DDD)는 이해하면 강력하지만, 접근하기 어렵고 구현하기 더 어렵다는 이미지가 강합니다.
반대로 함수형 프로그래밍(FP)은 순수 함수·불변성·타입 중심 사고 덕분에 코드를 단순하고 예측 가능하게 만들어 주죠.

《도메인 주도 설계를 위한 함수형 프로그래밍》은 이 두 세계를 섞어
복잡한 업무 도메인을 함수형 사고로 단순화하는 방법을 실제 예제와 함께 보여주는 책입니다.

읽으면서 “아 이게 이렇게 연결되는구나!” 하고 무릎을 치게 되는 순간이 많았습니다.




 1. 이 책이 다루는 핵심 개념

책은 다음 네 가지 중심 축으로 구성됩니다.

 1) 업무 도메인을 ‘함수형 관점’으로 모델링

도메인의 개념을 데이터 + 행동으로 구성하는 기존 방식 대신
입력 → 출력 → 부수효과 분리라는 FP 원칙에 따라 재해석합니다.

  • 불변 객체로 도메인 안정성 확보
  • 작고 순수한 함수 조합으로 도메인 로직 구성
  • 유비쿼터스 언어를 타입으로 강제
  • 복잡한 도메인 규칙을 “타입 체계” 안에서 표현

DDD를 함수형으로 바라보면 설계 자체가 훨씬 직관적으로 정리된다는 점이 인상적입니다.




 2) 애그리게잇을 “변경 가능한 객체” 대신 “순수 함수”로 다룬다

전통적인 DDD에서 애그리게잇은 엔티티 중심으로 구성되죠.
하지만 함수형 DDD에서는 애그리게잇은 상태를 반환하는 함수의 묶음으로 다룹니다.

즉,

현재 상태 + 명령(Command) → 새로운 상태 + 이벤트(Event)

이 패턴이 책 전반에서 일관되게 사용되며,
이러한 접근은 실제 이벤트 소싱이나 CQRS와도 자연스럽게 연결됩니다.


 3) 도메인을 잇는 워크플로우를 “함수 조합”으로 설계

업무 프로세스를 객체의 메서드 호출 흐름으로 표현하는 대신,
각 단계를 명확히 분리해 작은 함수를 조합하여 워크플로우를 만드는 방식입니다.

  • 검증 단계
  • 비즈니스 규칙 적용
  • 결과 생성
  • 이벤트 발행

과정들이 마치 파이프라인처럼 이어지고, 이 때문에 코드가 훨씬 읽기 좋아집니다.


✔ 4) 타입 기반 유효성 검증이 정말 좋다

책에서 가장 큰 장점 중 하나는 **“타입 레벨에서 문제를 예방하는 방식”**입니다.

예를 들어:

  • 이메일은 EmailAddress 타입으로 강제
  • 주문은 UnvalidatedOrder → ValidatedOrder → PlacedOrder 단계
  • 잘못된 상태는 타입 자체로 표현할 수 없음

이렇게 설계하면 컴파일러가 버그를 잡아주는 느낌을 받게 됩니다.


 2. 이 책이 좋은 점

⭐ 실무와 바로 연결된다

이 책은 설계 개념만 말하는 게 아니라,
실제 현업에서 DDD가 어려운 이유를 하나씩 짚어주고 그 해결책을 FP에서 찾습니다.

⭐ 코드가 깔끔하고 반복이 없다

함수형 코드는 본질적으로 의존성을 줄이고,
로직을 작은 단위로 나누기 때문에 유지보수성이 크게 올라갑니다.

⭐ 복잡한 도메인을 단계별로 분해하는 데 매우 유리하다

도메인을 Validation → Domain Logic → Result
이렇게 명확히 쪼개는 방식은 DDD 입문자뿐 아니라 숙련자에게도 매우 유용합니다.


3. 경계 지어진 맥락(Bounded Context)의 역할

3장 초반에서는 “경계 지어진 맥락을 자율적인 소프트웨어 컴포넌트로 만드는 법”을 설명한다.
이 개념은 DDD의 핵심이지만 추상적으로 느끼는 경우가 많다.
책에서는 이 구조를 도식으로 명확하게 보여준다.


이 그림 하나만으로도
“각 맥락은 독립적이며, 공유 모델은 오히려 위험하다”
라는 메시지가 확실하게 전달된다.


4. 맥락 간 통신 & 신뢰 경계

이어서 맥락 간의 데이터 흐름과 검증 기준을 다루는데,
이 부분도 시각 자료가 핵심이다.


책은 단순히 “데이터를 주고받는다”가 아니라,
어떤 시점에서 “검증이 반드시 필요하며”,
어디서 “도메인 규칙을 보호할지”까지 보여준다.



5. 맥락 지도(Context Map)

3장의 백미는 단연 맥락 지도 설명이다.


Upstream / Downstream 관계를 도식으로 보여주고,
팀 간 협업까지 연관된다는 점을 설명한다.


6. 양파 아키텍처(Onion Architecture)

마지막으로 함수형 아키텍처의 구조를 그림으로 완성해준다.


전통 계층형 아키텍처와의 차이를 한눈에 비교할 수 있어서
리뷰에 넣으면 독자들이 가장 좋아할 만한 이미지다.


7. 아쉬운 점 (솔직하게)

  • 함수형 문법에 익숙하지 않다면 초반 난이도가 조금 있다
  • 예제 언어가 스칼라/하스켈 계열 사고방식을 기반으로 해서
    오직 Java/Kotlin 개발자에게는 약간 낯선 느낌이 있음
  • 기존 객체지향 DDD 스타일과 비교 설명이 좀 더 많았으면 좋았을 듯

하지만 이러한 단점들은 “함수형 DDD”라는 큰 흐름을 이해하고 나면 금방 해소됩니다.


8. 이런 사람에게 강력 추천

  • DDD를 했는데 복잡해서 좌절해 본 개발자
  • 도메인 모델이 점점 ‘객체 무덤’이 되는 경험이 있는 사람
  • 마이크로서비스에서 도메인 경계를 더 명확히 하고 싶은 팀
  • 이벤트 소싱, CQRS를 이해하고 싶은 개발자
  • 타입 중심 설계를 좋아하는 사람

특히 엔터프라이즈/금융권/공공 SI 개발자에게 매우 실용적인 책입니다.



📌 총평

『도메인 주도 설계를 위한 함수형 프로그래밍』은
DDD의 본질을 함수형 패러다임으로 재정리한 책입니다.

  • 명확한 도메인 경계
  • 예측 가능한 로직
  • 타입 기반 안정성
  • 순수 함수 기반 조합
  • 이벤트 중심 설계

이런 원칙들이 합쳐져 복잡한 실제 업무 도메인도 훨씬 깔끔하게 표현할 수 있습니다.

DDD가 어려웠던 이유를 해결해 주는 책,
그리고 실무 아키텍처 설계를 한 단계 올려주는 책으로 추천할 만합니다.


댓글(0) 먼댓글(0) 좋아요(3)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo