도메인 헥사곤
실 세계 문제를 이해하고 모델링하는 활동
스타트업 같은 개발자나 도메인 전문가 모두 시스템의 목적에 대한 명확한 비전을 갖고 있지 않거나,
문제 영역이 존재하고 도메인 전문가들이 분명하게 알고 있는 상황에서 문제 영역을 엔티티, 값 객체로의 변환 방법을 파악하지 못하면 잘못된 가정을 기반으로 구축되게 될 것이다.
이러한 점은 소프트웨어가 간단하게 시작해서, 기반 코드가 커짐에 따라 기술 부채가 누적되고 유지 보수가 더 어려워지는 이유 중 하나로 여겨진다.
엔티티
- 식별자 (Identifier): 엔티티는 고유한 식별자를 가지고 있으며, 이 식별자를 통해 다른 엔티티와 구분된다. 동일한 엔티티는 시간이 지나도 동일한 식별자를 유지한다.
- 변경 가능성 (Mutability): 엔티티는 시간이 지남에 따라 상태가 변할 수 있다. 이는 엔티티의 특성이 변할 수 있다는 것을 의미한다.
- 생명 주기 (Lifecycle): 엔티티는 생성되고, 변경되며, 소멸되는 생명 주기를 가진다.
예) 사용자 엔티티는 사용자 ID와 같은 고유 식별자를 가지며, 이름, 이메일과 같은 변하는 속성을 지닌다. 시간이 지남에 따라 사용자의 특성이 변할 수 있다.
값 객체
객체의 정체성보다 속성에 관심을 갖는 경우 코드의 표현력을 보완하는데 도움을 준다.
- 식별자가 없음 (No Identifier): 값 객체는 고유한 식별자를 가지지 않는다. 자체 속성 값으로 동일성 판단을 한다.
- 불변성 (Immutability): 값 객체를 사용해 엔티티를 구성할 수 있으므로 도메인 전체에서 예상치 못한 불일치를 방지 하기 위해 불변으로 해야한다.
- 동등성 (Equality by Value): 두 값 객체가 동일한 속성 값을 가지면, 두 값 객체는 동일한 것으로 간주한다.
'프로그래밍' 카테고리의 다른 글
헥사고날 아키텍쳐 - 프레임워크 헥사곤 (0) | 2024.08.04 |
---|---|
헥사고날 아키텍쳐 - 애플리케이션 헥사곤 (0) | 2024.08.04 |
헥사고날 아키텍쳐 (0) | 2024.08.04 |
Git reset hard 취소하기, 되돌리기, 복원하기 (0) | 2021.05.04 |
Mysql Server Timezone 설정방법 (0) | 2020.11.16 |