[Sprint] 도메인 주도 설계 실습

# 업무 개요

중앙방역대책본부에는 다양한 팀(DDD의 관점에서는 Actor)이 있지만, 대중에게 가장 잘 알려진 다음의 네 팀의 업무만을 이해해 보도록 합시다.

💡 주의: 이하 안내하는 코로나19 대응 지침은 정부 자료를 바탕으로 한 가상의 약식 운영 지침입니다. 따라서, 현재 운영 중인 정부의 지침과는 다를 수 있습니다. 이 안내를 실제 코로나19 대응 지침으로 오해하거나 적용하지 마세요.

환자관리팀

  • 재택치료제도를 통해 환자를 치료해야 합니다.
  • 환자가 n일 이후에 격리해제 기준에 부합하는지 확인해야 합니다.

역학조사팀

  • 전자출입명부 및 카드 승인 내역을 기반으로 확진자의 동선을 조사하고, 밀접 접촉자를 확인합니다.

격리관리팀

  • 확진자에게 격리 및 격리 해제를 통지하고, 자가격리자가 격리 중에 있는지, 또는 격리 위반을 했는지 확인합니다.

진단검사운영팀

  • 선별진료소를 운영하고 PCR 검사를 통해 확진 여부를 파악합니다.

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

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

# BARE MINIMUM REQUIREMENT

위의 업무 방식을 이해하고, 도메인 주도 설계를 페어와 함께 진행합니다.

  1. 도메인 모델을 생성하세요.

애그리거트, 커맨드, 도메인 이벤트, 정책을 먼저 줄글로 나열하고, 그 관계를 다음 그림과 같이 그려보세요.

  1. 애그리거트 루트(보통은 액터로 나눌 수 있음)와 그에 관련된 바운디드 컨텍스트를 설정하고, 연관 관계를 정의하세요.

# GETTING STARTED

워크숍은 다음과 같이 진행합니다.

워크숍 순서

  1. 도메인 이벤트 찾기
  2. 외부 시스템/외부 프로세스 찾기
  3. 커맨드 찾기
  4. 액터 찾기
  5. 애그리거트 정의
  6. 바운디드 컨텍스트 정의
  7. 컨텍스트 매핑

# 액터 별 도메인 모델 생성 예

관리 (환자관리팀)

  • 확진자 (Patient)

격리 (격리관리팀)

  • 격리
  • 격리 물품

조사 (역학조사팀)

  • 감염 검증
  • 동선 검증
  • 동선 검증
  • 전자 출입 조회
  • 카드내역조회

검사 (진단검사운영팀)

  • 진료소
  • 지원
  • 검사

Leave a Comment