도메인 주도 설계
DDD(Domain Driven Design)
2017/10/19
Slack : @ninetin
난 누구?
서일구 (ILGU SEO)
기타 등등
아젠다
아젠다
DDD(Domain Driven Design)가 뭐야?
“하나의 팀에서 하나의 언어로”
DDD(Domain Driven Design)가 뭐야?
소프트웨어로 해결하고자 하는 문제 영역을 뜻함 = 요구사항
DDD(Domain Driven Design)가 뭐야?
DDD(Domain Driven Design)가 뭐야?
DDD(Domain Driven Design)가 뭐야?
소프트웨어로 해결하고자 하는 문제 영역을 뜻함 = 요구사항
(제대로 했을터...)
(제대로 했을터...)
(제대로 했을터...)
DDD(Domain Driven Design)가 뭐야?
이러한 문제를 탈피 하고자 나온 노력
DDD(Domain Driven Design)가 뭐야?
추상화를 거쳐서 객체로 만든다. = 객체지향(OOP)
DDD(Domain Driven Design)가 뭐야?
DDD도 어찌보면 객체지향(OOP)의 아류
DDD(Domain Driven Design)가 뭐야?
컴퓨터 소프트웨어 개발의 구조적 패턴들
DDD(Domain Driven Design)가 뭐야?
DDD(Domain Driven Design)가 뭐야?
왜 달라지는가? 뭐가 문제인가?
DDD(Domain Driven Design)가 뭐야?
소프트웨어와 도메인 사이에는
도메인
(요구사항)
모델
소프트웨어
DDD(Domain Driven Design)가 뭐야?
도메인
(요구사항)
모델
소프트웨어
DDD(Domain Driven Design)가 뭐야?
종종 이 모델을 세분화 하면서
모델
분석
설계
DDD(Domain Driven Design)가 뭐야?
서로간의 인식의 차이 가 발생한다
=
아젠다
DDD하는 방법?
적용할때 고려할 점
DDD하는 방법?
구현대상
모델링
구현
DDD하는 방법?
-난다.
-쏜다.
-변신한다.
-다리길이
-팔 길이
-뿔 길이
DDD하는 방법?
DDD하는 방법?
Check List!
끝?
감사합니다…?
아젠다
부록
부록
● 엔티티 (Entity)
- 식별자를 가지며 영속성이 필요한 객체(ex:DB, Java Bean)
● 값객체 (Value Object)
- 식별자가 없으며 영속성이 필요없는 객체(ex:돈, 포인트)
- 수정할 수 없고 필요한 만큼 복제하여 전달하여 사용
● 서비스 (Service)
- 특정 엔터티나 값객체에 속할 수 없는 도메인의 개념 표현
- 주로 여러객체에 걸쳐서 일어나는 행위를 담당
- 상태정보를 관리하지 않음
부록
● 집합 (Aggregation)
- 객체의 소유권과 경계를 정의
- 데이터를 변경할 때 하나의 단위로 간주되는
- 외부에서 접근할 수 있는 단하나의 창구인 root를 가짐
● 팩토리(Factory)
- 복잡한 객체 생성(ex : Aggregation)의 절차를 캡슐화
- 단순한 경우라면 생성자를 사용
● 리파지토리(Repository)
- 객체의 저장을 담당
- 이미 존재하는 도메인 객체의 참조를 얻는 로직을 캡슐화
진짜 끝