본문 바로가기

개발자의 logs

<개발공부, 개공> DDD(도메인 주도 설계)란 무엇인가? 본문

개발 공부지식/*개발 공부*

<개발공부, 개공> DDD(도메인 주도 설계)란 무엇인가?

주인장v 2022. 10. 23. 23:15

 

 

 

오늘은 DDD 에 대해 설명해보고자 한다.

 

DDD는 이번 달 나에게 많은 좌절감을 안겨줬던 설계방식이다... 물론 현재는 어느정도 익숙해졌다. 

 

그럼 DDD 설명 고고 ! !

 

 

<글쓴이의 조언>

 

참고로 아래 설명을 보고 이해가 안간다해도 머리가 나쁘거나 비정상은 아니다 . 직접 코드를 짜보고 경험해보길 추천한다.

스프링의 JPA나 Repository개념을 알고있다면 이해에 도움이 많이 될 것이다.

 

정의

 

DDD(Domain-Driven Design) 또는 도메인 주도 설계라고 부른다. 

 

메인 패턴을 중심에 놓고 설계하는 방식을 일컫는다. ( 여기서 도메인은 해결해야할 문제라고 생각하면 이해하기 쉽다. )

 

 

도메인 주도 설계의 목적

 

소프트웨어의 복잡성을 최소화 하는 것이다.그리고 요구사항을 쉽게 반영하고 소통이 원활하게 이루어질 수 있다.

 

 

도메인 주도 설계의 장점

유지보수가 쉽다.

 

DDD를 좀 더 공부하다보면 도메인 별로 크게 3가지(= Service, Model, Repository) 영역으로 나누어 역할을 분담시켜 개발하는데, 추가 비지니스 니즈나 버그를 수정할때 어느 부분을 바로 수정해야하는지 알 수 있다.

 

심지어 방금 입사한 개발자라도 자세한 비지니스 설명없이 코드만 봐도 웬만한건 수정 가능하다. 

 

특징

  • 도메인 그 자체와 도메인 로직에 초점을 맞춘다.
    일반적으로 많이 사용하는 데이터 중심의 접근법을 탈피해서 순수한 도메인의 모델과 로직에 집중하는 것을 말한다.
  • 보편적인(ubiquitous) 언어의 사용이다. ( 말이 좀 어렵다 )
    도메인 전문가와 소프트웨어 개발자 간의 커뮤니케이션 문제를 없애고 상호가 이해할 수 있고 모든 문서와 코드에 이르기까지 동일한 표현과 단어로 구성된 단일화된 언어체계를 구축해나가는 과정을 말한다. 이로서 분석 작업과 설계 그리고 구현에 이르기까지 통일된 방식으로 커뮤니케이션이 가능해진다.
  • 소프트웨어 엔티티와 도메인 컨셉트를 가능한 가장 가까이 일치시키는 것이다. 분석 모델과 설계가 다르고 그것과 코드가 다른 구조가 아니라 도메인 모델부터 코드까지 항상 함께 움직이는 구조의 모델을 지향하는 것이 DDD의 핵심원리이다.
     
     
     
     
     
     
     
    -  조금 더 쉽게 설명한 사례들
     
 

도메인 주도 설계(Domain Driven Design)란?

도메인 주도 설계(Domain Driven Design, DDD)를 도입하는 회사나 DDD 경험 있는 개발자를 구하는 모집 공고가 흔하다. 커뮤니티 게시판에도 DDD 스터디 모집글이 보이고, 아는 지인들도 DDD 스터디 진행하

loopstudy.tistory.com

 

https://huisam.tistory.com/entry/DDD

 

DDD(Domain Driven Design) - 도메인 주도 설계란? 마이크로서비스의 관점에서

객체지향에서부터 도메인 주도 설계를 이해하기 위해서는 객체지향을 먼저 이해할 필요가 있습니다 객체지향에서의 핵심은 뭘까요? 객체지향에서의 핵심은 실세계의 객체(물건, 사람, 주문 ....

huisam.tistory.com

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

 

도메인 주도 설계 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. DDD ( 도메인 주도 설계)는 해당 도메인과 일치하도록 소프트웨어를 모델링하는 데 중점을 둔 소프트웨어 설계 접근 방식이다.[1] 한 가지 중요한 특징은 소프트

ko.wikipedia.org

 

Comments