DDD 설계와 SQL 중심설계

재우·2023년 11월 10일
0
post-custom-banner

프로그래머스 스진초 과제를 진행하면서 작성한 내용입니다.



DDD ( Domain Driven Design )

DDD는 도메인 주도 설계를 의미하는데, 소프트웨어가 다루는 도메인과 비즈니스 로직을 중심으로 설계하는 방식이다.
-> 소프트웨어 시스템에서 사용되는 모든 개념과 동작을 도메인 모델로 표현

여기서 도메인은 어떠한 세부 분류의 상위분류(대분류)를 말한다.
쉽게말해, 사용자가 받는 서비스의 큰 단위나 유사한 업무(카테고리)의 집합을 의미한다.

예를 들어, 배달 애플리케이션에서의 도메인은 아래와 같이 예시를 들 수 있다.

  • 음식 (Domain) - 가격, 이름, 맛 (세부분류)
  • 회원 (Domain) - 이름, 주소, 연락처 (세부분류)

따라서, DDD는 '비즈니스 Domain 별로 나누어 설계하는 방식' 을 의미한다.


장점 및 특징

  • 비즈니스 로직에 중점을 둬서 개발할 수 있다 -> 비즈니스 요구사항 변경에 용이
  • 도메인 모델이 비즈니스 요구사항을 명확하게 표현하고, 이해하기가 쉽기 때문에 개발자와 비즈니스 이해 관계자 간에 의사소통이 원활해짐
  • 비즈니스 로직이 중심이 되기때문에 코드의 유지보수와 확장성이 높아짐

단점

  • 복잡한 도메인을 다루는 대규모 프로젝트에 적합한 설계로서, 개발 및 유지보수 비용이 증가할 수 있다.
  • 도메인 모델의 설계와 구현에 시간과 노력이 필요하기 때문에 초기에는 개발 속도가 상대적으로 느릴 수 있다.



SQL 중심 설계

데이터베이스의 구조(테이블, 컬럼, 제약조건 등) 와 쿼리를 중심으로 설계하는것을 의미한다. 데이터베이스와 관련된 요구사항을 먼저 정의하고, 데이터베이스 스키마를 설계한 후, 이를 기반으로 기능을 구현하는 방식이다.

장점 및 특징

  • 대용량 처리와 관리에 효율적이다.
  • 대부분의 프로그래밍 언와 프레임워크에서 데이터베이스와의 상호작용을 지원하기 때문에 개발속도가 빠르다.
  • 데이터베이스의 구조를 중심으로 설계하기 때문에, 데이터의 일관성을 유지하기 쉽다.

단점

  • 데이터베이스의 구조가 변경되면 이에 맞게 코드도 변경되어야 하므로, 유지보수성이 떨어진다.



DDD와 SQL 중심 설계의 차이점


DDD
: 도메인 모델링을 통해 객체를 생성하고, 레포지토리를 통해 데이터베이스에 저장

// 학생(Student) 엔티티 조회
Student student = studentRepository.findById(1);

// 학생(Student) 엔티티 추가
Student newStudent = new Student(2, "홍길동", 2);
studentRepository.save(newStudent);

SQL 중심 설계
: SQL 중심 설계에서는 SQL 쿼리를 직접 작성하여 데이터베이스를 조작

-- 학생(Student) 테이블 조회
SELECT *
FROM Student
WHERE id = 1;

-- 학생(Student) 테이블에 새로운 학생 추가
INSERT INTO Student(id, name, grade)
VALUES(2, '홍길동', 2);



참고

https://happycloud-lee.tistory.com/94
https://dev-coco.tistory.com/166

post-custom-banner

0개의 댓글