Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

To Dare Is To Do!

DDD 설계와 SQL 중심 설계 본문

개발 공부

DDD 설계와 SQL 중심 설계

Nick_Choi 2023. 11. 10. 09:37

DDD(Domain Driven Design)란?

도메인 주도 설계 (DDD)는 설계 단계에서부터 기획자, 디자이너 등 프로젝트 이해관계자를 의미하는 도메인 전문가들이 참가하여 개발자와 도메인 전문가 모두가 이해 가능한 도메인 모델을 도출하고 이를 중심으로 발전시켜 나감으로써 복잡한 비즈니스 상황을 해결하는 개발 방법론이다.

 

여기서 도메인이란 소프트웨어로 해결하고자 하는 문제 영역을 의미하며 하나의 도메인은 여러 서브 도메인으로 나눌 수 있다.

예를 들어 배달 중계 어플이라는 도메인이 있다면 음식, 식당, 회원, 주문 등의 서브 도메인으로 나눠질 수 있다.

 

이러한 도메인을 개념적으로 표현한 것이 도메인 모델이다.

 

DDD의 특징

1. 도메인 그 자체와 도메인의 비즈니스 로직에 초점을 둔다.

데이터 중심의 접근법이 아닌 순수한 도메인의 모델과 로직에 집중한다.

 

2. 공통적인 언어를 사용한다.

개발자와 도메인 전문가 등 프로젝트에 참여하는 모든 사람들이 효율적이고 정확한 의사소통을 할 수 있도록 비즈니스 전문 용어를 공통적인 용어로 정의한다. 이를 통해 협업이 진행되는 동안 명확하고 일관성 높은 의사소통을 유지할 수 있다.

 

3. 도메인의 모델을 정교하게 구축한다.

도메인 모델이 정교할수록 도메인에 대한 본질 파악이 용이하고 이로 인해 소프트웨어 설계와 개발이 정확하요 유연해질 수 있다.

 

DDD의 방식

DDD는 전략적 설계와 전술적 설계로 나뉠 수 있다.

전략적 설계 (Strategic Design)

프로젝트에 참여하는 모든 사람들이 모여 공통적인 언어로 도메인 지식을 공유하고 이해한 다음 이를 기반으로 개념과 경계를 식별해 바운디드 컨텍스트로 정의하고 경계의 관계를 컨텍스트 맵으로 정의한다.

 

전술적 설계 (Tactical Design)

전략적 설계에서 도출된 바운디드 컨텍스트와 도메인을 이용하여 애그리거트 패턴, 엔티티와 값 객체, 레포지토리 등을 구성하고 구현한다.

 

 

SQL 중심 설계란?

데이터베이스의 구조와 데이터의 흐름을 중심으로 설계하는 기법이다.

대용량 처리와 관리에 효율적일 수 있으며 많은 프로그래밍 언어와 프레임워크가 DB와의 상호작용을 지원하기 때문에 개발 속도가 빠르다.

하지만 DB의 변경사항이 개발 프로세스에 영향을 줄 가능성이 높기 때문에 코드의 의존성이 높고 유지 보수가 용이하지 못하다는 단점이 있다.

  DDD SQL-DD
설계 중심 Domain 데이터베이스 및 데이터
데이터 처리 방식 도메인 모델 데이터베이스의 쿼리
결합도 낮음 높음

 

 

 

- 주말 안으로 추가 내용 보충 예정


참고

 https://incheol-jung.gitbook.io/docs/q-and-a/architecture/ddd

 

https://youwjune.tistory.com/38

 

https://velog.io/@suhongkim98/MSA%EC%99%80-DDD-%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%A3%BC%EB%8F%84-%EC%84%A4%EA%B3%84%EB%9E%80-2#%EB%8F%84%EB%A9%94%EC%9D%B8%EC%9D%B4%EB%9E%80

'개발 공부' 카테고리의 다른 글

API와 REST API  (0) 2023.10.28