
JHipster의 동작 방법과 프로젝트 구조를 먼저 알아보았고, JDL을 이용해 MSA Application도 간단하게 만들어 보았습니다. 이제 본격적으로 임장 리포트 시스템을 설계하고, 애플리케이션을 만들어, 분산 된 애플리케이션간 이벤트와 데이터 흐름이 어떻게 처리되는지를 알아본다.
MSA 시스템을 설계할때에는 주로 사용하는 설계 방식이 도메인 주도 설계(DDD : Domain Driven Design) 입니다.
https://www.msaschool.io/operation/design/design-two/
마이임장리포트의 설계 방식을 DDD 기법을 이용해 설계해 보도록 하겠습니다ㅣ.
부동산 임장 리포트 관리 시스템의 주요 정보는 크게 부동산 정보와 리포트 정보로 구분할 수 있습니다.
여기에 부가적으로 리포트를 작성하는 사용자 정보와 임장 시 촬용한 사진 정보 등의 일반적인 정보가 필요합니다.
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): 리포트 작성 후 다른 사용자가 보완을 요청하는 기능으로, 수정해야 할 사항을 메모로 남길 수 있습니다.
컨텍스트를 설계하는 단계에서는 Bounded Context를 정의하고 Context Map을 구성합니다.
Bounded Context는 도메인을 여러 하위 영역으로 구분해 명확한 책임을 나누는 경계를 정하는 작업이며, Context Map은 각 경계 내의 상호작용 관계를 시각화하여 전체 시스템 구조를 이해할 수 있도록 도와줍니다.
비즈니스 도메인 모델 내의 서브 도메인들을 정리하였습니다.
도메인 목록
도메인 분류
Core Domain(비즈니스 핵심 가치 영역) : 임장 관리, 매물관리, 거래 관리
Supporting Domain(비핵심 영역) : 분석
Generic Domain(일반적인 시스템 공통 영역) : 사용자관리, 파일관리, api 관리, 알림관리

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