본문 바로가기
Language/Node.js

도메인 (Domain)

by 노믹 2022. 12. 27.

도메인이란?

개발자 대부분은 비즈니스 프로세스를 개선하거나 자동화하기 위해 일한다. 도메인은 이런 프로세스가 지원하는 활동을 의미한다.

  • 가구 판매 회사의 도메인은 구매 및 조달, 제품 설계, 물류 및 배달 등 다른 분야를 뜻할 수 있습니다.

 

도메인(Domain) 예시

  • 개발자 입장에서 온라인 서점을 구현해야 할 소프트웨어의 대상이 됩니다.
    • 온라인 서점 = 소프트웨어로 해결하고자 하는 문제의 영역 = 도메인 (Domain)
  • 도메인은 다시 하위 도메인으로 나눌 수 있습니다.
    • 도메인 구성 : 주문, 회원, 혜택, 결제, 배송, 정산, 카탈로그, 리뷰
    • 하위 도메인다른 하위 도메인과 연동하여 완전한 기능을 제공합니다.
      • ex) 고객 → 물건 주문 → 결제 → 배송 → 혜택 제공
  • 하위 도메인을 어떻게 구성할 지 여부는 상황에 따라 달라집니다.
    • B2B(Business-to-Business), B2C(Business to Consumer)

 

도메인 모델(Domain Model)

도메인 모델이란 유용한 특성을 포함하는 프로세스나 현상의 지도(Map)를 뜻합니다.
도메인 모델은 비즈니스를 수행할 사람이 자신의 비즈니스에 대해 마음속에 가지고 있는 지도와 같습니다.
  • 도메인 모델이란 특정 도메인을 개념적으로 정리한 모델입니다.
  • 도메인 모델은 사용할 개체를 기억하기 쉬운 이름(식별자)을 부여해 대상을 쉽게 공유할 수 있게 한다.
  • 만약 누군가가 저희에게 공을 던진다면 우리는 무의식적으로 이 공의 움직임을 예측해 회피할 것입니다.
    • 우리들의 머릿속에 이미 공간상 물체가 움직이는 방식에 대한 모델이 있어서 움직임을 무의식적으로 예측할 수 있습니다.

도메인 모델링 (Domain Modeling)의 종류

  1. 엔티티 (Entity)
  2. 값 객체 (Value object)
  3. 도메인 서비스 (Domain service)

 

엔티티(Entity)

엔티티(Entity)는 실제 DB 테이블과 연관되어 있는 핵심 클래스이고, 엔티티를 기준으로 테이블이 생성되고 DB 스키마가 변경됩니다.
  • 엔티티요청(Request)이나 응답값(Response)으로 전달하는 클래스로 사용하면 안됩니다.
  • 엔티티 내부의 속성변경되더라도 여전히 동일한 엔티티로 남아있습니다.
  • 엔티티는 시간에 따라 변하는 속성포함될 수 있습니다.
  • 어떤 요소가 엔티티유일하게 식별하는지 정의하는 것 또한 중요합니다.
    • 보통 이름이나 참조 번호 등을 사용합니다.
    • ex) User 클래스의 userId