Domain
개발하고자 하는 구체적인 비즈니스 영역(현실세계의 문제)을 도메인이라고 합니다. 도메인은 여러 개의 서브도메인으로 이뤄져 있습니다. 해당 분야에 대한 지식을 가지고 있는 전문가, 실무자 등을 도메인 전문가(Domain expert)라고 부릅니다.
- Core Domain: 핵심 영역
- Supporting SubDomain: 비즈니스에 특화되어 있지만 핵심은 아 닌 영역
- Generic SubDomain: 이메일 전송, OAuth, 결제 등 도메인에 특화되지 않은 영역
Domain model
모형(模型, Model, 모델)은 객체, 시스템, 또는 개념에 대한 구조나 작업을 보여주기 위한 패턴, 계획, 또는 설명이다. - Wikipedia
도메인 모델은 특정 도메인을 개념적으로 표현한 것입니다. 도메인 모델링을 하면서 도메인 전문가와 소프트웨어 개발자들 사이에서 개발되고 공유된 언어를 유비쿼터스 언어(Ubiquitous Language)라고 합니다.
Entity
작게 나눈 도메인 논리와 그와 관련된 데이터를 하나의 객체로 만들었을 때, 이 객체가 식별성을 갖는다면 엔티티(Entity)고 합니다.
- 엔티티는 프로그램 내에서 식별할 수 있는 ID를 가지며, 이는 개념적 식별성과 같을 수도 다를 수도 있습니다.
- 엔티티는 생성되서 삭제되는 시점까지 연속성을 가지므로 갑자기 사라지지 않습니다. 따라서 삭제 전까지는 프로그램이 종료되더라도 연속성을 유지해야하므로 영속성(Persistence)을 갖습니다.
- 엔티티는 데이터베이스, 사용자 인터페이스, 서드파티 프레임워크 등의 변화에 영향을 받지 않도록 해야합니다.