Blog

[CS] DDD(도메인 주도 설계)란? MSA란?

Category
Author
citeFred
citeFred
PinOnMain
1 more property
DDD와 MSA?
Table of Content

도메인 주도 설계(DDD)란?

도메인 주도 설계(Domain-Driven Design)은 애플리케이션을 개발할 때 도메인에 초점을 맞추어 설계하는 방법론입니다. 도메인은 비즈니스 영역을 나타내며, 이를 효과적으로 모델링하여 애플리케이션을 구축하는 것이 목표입니다.

도메인 설계 예시

도메인은 실제 비즈니스 업무의 영역을 나타냅니다. 예를 들어, 음식 주문 배달 애플리케이션에서는 회원, 주문, 음식, 결제 등이 상위 도메인이 될 수 있습니다.
각 상위 도메인은 회원은 회원 정보, 회원 포인트, 주문은 배달 주문자, 배달 정보, 주문 정보, 배달 추적 정보, 배달 주소 정보 처럼 하위 도메인으로 세분화하여 설계 할 수도 있습니다.
옷 쇼핑몰을 예로 들면 손님들이 주문하는 도메인, 점주들이 관리하는 도메인 등이 있을 수 있습니다. 이러한 도메인들이 서로 상호작용하며 설계하는 것이 도메인 주도 설계입니다.
도메인 주도 설계에서 도메인은 각각 분리되어 있는데, 이러한 관점에서 MSA(MicroService Architecture)를 적용하면 용이한 설계를 할 수 있다. DDD에서는 같은 객체들이 존재할 수 있는데, 예를 들어 옷 구매자의 입장에서는 (name, price)와 같은 객체 정보를 담지만, 판매자의 입장에서는(madeTie, size, madeCountry) 등이 있을 수 있습니다. 즉, 문맥에 따라 객체의 역할이 바뀔 수 있는 것이 DDD입니다.

MSA란?

DDD에서 좋은 서비스를 개발하기 위한 핵심 기본 요소인 Loose Coupling(느슨한 결합)과 High Cohesion(높은 응집)은 MSA를 설계할 때 꼭 기억해야 할 설계 원칙입니다.
MSA(Microservice Architecture)는 모든 시스템의 구성요소가 한 프로젝트에 통합되어 있는 Monolithic Architecture(모놀리식 아키텍쳐)의 한계점을 극복하고자 등장하게 되었습니다.
MSA는 1개의 시스템을 독립접으로 배포가능한 각각의 서비스로 분할합니다. 각각의 서비스는 API를 통해 데이터를 주고받으며 1개의 큰 서비스를 구성합니다.
장점
일부 서비스에 장애가 발생하여도 전체 서비스에 장애가 발생하지 않는다.
각각의 서비스들은 서로 다른 언어와 프레임워크로 구성될 수 있다.서비스의 확장이 용이하다.
단점
서비스가 분리되어 있어, 테스팅이나 트랜잭션 처리 등이 어렵다.
서비스 간에 API로 통신하기 때문에 그에 대한 비용이 발생한다.
서비스 간의 호출이 연속적이기 때문에 디버깅 및 에러 트레이싱이 어렵다.
Search
 | Main Page | Category |  Tags | About Me | Contact | Portfolio