임장 리포트 시스템 - 도메인 설계

Divide & Conquer·2024년 12월 23일
post-thumbnail

JHipster의 동작 방법과 프로젝트 구조를 먼저 알아보았고, JDL을 이용해 MSA Application도 간단하게 만들어 보았습니다. 이제 본격적으로 임장 리포트 시스템을 설계하고, 애플리케이션을 만들어, 분산 된 애플리케이션간 이벤트와 데이터 흐름이 어떻게 처리되는지를 알아본다.

작업 진행 순서

1. 도메인 설계

2. JDL 생성

3. Application 생성

4. Runtime

5. Entity 추가

6. Test & Feedback

1. 도메인 설계

설계 기법 선정

MSA 시스템을 설계할때에는 주로 사용하는 설계 방식이 도메인 주도 설계(DDD : Domain Driven Design) 입니다.
https://www.msaschool.io/operation/design/design-two/
마이임장리포트의 설계 방식을 DDD 기법을 이용해 설계해 보도록 하겠습니다ㅣ.

전략적 설계

부동산 임장 리포트 관리 시스템의 주요 정보는 크게 부동산 정보와 리포트 정보로 구분할 수 있습니다.
여기에 부가적으로 리포트를 작성하는 사용자 정보와 임장 시 촬용한 사진 정보 등의 일반적인 정보가 필요합니다.

1. 유비쿼터스 언어(Ubiquitous Language)

DDD 전략적 설계에서 가장 먼저 해야 하는 것은 유비쿼터스 언어의 정리입니다.
유비쿼터스 언어란 해당 비즈니스 도메인에 특화된 용어들을 의미합니다.
데이터 기반 설계 방식에서 프로젝트 초기에 작성하는 용어사전정의서라고 이해하면 편할 것 같습니다.
유비쿼터스 언어를 정의하고 수집하는 절차는 비즈니스 관계자 및 시스템 설계자와 개발자들의 이해 수준을 맞춰 나갈 수 있는 중요한 단계입니다.
개발해야 하는 임장리포트에서 사용될 만한 유비쿼터스 언어를 정리해 보았습니다.

부동산 거래 관련 용어

매물(Property): 거래 대상이 되는 부동산. 예를 들어 아파트, 상가, 오피스텔, 토지 등이 될 수 있습니다.
거래 금액(Transaction Amount): 해당 매물의 거래에 실제로 사용된 금액. 매매, 임대, 전세 등의 거래 유형에 따라 금액이 달라질 수 있습니다.
거래 유형(Transaction Type): 거래의 종류로, 매매, 전세, 월세 등의 거래 형태를 말합니다.
매도인(Seller): 해당 부동산 매물을 판매하는 사람.
매수인(Buyer): 해당 부동산 매물을 구매하는 사람.
계약일(Contract Date): 부동산 거래 계약이 이루어진 날짜.
등기일(Registration Date): 부동산 거래 후 소유권이 변경되어 등기된 날짜.
중개사(Agent): 부동산 거래를 중개하는 부동산 중개업소 또는 중개인.

입지 분석 관련 용어

입지(Location): 특정 매물이 위치한 지리적 위치나 주변 환경을 의미.
접근성(Accessibility): 해당 입지에서 주요 시설이나 대중교통 접근이 얼마나 용이한지 측정한 지표. 예를 들어 지하철역, 버스 정류장 등과의 거리.
편의시설(Amenities): 매물 주변의 상업시설, 편의점, 병원, 학교, 공원 등의 위치 및 밀집도.
주변 환경(Neighborhood): 매물 인근의 상권, 인구 밀도, 녹지 공간 등 거주 환경에 영향을 미치는 요소.
교육환경(Education Environment): 매물 인근의 학교와 학원 등 교육 기관의 접근성과 질을 나타내는 지표.
상권(Commercial Area): 매물 주변의 상업적인 활동이 이루어지는 구역으로, 해당 지역의 상업적 활성화 정도를 의미.
환경지수(Environment Index): 해당 지역의 공기질, 소음, 녹지 비율 등 거주지의 쾌적함을 나타내는 지표.
교통편의성(Transport Convenience): 해당 매물이 위치한 지역의 대중교통 상황을 평가한 지표로, 교통 수단과의 거리, 이용 가능 시간 등을 포함.

