업무 개요
중앙방역대책본부에는 다양한 팀(DDD의 관점에서는 Actor)이 있지만, 대중에게 가장 잘 알려진 다음의 네 팀의 업무만을 이해해 보도록 합시다.
💡 주의: 이하 안내하는 코로나19 대응 지침은 정부 자료를 바탕으로 한 가상의 약식 운영 지침입니다. 따라서, 현재 운영 중인 정부의 지침과는 다를 수 있습니다. 이 안내를 실제 코로나19 대응 지침으로 오해하거나 적용하지 마세요.
환자관리팀
- 재택치료제도를 통해 환자를 치료해야 합니다.
- 환자가 n일 이후에 격리해제 기준에 부합하는지 확인해야 합니다.
- 무증상이고, 호전되는 경우 격리 해제가 가능합니다.
- 유증상이고, 증상이 호전되지 않을 경우 PCR 검사를 다시 진행해야 합니다.
역학조사팀
- 전자출입명부 및 카드 승인 내역을 기반으로 확진자의 동선을 조사하고, 밀접 접촉자를 확인합니다.
격리관리팀
- 확진자에게 격리 및 격리 해제를 통지하고, 자가격리자가 격리 중에 있는지, 또는 격리 위반을 했는지 확인합니다.
진단검사운영팀
- 선별진료소를 운영하고 PCR 검사를 통해 확진 여부를 파악합니다.
도메인 주도 설계의 주요 용어
- 도메인 이벤트: 발생한 사건
- 커맨드: 도메인 이벤트를 트리거하는 명령
- 외부 시스템: 도메인 이벤트가 호출하거나 관계가 있는 레거시 또는 외부 시스템
- 액터: 개인 또는 조직의 역할
- 핫스팟: 의문사항, 결정하기 힘든 사항
- 애그리거트: 도메인 이벤트와 커맨드가 처리하는 데이터, 상태가 변경되는 데이터
- 정책: 이벤트 조건에 따라 진행되는 결정, “이벤트”가 발생할 때, “커맨드”를 실행한다
- 정보: 액터에게 제공되는 데이터, 결정을 내리는데 영향을 주는 정보
Getting Started
워크숍은 다음과 같이 진행합니다.
워크숍 순서
- 도메인 이벤트 찾기
- 외부 시스템/외부 프로세스 찾기
- 커맨드 찾기
- 액터 찾기
- 애그리거트 정의
- 바운디드 컨텍스트 정의
- 컨텍스트 매핑
문장으로 액터, 커맨드, 이벤트 검토
{진단검사운영팀:액터}가 {PCR 검사:커맨드}를 하면 {확진 판정 내림:도메인이벤트} 이벤트가 발생
{역학조사팀:액터}가 {역학조사:커맨드}를 하면 {카드 승인 내역:시스템}, {전자 출입 명부:시스템}을 이용하여 {확진자 동선 확인함:도메인이벤트}, {밀접 접촉자 확인함:도메인이벤트}가 발생
{환자관리팀:액터}가 {재택 치료:커맨드}를 하면 {n일간 재택 치료 진행:도메인이벤트} 이벤트가 발생하고, {증상 여부 확인:커맨드}를 하면 2 가지 경우의 이벤트가 발생
{유증상:도메인이벤트} 이벤트의 경우, {PCR 검사:커맨드}로 이동
{무증상:도메인이벤트} 이벤트의 경우, {격리관리팀:액터}가 {격리 해제 통보:커맨드}를 하고 {격리 해제 통보함:도메인이벤트}가 발생
{격리관리팀:액터}가 {격리 여부 확인:커맨드}를 하면 {격리 여부 확인함:도메인이벤트}가 발생
액터 별 도메인 모델 생성 예
관리 (환자관리팀)
aggregate
격리자
유증상 symptomatic
무증상 asymptomatic
command
재택 치료
격리해제 기준 검토
증상 확인
domain event
n일간 재택 치료 진행
n일 이후 무증상시
→ 격리 해제
n일 이후 유증상시 (호전되지 않는 경우)
→ PCR 검사
격리 (격리관리팀)
aggregate
격리자
격리 O
격리 X
command
격리 여부 확인
격리 해제 통보
domain event
격리 중에 있는지, 격리 위반 했는지 확인
재택 치료 종료된 무증상 격리자에게 격리 해제 통보
조사 (역학조사팀)
aggregate
확진자
command
역학조사
domain event
카드 승인 내역과 전자 출입 명부를 이용하여 확진자의 동선 파악
밀접 접촉자 파악
검사 (진단검사운영팀)
aggregate
검사자
확진 O
확진 X
command
PCR 검사
domain event
확진 여부에 따라 확진 판정 내림
애그리거트랑 컨텍스트의 정의가 너무 헷갈렸다 ..
객체 자체만 애그리거트인지 객체 안의 속성?도 애그리거트로 쓰일 수 있는지 헷갈렸다
결론은 둘 다 가능하다..?
컨텍스트 매핑에서 컨텍스트가 도저히 뭐가 기준인지 몰라서 물어봤다
바운디드 컨텍스트가 기준일 줄 알았는데 예시 사진엔 다른 것들도 있길래 너무 헷갈렸다
결론은 바운디드 컨텍스트가 기준은 맞으나 데이터 흐름을 보여주는 것이 주목적이기 때문에 필요에 따라 세분화를 할 수 있다는 것
'Code States > TIL' 카테고리의 다른 글
[0508] 마이크로서비스 - CQRS (0) | 2023.05.08 |
---|---|
[0508] 마이크로서비스 - API 디자인과 프로세스 간 통신 (0) | 2023.05.08 |
[0504] 마이크로서비스 - 도메인 주도 설계 (0) | 2023.05.04 |
[0503] 마이크로서비스 - 마이크로서비스 구조와 특징 (1) | 2023.05.03 |
[0502] Section 2. 프로젝트 - AWS 배포 Day 4 - 마일스톤 10(서버 애플리케이션 CRUD 구현) (0) | 2023.05.02 |