DevOps/DevOps

도메인 주도 설계 (DDD, Domain-Driven Design, 분산화 응용 프로그램 설계, 마이크로서비스, miro)

chanstory 2023. 2. 16. 21:04
반응형

도메인 이란?

- 지식, 영향력 또는 활동 영역

- 개발 분야에서는 소프트웨어로 해결하려는 문제의 영역을 의미함

 

도메인 지식 이란?

- 어떤 산업 또는 분야를 이해하기 위해 필요한 지식

 

 

도메인을 개념적으로 표현하는 방법

- 객체지향 설계, ERD 등

 

 

도메인 주도 설계의 주요 용어

- 보편언어 (ubiquitous language)

   => 도메인의 특정 업무와 관련된 사람들 사이에서 통용되는 개념

- 한정된 맥락 (bounded context)

   => 한정된 맥락이 없다면 클래스 이름 설계의 어려움, 클래스가 비대해질 위험, 단일 책임 원칙 위배 가능성 높음, 의존 관계 신경써야함 등의 단점이 있음

 

 

DDD 가 제안하는 해결책

- 서비스를 나눔 - 데이터 베이스도 나눔 (마이크로 서비스와 DDD는 같지 않으며, 마이크로서비스 아키텍처는 DDD 실천을 위한 하나의 방법일 뿐임)

- 업무 범위를 나눔

  => 모델의 경계를 분명하게 구분 짓는다, 업무 범위 내로만 아키텍처를 구성함 (한정된 맥락 - bounded context)

  => 모든 도메인에 용어를 맞추기 위해 모호한 단어를 쓸 필요가 없음 (보편 언어 - ubiquitous language)

 


도메인 주도 설계 실습 

활용 도구

- 도메인 주도 설계 실습을 위해 miro 를 이용함

https://miro.com/

 

모든 팀을 위한 시각 협업 플랫폼 | Miro

분산된 팀을 위한 확장 가능하고 안전한 장치 간, 기업 급 팀 협업 화이트보드. 전 세계 3,500만 명 이상의 사용자와 함께하세요.

miro.com

 

업무개요 (실제 적용중인 시스템이 아니며 실습을 위한 가상의 시스템 설계입니다.)

- 코로나 19 대응지침에 대한 도메인 주도의 환자 관리 정보 시스템 설계

- 중앙 방역 대책 본부 내 대중에 잘 알려진 아래 4팀의 업무 만을 이용해 설계


환자 관리팀

- 환자 치료를 도움 (재택 치료)

- 환자가 X일 이후에 격리해제 기준에 부합한지 확인

  => 무증상 시 격리해제 -> SNS 알림

  => 유증상 시 PCR 재검사 실시 -> SNS 알림

 

역학조사팀

- 전자 출입 명부, 카드 승인 내역 기반의 확진자 동선 조사

- 밀접 접촉자 확인 -> SNS 알림을 통한 PCR 검사 요청

 

격리관리팀

- 확진자에게 격리 및 격리 해제 통지 -> SNS 알림

- 격리 위반 여부 확인 -> SNS 알림

 

진단검사 운영팀

- 선별 진료소 운영 및 PCR 검사를 통한 확진 여부 파악 -> SNS 알림


도메인 주도 설계의 주요 용어

1. 도메인 이벤트 : 발생한 사건

2. 커멘드 : 도메인 이벤트를 트리거 하는 명령

3. 외부 시스템 : 도메인 이벤트가 호출하거나 관계가 있는 레거시 또는 외부 시스템

4. 액터 : 개인 또는 조직의 역할

5. 핫스팟 : 의문사항, 결정하기 힘든 사항

6. 애그리거트 : 도메인 이벤트와 커멘드가 처리하는 데이터, 상태가 변경되는 데이터

7. 정책 : 이벤트 조건에 따라 진행되는 결정, '이벤트'가 발생할 때, '커멘드'를 실행함

8. 정보 : 액터에게 제공되는 데이터, 결정을 내리는데 영향을 주는 정보

 

실습 순서

1. 도메인 이벤트 찾기

2. 외부 시스템 / 외부 프로세스 찾기

3. 커멘드 찾기

4. 액터 찾기

5. 애그리거트 정의

6. 바운디드 컨텍스트 정의

7. 컨텍스트 맵핑

 

 


액터 별 도메인 모델 생성 예


반응형