SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
DDD로 복잡함 다루기
최범균(madvirus@madvirus.net), 2018-02-07
발표자
•최범균,madvirus@madvirus.net
• 주로자바로먹고살며,
• 코딩잘하고싶고,글잘쓰고싶은
• 개발자
2
내용
•DDD로복잡함다루기
• 복잡한시스템
• DDD소개
• DDD로복잡도낮추기
•대상
• 복잡한시스템을만들어야하는개발자
3
#1 복잡한 시스템
4
복잡한 시스템
5
시간이 갈수록 복잡도는 가속화
6
예: 연통배관 구조(이상)
UI 서비스 DAO
UI 서비스 DAO
UI 서비스 DAO
7
예: 연통배관 구조(현실)
UI 서비스 DAO
UI 서비스 DAO
UI 서비스 DAO
8
복잡도가 증가하면
결합도&분석 비용 증가
"로직 중복, (유사)모델 중복,
로직 분산, 뇌 부하"
9
복잡도가 증가하면
결합도&분석 비용 증가
변경 비용 증가
10
복잡도가 증가하면
결합도&분석 비용 증가
변경 비용 증가
경쟁력 저하(망함)
11
필요한 것
•경쟁력을높이기위해여러수준에서 시
스템이복잡해지는것을억제하는방법
변경
비용
시간
12
#2 DDD 소개
13
도메인 주도 설계
•도메인중심개발
•세가지축
• 유비쿼터스언어UbiquitousLanguage
도메인의언어
• 바운디드컨텍스트Bounded Context
상위수준경계
• 패턴TacticalPattern
도메인모델구현패턴
14
유비쿼터스 언어
•도메인언어사용
• 대화,문서,코드등모든곳
• 지속적인발견/발전
DigWorkKingInfoinfo=
DigWorkKindInfo.builder()
.digKind(digKind)
...
.build()
digWorkReport.changeDigWorkKind(info);
화면에서 이걸 누르면
굴착 종류를 OO로 변경
…
15
바운디드 컨텍스트
• 기능을구현한소프트웨어/시스템
• 유비쿼터스언어경계
• 언어에컨텍스트를제공
• 바운디드컨텍스트크기/연동
• 조직구조를반영
16
부서/직원
점검
직원부서
조원 리포트
점검
대상
아키텍처
•도메인모델을도메인영역에모음
도메인응용UI
인프라
17
도메인 모델 구현 패턴
• 기본모델
• 엔티티
• 밸류
• 개념적인단일모델
• 애그리거트
• 도메인로직
• 객체모델
• 도메인서비스(또는함수형)
• 영속
• 리포지토리
18
엔티티
•중심모델
• 개념적인식별자(ID)
• 고정,변하지않음
• 데이터/상태
• 도메인로직에영향(제약조건등)
• 자신만의라이프사이클
• 생성상태변경(삭제)
19
밸류
•개념적으로 하나인데이터집합표현
• 예:주소=주소1+주소2+우편번호
• 예:돈=양+통화
•모델의표현력향상
20
도메인 로직
•도메인로직을도메인모델에넣기
publicclassBigDigWorkCheck{
...
publicvoidupdate(BigCheckUpdateInfobcUpdInfo){
if(isDecideProgressing()){
thrownew…();
}
...
결제가 진행중이면
수정할 수 없다
접수 상태가 아니면
알림벨 처리를 할 수 없고,
일반 작업이면
배관확인 상태로
아니면 대기 상태가 된다
publicclassDigWorkEocs{
...
publicvoidprocessAlimbell(){
if(isNotReceivedState()){
thrownew…;
}
this.state=DigKind.isNormal(jobgu)?
EocsState.PIPE_CHECK.cd():
EocsState.WAIT.cd();
}
21
애그리거트
•개별모델을상위수준에서묶는단위
 상위 수준에서 모델 이해
 한 애그리거트에 속한 객체는
유사한 라이프사이클
22
애그리거트
•도메인규칙/일관성관리단위
• 애그리거트루트책임
• 외부에서애그리거트내부의구성요소에직
접접근/수정하지못함
• 루트를통해접근
•한애그리거트는자기자신만관리
23
애그리거트 일관성 범위 예
@Transactional
public void regist(BigCheckRegistRequest req) {
DigWorkReport report = findDigWork(req);
BigDigWorkCheck bigCheck = findBigCheck(req);
if (bigCheck != null) {
BigCheckUpdateInfo updInfo = …;
bigCheck.update( … );
} else {
BigDigWorkCheck newBigCheck =
registerBigCheckOfReport(report, req);
bigCheckRepository.save(newBigCheck);
}
}
/./ 애그리거트 루트
public class BigDigWorkCheck {
...
public void update(
BigCheckUpdateInfo updInfo) {
if (isDecideProgressing())
throw new DecideProgressException();
...
this.joinTimeFrom =
updInfo.getJoinTimeFrom();
…
this.updateDetails(updInfo.getResults());
}
private void updateDetails(
List<CheckResult> results) {
… // details 수정
}
24
리포지토리
• 애그리거트의개념적인저장소
• 저장,조회,삭제등기능제공
• ID생성기능제공
• 조건을이용한검색기능제공
• 도메인영역에인터페이스위치
• 실제구현은인프라스트럭처에위치
25
응용 서비스
• 응용로직흐름제어
• 도메인모델을
사용해서기능구현
• 트랜잭션관리
@Transactional
public void regist(BigCheckRegistRequest req) {
DigWorkReport report = findDigWork(req);
BigDigWorkCheck bigCheck =
bigCheckRepository.findOne(…);
if (bigCheck != null) {
BigCheckUpdateInfo updInfo = …;
bigCheck.update( … );
} else {
BigDigWorkCheck newBigCheck =
registerBigCheckOfReport(report, req);
bigCheckRepository.save(newBigCheck);
}
}
26
도메인 서비스
•한애그리거트로구현할수없는기능
• 여러애그리거트가관여하는기능
• 외부시스템/외부BC연동기능
•예
• 계좌이체
• 두계좌관여
• 상품가격할인계산
• 상품,쿠폰,회원(등급)관여
27
도메인 서비스와 구현
•구현기술의존,외부연동이필요하면
인프라영역에구현위치
28
도메인 이벤트
•도메인모델에서발생한것을표현
• 주로상태변경
• 기능실행후관련이벤트발생
•이벤트와관련된도메인기능
• A하면,B를한다/A할때,B를한다.
• 예
• 주문접수하면담당자에게이메일로통지
• 배송시작하면수취인에게카톡보냄
29
도메인 이벤트
•도메인에서 이벤트발생,
•이벤트핸들러가이벤트에반응
30
public class Delivery {
public void start() {
…
Events.raise(
new DeliveryStartedEvent(
this.id,
this.state,
this.startingTime)
);
}
public class EventHandler {
public void handle(
DeliveryStartedEvent evt) {
… // 통지 처리
}
}
#3 DDD로 복잡도 낮추기
31
유비쿼터스 언어
•불필요한해석감소
publicclassDigWorkEocs{
...
publicvoidprocessAlimbell(){
if(isNotReceivedState()){
thrownew…;
}
this.state=
DigKind.isNormal(jobgu)?
EocsState.PIPE_CHECK.cd():
EocsState.WAIT.cd();
}
publicclassDigWorkEocs{
...
publicvoidchangeState(){
if(!state.equals("20")){
thrownew…;
}
this.state=
jobgu.equals("20")?
"30":
"60";
}
32
애그리거트와 모델 이해
•개념적으로 상위수준에서모델이해
• 개별요소의복잡함에빠지는것방지
수정의뢰 거리측정
도면
33
애그리거트와 응집도
•개념적으로 하나인모델의도메인로직
을단일애그리거트로모음
34
publicvoidalimbell(…){
DigWorkEocsdw=findOne(…);
if(dw==null)throw…
dw.processAlimbell();
}
publicclassDigWorkEocs{
...
publicvoidprocessAlimbell(){
if(isNotReceivedState()){
thrownew…;
}
this.state=DigKind.isNormal(jobgu)?
EocsState.PIPE_CHECK.cd():
EocsState.WAIT.cd();
}
publicvoidalimbell(…){
DigWorkEocsdw=findOne(…);
if(dw==null)throw…
if(!dw.getState().equals("20")){
throw…
}
dw.setState(
dw.getJobgu().equals("20")?
"30":"60"
);
}
애그리거트 간 ID 참조
•애그리거트 간연관을ID로처리
• 모델간직접의존을끊음
•결합도감소효과
• 다른모델의수정에따른여파감소
• 다른모델수정가능성차단
• 애그리거트는자기자신만변경
•구현복잡도감소
• 여러애그리거트가필요한조회는별도모
델로구현CQRS
35
도메인 서비스로 도메인 간 분리
•도메인서비스를사용해서간접의존
• 다른도메인변경에따른영향최소화
36
인프라/외부 변화에 도메인 영향 적음
도메인 이벤트로 유연함 증가
•핸들러추가로기능추가
•외부시스템과메시지로통합
• 결과적일관성
37
도메인
모델
도메인
이벤트
생성
핸들러
핸들러
서비스
메시징
시스템
BC
바운디드 컨텍스트로 상위 수준 관계 관리
•상위수준바운디드 컨텍스트통합뷰
38
BC
결과 구조
39
도메인
Agg
Agg
Svc
BC
E V
E V
BC
Event
메시징
도메인App
BC
인프라
Svc
구현
핸들러
핸들러
App
인프라
DDD와 복잡도 감소 요약
항목 효과
유비쿼터스 언어 뇌부하↓
애그리거트 뇌부하↓, 응집도↑
애그리거트 간 ID 참조 결합도↓, 확장성↑
도메인 서비스 결합도↓
도메인 이벤트 유연함↑, 결합도↓
BC, 컨텍스트맵 뇌부하↓
40
복잡한 시스템에서의 DDD 이점
변경 비용 감소
DDD 학습 비용
41
맺음말
42
다시 만들어도 잘 만들 수 없고,
잘 만드는 법을 알아야 잘 만든다
끝
최범균 | madvirus@madvirus.net | http://javacan.tistory.com
43

Weitere ähnliche Inhalte

Was ist angesagt?

애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 Young-Ho Cho
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
Roles, Responsibilities, Collaborations
Roles, Responsibilities, CollaborationsRoles, Responsibilities, Collaborations
Roles, Responsibilities, CollaborationsYoung-Ho Cho
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]MongoDB
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄현 수
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...AWSKRUG - AWS한국사용자모임
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128beom kyun choi
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019min woog kim
 
Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean ArchitectureMattia Battiston
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다Arawn Park
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Jin wook
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들Chris Ohk
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
 
Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Younghan Kim
 
Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Younghan Kim
 
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기NHN FORWARD
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐Terry Cho
 

Was ist angesagt? (20)

애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
Full Text Search In PostgreSQL
Full Text Search In PostgreSQLFull Text Search In PostgreSQL
Full Text Search In PostgreSQL
 
Roles, Responsibilities, Collaborations
Roles, Responsibilities, CollaborationsRoles, Responsibilities, Collaborations
Roles, Responsibilities, Collaborations
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
 
Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean Architecture
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조
 
Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑
 
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
 

Ähnlich wie DDD로 복잡함 다루기

좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기Sunghyouk Bae
 
도메인주도설계
도메인주도설계도메인주도설계
도메인주도설계Wonjun Hwang
 
Quick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooksQuick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooks용환 노
 
Msrds game server
Msrds game serverMsrds game server
Msrds game serverperpet
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견Devgear
 
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...Taekyu Lim
 
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어 2015.12.03
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어  2015.12.03엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어  2015.12.03
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어 2015.12.03Devgear
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3uEngine Solutions
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVONYounghan Kim
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
스마트 솔루션: 다쏘시스템 3DEXPERIENCE (Design, Simulation, Manufacturing) 플랫폼을 통한 버츄얼 트...
스마트 솔루션: 다쏘시스템 3DEXPERIENCE (Design, Simulation, Manufacturing) 플랫폼을 통한 버츄얼 트...스마트 솔루션: 다쏘시스템 3DEXPERIENCE (Design, Simulation, Manufacturing) 플랫폼을 통한 버츄얼 트...
스마트 솔루션: 다쏘시스템 3DEXPERIENCE (Design, Simulation, Manufacturing) 플랫폼을 통한 버츄얼 트...Amazon Web Services Korea
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
Tadpole DB Hub 1.0.0
Tadpole DB Hub 1.0.0Tadpole DB Hub 1.0.0
Tadpole DB Hub 1.0.0cho hyun jong
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptxssuserb8551e
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Gyuwon Yi
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용중선 곽
 
AI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.IAI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.ILowy Shin
 

Ähnlich wie DDD로 복잡함 다루기 (20)

좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
 
도메인주도설계
도메인주도설계도메인주도설계
도메인주도설계
 
Quick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooksQuick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooks
 
Msrds game server
Msrds game serverMsrds game server
Msrds game server
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
 
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어 2015.12.03
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어  2015.12.03엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어  2015.12.03
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어 2015.12.03
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
DDD 준비 서문래
DDD 준비 서문래DDD 준비 서문래
DDD 준비 서문래
 
스마트 솔루션: 다쏘시스템 3DEXPERIENCE (Design, Simulation, Manufacturing) 플랫폼을 통한 버츄얼 트...
스마트 솔루션: 다쏘시스템 3DEXPERIENCE (Design, Simulation, Manufacturing) 플랫폼을 통한 버츄얼 트...스마트 솔루션: 다쏘시스템 3DEXPERIENCE (Design, Simulation, Manufacturing) 플랫폼을 통한 버츄얼 트...
스마트 솔루션: 다쏘시스템 3DEXPERIENCE (Design, Simulation, Manufacturing) 플랫폼을 통한 버츄얼 트...
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
Tadpole DB Hub 1.0.0
Tadpole DB Hub 1.0.0Tadpole DB Hub 1.0.0
Tadpole DB Hub 1.0.0
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
CQRS
CQRSCQRS
CQRS
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptx
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
AI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.IAI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.I
 

Mehr von beom kyun choi

옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개beom kyun choi
 
TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나beom kyun choi
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)beom kyun choi
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀beom kyun choi
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugbeom kyun choi
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초beom kyun choi
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰beom kyun choi
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료beom kyun choi
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)beom kyun choi
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개beom kyun choi
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해beom kyun choi
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개beom kyun choi
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기beom kyun choi
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)beom kyun choi
 
객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회beom kyun choi
 

Mehr von beom kyun choi (20)

옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초
 
Spring Boot 소개
Spring Boot 소개Spring Boot 소개
Spring Boot 소개
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)
 
객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회
 
Storm 훑어보기
Storm 훑어보기Storm 훑어보기
Storm 훑어보기
 

DDD로 복잡함 다루기