어떤 블로그님의 코드를 보다가 간접참조라는 단어가 나왔고 간접참조를 공부하다보니 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 |
---|