devops

도메인 주도 설계(Domain Driven Design)와 모놀리식 분해 본문

DevOps/AWS

도메인 주도 설계(Domain Driven Design)와 모놀리식 분해

vata500 2022. 6. 15. 15:18
반응형

도메인(Domain)

도메인 지식이란 어떤 산업과 분야를 이해하기 위해 필요한 지식을 의미한다. 여기서 도메인은 지식, 영향력, 활동 영역으로 개발에서는 S/W로 해결하려는 문제 영역을 말한다.

도메인 주도 설계(DDD)

하나의 도메인 모델에 대한 이해관계가 각자 다름을 인정하고, 각팀에 적합한 하위 도메인을 설정. 해당 하위 도메인에 대한 맥락을 알고 있는 사람이 따라야할 비즈니스 규칙에 대한 경계를 설정하는 설계방식이다.

  • 도메인 자체와 도메인 로직에 초점을 두고, 데이터 중심의 접근법에서 벗어난다.
  • 보편적 언어를 사용한다. 도메인 전문가와 소프트웨어 개발자 간의 커뮤니케이션 문제를 없애고 상호가 이해가능한 문서와 코드로 구축하는 과정이다. 이로써 통일된 방식으로 소통이 가능해진다.
  • 소프트웨어 엔티티와 도메인 컨셉을 가능한 일치시키는 것이다. 도메인 모델부터 코드까지 항상 함꼐 움직이는 구조의 모델을 지향한다.

*엔티티 : 테이블 모델, 고유 식별자

  • Bounded Context : 모델의 경계를 구분짓고 업무 범위 내로만 아키텍처를 구성한다.
  • Ubiquitous Language : 보편 타당한 클래스 이름 짓기가 가능하다. 모든 도메인에 용어를 맞추기 위해 모호한 단어를 쓰지 않아도 된다.

결국 DDD는 마이크로서비스 아키텍처에 적합하다.  마이크로서비스 아키텍처를 도입하기 위해서는

1. 도메인 지식을 가진 엔지니어가 팀마다 존재해야한다. (기능 조직이 아닌 목적 조직화)

2. 여러 서비스가 잘 결합할 수 있도록 디자인한다.

3. 서비스를 오케스트레이션 해야한다.

DDD의 주요 용어

  • 도메인 이벤트 : 발생한 사건
  • 커맨드 : 도메인 이벤트를 트리거하는 명령
  • 외부 시스템 : 도메인 이벤트가 호출하거나 관계가 있는 레거시 또는 외부 시스템
  • 액터 : 개인, 조직의 역할
  • 핫스팟 : 결정하기 힘들거나 어려운 사항
  • 애그리거트 : 도메인 이벤트와 커맨드가 처리하는 데이터, 상태가 변경되는 데이터
  • 정책 : 이벤트 조건에 따라서 진행되는 결정, 이벤트가 발생할 때 커맨드를 실행하는.
  • 정보 : 액터에게 제공되는 데이터로 결정을 내리는데 영향을 주는 정보

 

 

 

반응형
Comments