소프트웨어 개발 개념

도메인(Domain)과 도메인 모델(Domain Model)

00z11 2025. 2. 25. 22:46
도메인, 도메인 모델에 대해서 정리합니다. 이 문서는 수정될 수도 있습니다.

 

 

도메인이란 단어의 혼용

도메인이란 단어를 모호하게 생각해 도메인과 연관된 단어는 죄다 "도메인"이라고 불렀던 것 같습니다. 특히 도메인 설계 단계에서 해결하고자 하는 기능을 정리하고 있노라면 '그래서... 도메인이란 게 정확히 뭐지?'라는 생각도 들었고요. 이렇게 부르는 것이 저뿐만 아니라 다른 사람들에게도 혼돈을 줄 수 있겠다, 싶어 짜투리 시간을 내 정리하고 있습니다.

 

 

1. 도메인(Domain)

소프트웨어 개발에서 도메인은 해결하려는 문제의 영역을 의미합니다.

더보기

또 이때 해결이라는 워딩을 쓰는 이유는 소프트웨어의 역할에 이유가 있습니다.

소프트웨어가 기존에 불편하거나 비효율적인 문제를 개선하거나 없애는 역할을 했기 때문입니다.

  • 전자상거래(E-commerce) 도메인
    • 하위 도메인 : 상품 검색, 장바구니, 결제 처리, 주문 관리, 배송 추적
  • 금융(Finance) 도메인
    • 하위 도메인 : 계좌 관리, 대출 서비스, 이체 서비스, 결제 시스템, 보험 서비스
  • 헬스케어(Healthcare) 도메인
    • 하위 도메인 : 병원 예약 시스템, 진단 서비스, 의약품 관리, 건강 데이터 추적
  • 물류(Logistics) 도메인
    • 하위 도메인 : 재고 관리, 배송 추적, 창고 관리, 물류 최적화

 

 

"그 도메인에 대한 지식이 중요하죠" 라는 말은 즉, 금융 도메인의 경우, 금융 시스템을 개발하려면 금융 서비스에 대한 지식(예: 계좌, 대출, 이체, 결제 등)이 필요하다는 겁니다.

 


 

 

2. 도메인 모델(Domain Model)

특정 도메인개념규칙소프트웨어 시스템 내에서 객체클래스로 표현한 것입니다.

 

도메인 내에서 중요한 고유 식별자(ID)를 갖는 객체인 엔티티(Entity), 식별자가 필요 없고, 불변의 성격을 갖는 객체인 값 객체(Value Object, vo), 여러 개의 엔티티와 값 객체를 하나로 묶어서 처리하는 루트 엔티티인 집합체(Aggregate), 도메인 모델 내에서 비즈니스 로직을 구현하는 객체인 도메인 서비스(Domain Service)들이 도메인 모델의 구성 요소가 될 수 있겠습니다.