방문 리포트 관련 용어

임장(Inspection): 실제로 매물의 위치를 방문하여 매물 상태나 입지 환경을 확인하는 활동.
현장 특이사항(Field Note): 방문 후 발견한 매물이나 입지에 대한 특이사항, 예를 들어 예상치 못한 소음, 교통 혼잡, 주차 문제 등을 기록.
리포트(Report): 임장 내용을 종합하여 정리한 보고서로, 매물의 상태와 입지의 장단점에 대한 분석이 포함됨.
평가 점수(Rating Score): 특정 항목에 대해 평가한 점수, 예를 들어 교통 편의성, 주변 환경, 편의시설 등을 정량적으로 평가.
매물 컨디션(Property Condition): 매물의 현재 상태를 나타내는 용어로, 구조, 외관, 청결 상태 등을 포함합니다.

분석 및 평가 관련 용어

입지 지수(Location Index): 여러 입지 관련 요소들을 종합하여 계산한 평가 지표.
수익률(Return on Investment, ROI): 해당 매물을 임대할 경우 예상할 수 있는 투자 대비 수익률.
시장 분석(Market Analysis): 해당 매물의 위치와 유형에 따른 시장 수요와 공급 상태 분석.
경쟁 매물(Competitive Properties): 같은 입지나 유사한 조건을 가진 다른 매물로, 이들 간의 비교를 통해 해당 매물의 경쟁력을 평가.

임장 준비 관련 용어

임장 계획(Inspection Plan): 임장을 위한 방문 일자, 매물 리스트, 방문 시간, 경로 등을 사전에 계획하는 문서.
체크리스트(Checklist): 임장 시 확인해야 할 항목을 정리한 목록. 예를 들어, 교통 소음, 일조량, 주차 시설 등을 사전에 체크리스트로 준비할 수 있습니다.
임장 도구(Inspection Tools): 현장 방문 시 필요한 도구나 장비로, 카메라, 측정기기, 지도 등이 포함될 수 있습니다.
사진 기록(Photo Record): 현장 방문 중 촬영한 매물 사진 및 주변 환경을 기록한 이미지 자료.

임장 평가 및 분석 관련 용어

일조량(Sunlight Exposure): 매물의 일조량을 평가한 것으로, 거주지의 쾌적성에 중요한 요소.
소음 수준(Noise Level): 매물이나 주변 환경의 소음 정도를 평가한 지표. 주요 도로와의 거리, 상업지구와의 인접성 등이 영향을 미칩니다.
실내 공기질(Indoor Air Quality): 매물 내부의 공기 상태로, 실내 환경 쾌적도를 평가할 수 있는 지표입니다.
거주 편의성(Living Convenience): 매물 위치에서의 생활 편리성을 종합 평가한 항목. 교육, 편의시설, 병원 접근성 등이 포함됩니다.
보안 시설(Security Features): 매물 또는 주변 지역의 보안 상태를 평가하는 용어. CCTV 설치, 경비 인프라 등을 포함.

임장 리포트 작성 및 관리 관련 용어

임장 요약(Summary): 임장 결과를 간략히 정리한 요약 정보로, 매물의 장단점과 입지의 주요 특징을 포함.
리포트 항목(Report Item): 임장 리포트에서 다루는 항목의 세부 사항, 예를 들어 매물 상태, 주변 환경, 특이 사항 등이 포함됩니다.
리포트 버전 관리(Report Version Control): 임장 리포트의 변경 사항이나 업데이트를 기록하는 관리 기능.
리포트 공유(Report Sharing): 작성된 임장 리포트를 특정 사용자와 공유하는 기능, 협업 시 유용합니다.
리포트 수정 요청(Report Edit Request): 리포트 작성 후 다른 사용자가 보완을 요청하는 기능으로, 수정해야 할 사항을 메모로 남길 수 있습니다.

