개발자의 logs
<개발공부, 개공> DDD(도메인 주도 설계)란 무엇인가? 본문
오늘은 DDD 에 대해 설명해보고자 한다.
DDD는 이번 달 나에게 많은 좌절감을 안겨줬던 설계방식이다... 물론 현재는 어느정도 익숙해졌다.
그럼 DDD 설명 고고 ! !
<글쓴이의 조언>
참고로 아래 설명을 보고 이해가 안간다해도 머리가 나쁘거나 비정상은 아니다 . 직접 코드를 짜보고 경험해보길 추천한다.
스프링의 JPA나 Repository개념을 알고있다면 이해에 도움이 많이 될 것이다.
정의
DDD(Domain-Driven Design) 또는 도메인 주도 설계라고 부른다.
도메인 패턴을 중심에 놓고 설계하는 방식을 일컫는다. ( 여기서 도메인은 해결해야할 문제라고 생각하면 이해하기 쉽다. )
도메인 주도 설계의 목적
소프트웨어의 복잡성을 최소화 하는 것이다.그리고 요구사항을 쉽게 반영하고 소통이 원활하게 이루어질 수 있다.
도메인 주도 설계의 장점
유지보수가 쉽다.
DDD를 좀 더 공부하다보면 도메인 별로 크게 3가지(= Service, Model, Repository) 영역으로 나누어 역할을 분담시켜 개발하는데, 추가 비지니스 니즈나 버그를 수정할때 어느 부분을 바로 수정해야하는지 알 수 있다.
심지어 방금 입사한 개발자라도 자세한 비지니스 설명없이 코드만 봐도 웬만한건 수정 가능하다.
특징
-
도메인 그 자체와 도메인 로직에 초점을 맞춘다.일반적으로 많이 사용하는 데이터 중심의 접근법을 탈피해서 순수한 도메인의 모델과 로직에 집중하는 것을 말한다.
-
보편적인(ubiquitous) 언어의 사용이다. ( 말이 좀 어렵다 )도메인 전문가와 소프트웨어 개발자 간의 커뮤니케이션 문제를 없애고 상호가 이해할 수 있고 모든 문서와 코드에 이르기까지 동일한 표현과 단어로 구성된 단일화된 언어체계를 구축해나가는 과정을 말한다. 이로서 분석 작업과 설계 그리고 구현에 이르기까지 통일된 방식으로 커뮤니케이션이 가능해진다.
-
소프트웨어 엔티티와 도메인 컨셉트를 가능한 가장 가까이 일치시키는 것이다. 분석 모델과 설계가 다르고 그것과 코드가 다른 구조가 아니라 도메인 모델부터 코드까지 항상 함께 움직이는 구조의 모델을 지향하는 것이 DDD의 핵심원리이다.- 조금 더 쉽게 설명한 사례들
https://huisam.tistory.com/entry/DDD
https://ko.wikipedia.org/wiki/%EB%8F%84%EB%A9%94%EC%9D%B8_%EC%A3%BC%EB%8F%84_%EC%84%A4%EA%B3%84
'개발 공부지식 > *개발 공부*' 카테고리의 다른 글
<개발공부, 개공> 스프링(Spring)이란 무엇인가? (0) | 2022.11.03 |
---|---|
<개발공부, 개공> useEffect에 대해 알아보자. (0) | 2022.10.08 |
React Hooks 란 무엇인가? (0) | 2022.09.29 |
<개발공부, 개공> TypeScript란 무엇인가? TypeScript를 쓰는 이유 (0) | 2022.08.31 |
<개발공부, 개공> Passport, Passport-local 개념정리 (0) | 2022.08.29 |
Comments