
소프트웨어는 결국 현실 세계의 문제를 해결하기 위한 도구입니다.
하지만 비즈니스는 복잡하고, 기획자와 개발자의 언어는 다릅니다.
이 간극을 메우고 유연한 시스템을 만드는 핵심 도구들이 바로 이벤트 스토밍과 DDD입니다.
도메인을 분석하는 방법은 다양합니다. 상황에 맞는 도구를 선택하는 것이 첫걸음입니다.
| 도구 | 핵심 목적 | 특징 |
|---|---|---|
| 이벤트 스토밍 | 비즈니스 흐름 시각화 | 이벤트를 중심으로 유저 내러티브를 파악 |
| 유저 스토리 맵핑 | 사용자 경험과 MVP 식별 | 시간 순서와 우선순위에 따른 사용자 여정 나열 |
| 도메인 스토리텔링 | 협력 구조 탐색 | 픽토그램을 이용해 누가, 무엇을, 어떻게 하는지 기록 |
| 예제 맵핑 | 인수 조건 도출 | 구체적인 규칙과 예시를 통해 모호함 제거 |
| C4 모델 | 아키텍처 시각화 | 분석 결과를 실제 소프트웨어 컨테이너/컴포넌트로 설계 |
이벤트 스토밍은 단순히 순서를 나열하는 것이 아니라, 시스템의 인과관계를 파악하는 과정입니다.
핵심 인사이트: 내러티브의 끝이 반드시 이벤트일 필요는 없습니다.
사용자가 정보를 확인하는 UI로 끝날 수도 있습니다.
이는 피드백 루프의 완성을 의미합니다.
DDD는 크게 "어디에 집중할 것인가"와 "어떻게 구현할 것인가"로 나뉩니다.
데이터 정합성을 맞추는 방법은 두 가지입니다.
사가 패턴: 각 단계가 실패했을 때 이를 되돌리는 '취소 이벤트'를 정의합니다.
각 애그리게이트가 자신의 취소 처리에 책임을 집니다.
프로세스 관리자: 전체 흐름을 통제하는 별도의 '관리자'가 존재합니다.
애그리게이트는 개별 취소 로직에 대해 덜 고민해도 됩니다.
바운디드 컨텍스트를 나누는 이유는 기술적 이유보다 커뮤니케이션 비용 때문인 경우가 많습니다.
결국 DDD의 끝은 함수형 프로그래밍과 맞닿아 있습니다.
DDD는 기술적인 패턴이 아니라, 비즈니스의 복잡도를 어떻게 나누고, 가두고, 연결할 것인가에 대한 철학입니다.