임장 진행 시 주요 리포트 항목

  1. 건물 및 주택 상태
  • 외관 상태: 외벽 균열 여부, 도색 상태, 청결도
  • 건축 연도: 건축물의 나이 및 최근 리모델링 여부
  • 관리 상태: 공용 공간(엘리베이터, 복도, 계단 등) 및 관리가 잘 이루어지고 있는지 여부
  • 주차 시설:
    • 주차방식: 지하주차장, 단독주차, 지정주차, 벙커식
    • 세대당 주차대수
    • 기타 사항: 사용 편리성, 주변 주차 시설 및 가능여부 등
  • 엘리베이터 유무: 있는 경우 상태와 관리 수준
  • 방음 상태: 외부 소음(차량, 상가 등) 차단 상태 및 이웃 소음 여부
  • 스마트홈: 자동화 수준, 동작 상태
  1. 주변 인프라 및 편의 시설
  • 교통 접근성:
    • 지하철/버스 정류장 거리: 대중교통과의 거리 및 편의성
    • 주요 도로 접근성: 주요 도로와의 거리 및 차로 이동 시 혼잡도
  • 편의 시설:
    • 마트/편의점: 인근 쇼핑 가능성 및 거주자의 생활 편리성
    • 병원/약국: 응급 상황 발생 시 접근성
    • 은행/우체국: 금융 및 우편 서비스의 접근성
  • 주변 학군:
    • 초/중/고교 거리: 학군 및 해당 학군의 평가 (도보 또는 차량 이동 거리)
    • 교육 시설: 학원가 위치 여부 및 교육 수준
  • 기타 시설:
    • 공원/산책로: 자연 환경 접근성 및 거주자 여가 활용 가능성
    • 전력시설: 지중화여부, 전신주 수, 전신주와의 거리
  1. 부동산 내부 상태
  • 채광 및 환기:
    • 일조량: 창문의 방향과 햇빛이 잘 들어오는지 확인
    • 환기 상태: 창문 개폐 가능 여부 및 환기가 용이한지
  • 수도 및 전기 상태:
    • 수도 시설: 물의 색깔, 냄새, 온수 상태
    • 전기 시설: 콘센트 위치, 전기 용량과 노후 상태 확인
  • 냄새:
    • 배수구 및 화장실 냄새: 배수 상태 및 악취 여부
  • 바닥 및 벽 상태: 균열, 손상 여부, 도배/마루 상태
  • 거실: 거실 크기, 아트월 상태, 바닥재
  • 방: 방의 크기, 수납장, 에어컨 및 창문 위치 외 특이사항
  • 화장실: 공동 화장실 및 안방 화장실 크기, 수압, 샤워부스, 욕조, 바닥재, 천장재 등
  • 주방 및 욕실 상태:
    • 주방 시설: 붙박이장, 싱크대, 창문 및 환기시설
    • 주방 가전: 냉장고, 김치냉장고, 식기세척기 제공 여부 및 설치공간
    • 욕실 누수 여부: 배관 상태 및 습기/곰팡이 발생 가능성
  • 난방 및 냉방 시설:
    • 난방 방식: 보일러, 온돌 등 난방 상태와 사용 용이성
    • 에어컨 설치 여부: 설치 유무 및 작동 상태
  • 전실 상태: 전실 크기, 신발장 크기, 펜트리 존재여부
  • 기타 공간:
    • 중정: 존재여부, 크기, 상태, 특징
    • 마당: 존재여부, 크기, 상태, 특징
    • 화단 및 텃밭: 존재여부, 크기, 상태, 특징
    • 옥상: 존재여부, 크기, 상태, 특징
    • 실내계단: 존재여부, 상태, 특징
    • 택배함: 존재여부, 상태
  1. 안전 및 보안 상태
  • CCTV 설치 여부: 공용 공간 CCTV 설치 여부 및 사각지대
  • 소화기 및 화재 경보: 비상 시 대비 가능성 (소화기, 화재 감지기 상태)
  • 비상구 및 탈출구 위치: 비상구가 설치되어 있는지, 접근 용이성
  • 현관 도어록 및 보안 상태: 현관 도어록 및 보안 설비 유무
  • 관리비 내역: 보안 및 청결 유지에 사용되는 관리비 확인
  1. 환경 및 기타 체크 사항
  • 유해 환경:
    • 주변 공장/산업단지: 소음, 대기오염 가능성
    • 전봇대/송전탑/고압선: 전자파 발생 우려 여부
    • 쓰레기 수거장: 위치 및 상태
  • 재건축 및 재개발 여부: 향후 개발 계획 및 그로 인한 영향 예상
  • 임대 수요 및 매매 추이: 해당 지역의 부동산 시세 및 향후 전망
  • 관리 규정: 반려동물 허용 여부, 공용 공간 사용 규정

