포시코딩

도메인(Domain) 본문

Node.js

도메인(Domain)

포시 2022. 12. 28. 20:12
728x90

도메인(Domain)

개발자 대부분은 비즈니스 프로세스를 개선하거나 자동화하기 위해 일한다.

도메인은 이런 프로세스가 지원하는 활동을 의미한다.

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

 

도메인 예시

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

 

도메인 모델(Domain Model)

도메인 모델이란 유용한 특성을 포함하는 프로세스나 현상의 지도(Map)를 뜻한다.

  • 도메인 모델이란 특정 도메인을 개념적으로 정리한 모델이다.
  • 도메인 모델은 사용할 개체를 기억하기 쉬운 이름(식별자)을 부여해 대상을 쉽게 공유할 수 있게 한다.

도메인 모델링의 종류

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

 

엔티티(Entity)

엔티티(Entity)는 실제 DB 테이블과 연관되어 있는 핵심 클래스이고,

엔티티를 기준으로 테이블이 생성되고 DB 스키마가 변경된다.

  • 엔티티를 요청(Request)이나 응답(Response) 값으로 전달하는 클래스로 사용하면 안된다.
  • 엔티티 내부의 속성이 변경되더라도 여전히 동일한 엔티티로 남아있다.
  • 엔티티는 시간에 따라 변하는 속성이 포함될 수 있다.
  • 어떤 요소가 엔티티를 유일하게 식별하는지 정의하는 것 또한 중요하다.
    • 보통 이름이나 참조 번호 등을 사용한다.
    • ex) User 클래스의 userId
728x90