📅 날짜
2025/08/12
📖 SQL 기반 설계와 DDD 기반 설계
📌 DDD 설계란
DDD(Domain-Driven Design, 도메인 주도 설계)는 소프트웨어를 도메인과 비즈니스 로직 중심으로 설계하는 방식이다.
즉, 소프트웨어에서 다루는 개념·규칙·행위를 도메인 모델로 정의하고, 이를 기준으로 코드 구조를 만든다.
- 도메인 : 특정 업무나 서비스의 큰 범주 또는 유사한 업무의 집합
예) 배달 애플리케이션
음식(Food) 도메인 → 가격, 이름, 맛 등
회원(Member) 도메인 → 이름, 주소, 연락처 등
DDD 설계 흐름
- 도메인 분석
현업 용어와 규칙을 분석 (유비쿼터스 언어)
예: 주문(Order), 결제(Payment), 배송(Delivery)
- 도메인 모델링
엔티티(Entity), 값 객체(Value Object), 도메인 서비스(Service) 식별
비즈니스 로직 중심의 메서드 설계
- 애그리게잇 경계 설정
트랜잭션 단위, 일관성 유지 범위 정의
- 리포지토리 인터페이스 설계
저장소의 인터페이스만 정의 (DB 기술은 나중에 결정)
DB 설계는 뒷단 구현 세부사항으로 취급하며, 비즈니스 로직이 우선이다.
장점
- 비즈니스 로직 중심 개발로서 요구사항 변경 대응이 쉬움
- 모델이 업무 규칙을 명확히 표현 → 개발자·기획자 간 의사소통 용이
- 코드 재사용성과 확장성 높음
단점
- 초기 설계·분석에 많은 시간과 노력이 필요
- 소규모·단순 프로젝트에는 과도한 설계가 될 수 있음
- DDD 경험 부족 시 설계 난이도 높음
📌 SQL 기반 설계란
SQL 기반 설계는 데이터베이스 구조와 데이터 흐름 중심으로 시스템을 설계하는 방식이다.
관계형 DB 테이블을 먼저 만들고, 그 구조에 맞춰 애플리케이션을 구현한다.
SQL 기반 설계 특징
- DB 우선 설계
테이블, 컬럼, PK/FK, 제약조건, 정규화 등을 먼저 정의
- 데이터 중심 개발
CRUD 중심 SQL 작성 후, 이를 호출하는 애플리케이션 코드 작성
- DB 종속성 높음
스키마 변경 시 관련 SQL, 객체 생성 코드 전부 수정 필요
- 객체지향과 차이
DB는 정규화, 애플리케이션은 캡슐화 지향 → 설계 패러다임 차이 존재
장점
- 빠르게 구현 가능 (데이터 요구사항만 정리하면 시작 가능)
- 데이터 무결성과 성능 최적화 용이 (인덱스, 제약조건 활용)
- 단순 CRUD, 리포트·조회 중심 서비스에 적합
단점
- 비즈니스 로직 표현 한계 → 복잡한 규칙은 코드 밖에서 관리 필요
- DB 종속성 높아 변경 유연성 떨어짐
- 대규모·복잡 도메인에는 부적합
📊DDD vs SQL 기반 설계 비교

🎓느낀점
DDD는 로직과 개념을 먼저 고려하고, SQL 기반 설계는 데이터 구조를 먼저 고려한다는 것을 알게되었다. 한쪽이 더 좋다보다는 상황에 맞게 어느쪽이 더 효율적인지를 고려하면 좋을 것 같다.