본문 바로가기
개발 이론/MSA & DDD

[MSA & DDD] DDD??

by dal_been 2023. 11. 12.
728x90

어떤 블로그님의 코드를 보다가 간접참조라는 단어가 나왔고 간접참조를 공부하다보니 DDD라는 개념에 대한 선행이 필요한 것같아서 정리해본다

 

DDD란??

 

MSA와 관계가 있지만 그걸 설명하게 앞서 DDD부터 얘기해보자

 

도메인은 여러 하위 도메인으로 구성된다.(도메인 : 영역, 집합, 유사한 업무의 집합)

 

DDD란 비지니스 도메인 별로 나누어 설계하는 방식이다

왜?? 나누어 설계하느냐? 비지니스를 도메일별로 나눔으로써 확장가능하고 모듈간의 의존성은 최소화하고 응집성을 최대화할 수 있기 때문이다.

 

다시말해 DDD의 핵심 목표는 "Loosly coupling"과 "High cohesion"이다 (앞서 얘기한 의존성 최소화, 응집성 최대화)

 

 

여기서 간단하게 MSA를 말하자면

MSA는 DDD 기반으로 아키텍쳐 패턴을 정의한 것이다. 도메인 내 마이크로서비스와 도메인 외부 마이크로서비스로 구분하고, 마이크로 서비스들간의 커뮤니케이션 방식이 정해진다.

 

결론적으로 MSA 핵심 이점 3가지는 "Loosly coupling"과 "High cohesion" 에 의거한다

 

1. 명확한 모듈 경계

- 시스템 변경이 필요하면, 변경할 특정 도메인 내 마이크로 서비스단위만 이해하고 처리하면된다.

 

2. 독립적 배포

- 데브옵스 환경에서 ci/cd가 자동화되고 강화될수 있었던 것은 MSA의 힘이 크다고 한다. MSA가 배포단위까지 고려해서 설계한것이기 때문이다

 

3.기술 다양성

- 각각 마이크로 서비스의 독립성이 강화되면서 마이크로서비스 내의 기술 선택이 자유로워졌다. 

-도메인 내에는 high cohension으로 인해 유사한 기술 스택을 가져야하지만 도메인 밖 마이크로 서비스들은 loose coupling원칙에 따라 해당 서비스 도메인의 문제를 더 잘 해결할 수 있는 기술 스택을 가질 수 있다

 

 

 

 

'개발 이론 > MSA & DDD' 카테고리의 다른 글

[MSA & DDD] 애그리거트?? 간접참조  (0) 2023.11.13