2. 컨텍스트 설계

컨텍스트를 설계하는 단계에서는 Bounded Context를 정의하고 Context Map을 구성합니다.
Bounded Context는 도메인을 여러 하위 영역으로 구분해 명확한 책임을 나누는 경계를 정하는 작업이며, Context Map은 각 경계 내의 상호작용 관계를 시각화하여 전체 시스템 구조를 이해할 수 있도록 도와줍니다.

Sub Domain 식별

비즈니스 도메인 모델 내의 서브 도메인들을 정리하였습니다.

도메인 목록

  • 매물 관리 (Property Management): 매물 정보의 등록 및 관리.
  • 분석 (Analysis): 입지와 관련된 지표 및 데이터를 수집하고 분석하여 제공.
  • 거래 관리 (Transaction Management): 매물의 거래 내역 및 가격 정보를 관리.
  • 임장 관리 (Inspection Management): 임장 계획 수립, 임장 수행, 리포트 작성 기능을 포함.
  • 사용자 관리 (User Management): 사용자 등록, 인증, 권한 관리를 담당.
  • 파일 관리 (Attachment Management): 단지 사진, 매물 사진, 임장 리포트와 관련된 사진이나 파일 업로드 및 저장.
  • API 관리 (API Management): 외부 API와의 연동 및 데이터 통합.
  • 알림 관리 (Notification Management): 임장 계획에 따른 알림 예약 및 발송.

도메인 분류
Core Domain(비즈니스 핵심 가치 영역) : 임장 관리, 매물관리, 거래 관리
Supporting Domain(비핵심 영역) : 분석
Generic Domain(일반적인 시스템 공통 영역) : 사용자관리, 파일관리, api 관리, 알림관리

Bounded Context 정의

  • Core Domain 중 매물관리와 거래관리는 하나의 도메인으로 통합해도 무리가 없을 것으로 예상되어 통합
  • Generic Dommain 중 사용자관리는 별도 도메인으로 분리하고, 파일관리, 알림관리 하나의 공통 도메인으로 통합, api 관리는 시스템 구축 이후 외부 시스템(한국부동산원, 실거래가공개시스템)과의 연계 작업 진행 시 추가 예정
  • Report Context는 Property Context에서 매물 정보를 가져오고, User Context에서 사용자 정보를 가져온다.
  • 보고서 작성 시 입력한 사진 정보들은 Common context 첨부 도메인에 들어가고, 보고서 작성 알림 정보는 알림 도메인에 전달된다.

맺음말

도메인 설계에서 Bounded Context와 Context Mapping을 해보았다.
간단한 구조의 도메인 설계이기 때문에 단순해 보이겠지만,
사실 작성하면서도 Mapping 프로세스가 더 많을 것으로 예상된다.
처음 맘먹은데로 너무 디테일하게 작성하지 말고 일단 진행한 후 다듬어 보도록 하자.

profile
IT의 어려운 난제를 작은 단위로 분할하여 정복해 나간다.

0개의 댓글