Day 90 · 1/5
🌳 고급 architecture

DDD가 뭔가요?

쉽게 이해하기

레스토랑을 운영한다고 상상해보세요. 주방, 홀, 예약, 결제 등 각 부서가 자기 전문 분야를 맡듯이, DDD는 소프트웨어도 '주문 관리', '재고 관리' 같은 비즈니스 영역별로 나눠서 설계해요. 각 팀이 자기 영역의 언어(메뉴판, 조리법)를 쓰듯이, 코드도 해당 업무 영역의 언어로 작성하는 거죠.

핵심 정리

Domain-Driven Design은 비즈니스 도메인을 중심으로 소프트웨어를 설계하는 방법론이에요.

자세히 알아보기

DDD는 복잡한 비즈니스 로직을 다루는 대규모 시스템에서 특히 중요해요. 전통적인 방식은 데이터베이스 테이블 구조부터 설계하지만, DDD는 비즈니스 로직과 규칙을 먼저 이해하고 코드로 표현해요. 핵심 개념으로는 'Entity'(고유 식별자가 있는 객체), 'Value Object'(값만 중요한 객체), 'Aggregate'(관련된 객체들의 묶음), 'Repository'(데이터 저장소 추상화) 등이 있어요. 예를 들어 쇼핑몰에서 '주문'은 Entity, '배송 주소'는 Value Object, '주문+주문항목+결제정보'를 묶은 것이 Aggregate가 되는 거죠. DDD의 가장 큰 장점은 '유비쿼터스 언어(Ubiquitous Language)'예요. 개발자와 비즈니스 담당자가 같은 용어를 쓰게 되어 소통이 원활해져요. '사용자 테이블의 status 컬럼'이 아니라 '회원 활성화 상태'처럼 비즈니스 언어로 코드를 작성하는 거죠. 실무에서는 마이크로서비스 아키텍처와 함께 자주 사용돼요. 각 서비스가 하나의 '바운디드 컨텍스트(Bounded Context)'가 되어 독립적으로 발전할 수 있어요. 다만 작은 프로젝트에는 오버엔지니어링이 될 수 있으니, 복잡한 비즈니스 규칙이 있는 도메인에 적용하는 게 좋아요.