Aarchitecture/Domain Driven Design
도메인 주도 설계란?
훈지런
2022. 12. 20. 14:34
모노리식 아키텍처
기존 전통적인 아키텍처.
하나의 서비스 또는 애플리케이션이 하나의 거대한 아키텍쳐
하나로 똘똘 뭉쳐있다보니 내부 의존성이 강함
스케일 아웃의 대상은 모노리스 전체가 됨.
장점
- 작은 규모의 프로젝트작업이 용이함
- 개발환병이 복잡하지않음
- End to End 테스트가 용이함.단점
- 프로젝트 규모가 커질수록 빌드, 배포 시간이 길어짐.
- 작은 수정에도 전체를 빌드하고 배포해야함
- 유지보수가 힘들어짐
- 일부의 기능(오류)이 전체에 영향을 줌
- 기능별로 원하는 기술을 선택하는데 까다로움
이런 모놀리식에서 벗어나고자
강한 내부 의존성을 벗어나고자 분리를 함.
너무 분리 하니 글로벌 복잡성이 높아지게됨.
로컬 복잡성과 글로벌 복잡성의 중간지점이 DDD라고 보면 됨.
DDD의 핵심 요소
- 느슨한 결합도
- 놉은 응집도
도메인 주도 설계란?
- 말 그대로 도메인을 기준으로 설계
- 도메인 : 기업의 주요 활동 영역. 회사가 제공하는 서비스.
- Sub domain (하위 도메인) : 비즈니스 활동의 세분화된 영역 , 제공하는 서비스 단위
하위 도메인 유형
- 핵심(Core)
- 회사가 다른 경쟁업체와 다르데 수행하는 것.
- 복잡하고 구현이 어렵고, 다른회사와 달라서 경쟁력 제공
- 일반(Genegic)
- 모든 회사가 같은 방식으로 구현하고있는 비즈니스 활동
- 복잡하고 구현이 어렵지만, 경쟁력을 제공하지않는 알려진 영역
- ex) 이미 만들어진 제품, 오픈 소스 솔루션
- 지원(Supporting)
- 회사 비즈니스 지원 활동
- 기능이 간단.
- ex) 사내에서 구현 하지 않음