📅 날짜

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 기반 설계는 데이터 구조를 먼저 고려한다는 것을 알게되었다. 한쪽이 더 좋다보다는 상황에 맞게 어느쪽이 더 효율적인지를 고려하면 좋을 것 같다.

profile
takeitEasy

0개의 댓글