
시작에 앞서 Q&A를 진행하셨다.
1. 성장할 수 있는 방법
사람마다 성장할 수 있는 방법이 다양하다. 본인에게 맞는걸 선택해야한다.
조영호 강사님의 스타일은
다양하고 넓게 공부하고, 파보고 싶은 분야를 정해서 더 깊게 들어가는 스타일이라고 하셨다.
1. 회사 공부 따로, 내 개인적인 공부 따로
: 난 강의를 보면서 공부하는 것이 조금 더 이해도 빠르고 쉽게 습득 할 수 있다고 생각한다.
2.개발자가 아닌 Domain 전문가가 읽을 만한 DDD 책
- Domain 주도 설계의 첫 걸음( 개발을 가장 적게 언급한다)
- Domain 주도설계의 구현
DDD
DDD를 프로세스, 방법론으로 바라보면 어렵다.
모델링과, 코드작업이 동시에 일어난다.
그 이유는 도메인 모델을 코드로 보기 때문이다.
도메인
- 기능요구사항
- 불변식
불변식
A의 상태가 ~~해야 정상이야
B로 바꾸었을 때 ~~해야 정상이야
객체지향을 짤 때 Domain 중심으로 짜는 것 그것도 DDD이다.
Entity
객체의 속성이 아닌 연속성과 식별성이 중요하다
Value Object
식별성이 중요하지 않고, 특성을 묘사한다
ex)
1.
entity
10년동안 지내온 친구가있는데 친구를 찾고싶다
하지만 성형을 했을 수도있고, 이름이 같을 수 도 있지만, 나랑 친구인 사람을 찾아야한다.
value object
내가 4라는 숫자가 필요한데 이곳 저곳에서 사용해도된다.
2.
entity
쌍둥이 한명을 찾아야한다.
value object
사진을 찍어야하는데 쌍둥이중 한명이 필요하다.
식별성
동일함을 확인하려면 식별자를 가져야한다.
- 명칭이 바뀌더라도 동일하게 추적해야한다.
Entity가 복잡해지면 값 객체를 사용한다
entity를 가볍게 하기 위해서 (속성만 중요)
ex)
Money에 BigDecimal이라는 속성 하나만 있는데 분리하는 이유
코드를 보면서 이해하는 것보다 이것을 더 명확하게 표현하기 위해서이다.
보통 value object는 Entity의 속성으로 들어간다.
-> 복잡성을 낮추는것

Entity와 value object 구별법
Entity가 너무 클 때 속성중 같이 묶여다니는 것이 있는데
생각해보면 의미가 있는 것이다.
이것을 값객체로 적용해서줄여야한다.
객체는 가만히있고, 상태가 바뀌는 것: 가변객체
에그리거트
Entity와 Entity는 에그리거트로 묶는다.
여러가지 Enitty와 value object를 따로따로 관리하면 복잡하니깐, 에그리거트로 묶는다.
각각의 개념에 대한 불변식은 : validate
전체를 경계한 validate : 에그리거트 , 도메인룰이다.
에그리거트 (캡슐화의 개념) 가정
그룹을 따로 하나하나 검증할 경우 복잡하니깐,
모든 객체를 찔러봐야한다. 그래서 묶는것
주의해야할 점
root 에그리거트는 entity 여야한다.
외부에서는 무조건 root entity를 통해서 접근해야한다. 값객체는 루트 엔티티가 될 수 없다.
root를 통해서 접근하기 때문에 , 전역적으로 구분이 가능해야하기 때문이다..
에그리거트안에서 있는 값객체들은 지역식별이다.
즉
에그리거트 단위로 Repository를 생성해아한다.
연관관계
하나의 객체를 통해 다른 객체를 찾아갈 수 있으면 연관관계가 있다고 본다.
-> 주문을 통해 주문한 사용자를 찾는다.
연관관계의 팁
행위관점에서 덜 해로운것을 찾아서 단방향으로 처리해야한다.
A ->B 메세지 횟수 () B -> A 메세지 횟수를 비교하여 더 많은 쪽으로 방향을 잡는다.
*하지만 불필요하면 제거하자.*
팁
에그리게이트는 도메인의 상태변경을 기준으로 말한다.
조회는 데이터를 통해서 해결해야한다.
캡슐화안에서는 1대 N , 양방향 즉 연관관계가 높아도된다.
BUt 에그리거트 끼리는 안된다.
루트에그리거트에서 모든 validate조건을 밀어넣는다.
에그리거트 안에있는건 주로 값객체를 사용하는데 그냥 삭제하고 밀어넣으면 되기때문이다.
DDD는 에그리거트 단위로 움직이고 에그리거트는 factory를 통해서 만든다.
서비스 -> 어떤 객체에도 속하지않는 연산.
'부트캠프 > Next Step DDD' 카테고리의 다른 글
태태개발일지 - 도메인 주도 설계의 사실과 오해 후기(조영호 강사님) (1) | 2025.02.17 |
---|