도메인 이란?
- 지식, 영향력 또는 활동 영역
- 개발 분야에서는 소프트웨어로 해결하려는 문제의 영역을 의미함
도메인 지식 이란?
- 어떤 산업 또는 분야를 이해하기 위해 필요한 지식
도메인을 개념적으로 표현하는 방법
- 객체지향 설계, ERD 등
도메인 주도 설계의 주요 용어
- 보편언어 (ubiquitous language)
=> 도메인의 특정 업무와 관련된 사람들 사이에서 통용되는 개념
- 한정된 맥락 (bounded context)
=> 한정된 맥락이 없다면 클래스 이름 설계의 어려움, 클래스가 비대해질 위험, 단일 책임 원칙 위배 가능성 높음, 의존 관계 신경써야함 등의 단점이 있음
DDD 가 제안하는 해결책
- 서비스를 나눔 - 데이터 베이스도 나눔 (마이크로 서비스와 DDD는 같지 않으며, 마이크로서비스 아키텍처는 DDD 실천을 위한 하나의 방법일 뿐임)
- 업무 범위를 나눔
=> 모델의 경계를 분명하게 구분 짓는다, 업무 범위 내로만 아키텍처를 구성함 (한정된 맥락 - bounded context)
=> 모든 도메인에 용어를 맞추기 위해 모호한 단어를 쓸 필요가 없음 (보편 언어 - ubiquitous language)
도메인 주도 설계 실습
활용 도구
- 도메인 주도 설계 실습을 위해 miro 를 이용함
업무개요 (실제 적용중인 시스템이 아니며 실습을 위한 가상의 시스템 설계입니다.)
- 코로나 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. 컨텍스트 맵핑
액터 별 도메인 모델 생성 예
'DevOps > DevOps' 카테고리의 다른 글
CI/CD 툴 종류 및 비교 (Jenkins, AWS CodeBuild, ArgoCD, Github Actions) (0) | 2023.08.17 |
---|---|
SAM CLI 설치 및 실습 (mac OS) (0) | 2023.02.16 |
독립적 서비스 구성 - AWS Lambda, API Gateway (0) | 2023.02.02 |
API 디자인, 프로세스 간 통신(Inter-process communication, IPC ,마이크로서비스 간의 통신) (1) | 2023.02.01 |
마이크로서비스 란? (구조 및 특징, 아키텍처 구현, 서버리스) (2) | 2023.01.30 |