Skip to main content

React로 이해하는 도메인 주도 개발

이 문서는 Google Ads 캠페인 설정을 하나의 연속 예제로 사용해 DDD의 핵심 개념과 React 적용 방법을 학습하기 위한 안내서다.

각 장의 핵심 구현은 동일한 업무 규칙을 OOP 기반 모델과 함수형 모델로 함께 보여 준다. OOP 예제는 상태와 행위를 객체에 캡슐화하고, 함수형 예제는 불변 데이터와 순수 함수, Result를 사용한다. 두 방식의 문법보다 비즈니스 규칙과 경계를 같은 위치에 보존하는 원리를 비교한다.

1. 목차​

  1. DDD가 필요한 이유
  2. 비즈니스 경계 나누기
  3. 도메인 모델 만들기
  4. React와 도메인 연결하기
  5. 실전 적용과 검증
  6. 함수형 DDD와 React 적용

2. 각 목차의 핵심 내용​

2.1 DDD가 필요한 이유​

  • DDD와 도메인 모델의 의미
  • 단순 CRUD와 복잡한 비즈니스 로직의 차이
  • React 컴포넌트에 조건문과 정책이 흩어질 때 발생하는 문제
  • 광고 캠페인 요구사항에서 비즈니스 규칙을 식별하는 방법

2.2 비즈니스 경계 나누기​

  • 기획자와 개발자가 같은 업무 용어를 사용하는 Ubiquitous Language
  • 캠페인, 입찰, 타기팅, 광고 소재를 구분하는 Bounded Context
  • 페이지가 아닌 비즈니스 의미를 기준으로 모듈을 나누는 방법
  • Context 사이의 의존성과 모델 공유를 최소화하는 기준

2.3 도메인 모델 만들기​

  • 식별자와 생명주기를 가지는 Campaign Entity
  • 예산 규칙을 표현하는 CampaignBudget Value Object
  • 상태 변경의 일관성을 보호하는 Aggregate와 Aggregate Root
  • 캠페인 게시 조건과 상태 전이를 도메인 행동으로 표현하는 방법
  • 객체의 메서드와 함수형 순수 전이 함수로 같은 규칙을 표현하는 방법

2.4 React와 도메인 연결하기​

  • Domain, Application, Infrastructure, UI의 역할과 의존성 방향
  • Hexagonal Architecture의 중심, Port, Adapter
  • Repository를 이용한 도메인 로직과 API 통신의 분리
  • Google Ads DTO와 도메인 모델을 변환하는 Mapper
  • React Query, React Hook Form, Zod와 도메인 모델의 책임 구분
  • class 기반 Port/Adapter와 함수 레코드 기반 Port/Adapter의 비교

2.5 실전 적용과 검증​

  • Draft 생성부터 게시까지 이어지는 광고 캠페인 설정 흐름
  • 예산, 입찰, 전환 추적, 광고 소재가 결합된 복합 정책 처리
  • 도메인 규칙, Use Case, Adapter, UI를 구분한 테스트
  • 기존 React 프로젝트에 DDD와 Hexagonal Architecture를 점진적으로 도입하는 순서
  • 비즈니스 복잡도보다 추상화 비용이 커지는 것을 피하는 기준

2.6 함수형 DDD와 React 적용​

  • DDD가 객체지향 전용 설계가 아닌 이유
  • Entity와 Value Object를 불변 데이터로 표현하는 방법
  • Aggregate 행동을 순수한 상태 전이 함수와 Result로 구현하는 방법
  • 판별 유니온으로 유효하지 않은 상태를 표현하기 어렵게 만드는 방법
  • Repository와 Use Case를 함수 및 함수 레코드로 구성하는 방법
  • React Component, Hook, Domain 함수의 책임을 구분하는 기준
  • 프런트엔드 검증과 서버의 최종 도메인 검증을 구분하는 방법

다음 글: 함수형 DDD와 React 적용