SlideShare a Scribd company logo
1 of 43
Download to read offline
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

More Related Content

What's hot

파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
Roles, Responsibilities, Collaborations
Roles, Responsibilities, CollaborationsRoles, Responsibilities, Collaborations
Roles, Responsibilities, CollaborationsYoung-Ho Cho
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?VMware Tanzu Korea
 
금융It시스템의 이해 2편
금융It시스템의 이해 2편금융It시스템의 이해 2편
금융It시스템의 이해 2편Seong-Bok Lee
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스Arawn Park
 
Solid NodeJS with TypeScript, Jest & NestJS
Solid NodeJS with TypeScript, Jest & NestJSSolid NodeJS with TypeScript, Jest & NestJS
Solid NodeJS with TypeScript, Jest & NestJSRafael Casuso Romate
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기경원 이
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass SlidesNir Kaufman
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignYoung-Ho Cho
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교Woo Yeong Choi
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128beom kyun choi
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄현 수
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)SangIn Choung
 
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델명환 안
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈용근 권
 
Lets make a better react form
Lets make a better react formLets make a better react form
Lets make a better react formYao Nien Chung
 
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드if kakao
 

What's hot (20)

파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
Rich domain model
Rich domain modelRich domain model
Rich domain model
 
Roles, Responsibilities, Collaborations
Roles, Responsibilities, CollaborationsRoles, Responsibilities, Collaborations
Roles, Responsibilities, Collaborations
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
 
금융It시스템의 이해 2편
금융It시스템의 이해 2편금융It시스템의 이해 2편
금융It시스템의 이해 2편
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
 
Solid NodeJS with TypeScript, Jest & NestJS
Solid NodeJS with TypeScript, Jest & NestJSSolid NodeJS with TypeScript, Jest & NestJS
Solid NodeJS with TypeScript, Jest & NestJS
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass Slides
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
 
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈
 
Lets make a better react form
Lets make a better react formLets make a better react form
Lets make a better react form
 
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
 

Similar to 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
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugbeom kyun choi
 

Similar to 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
 
스마트 솔루션: 다쏘시스템 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
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 

More from 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
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초beom kyun choi
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유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
 

More from 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 텐서플로우 회귀
 
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유
 
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 훑어보기
 

Recently uploaded

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 

Recently uploaded (6)

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 

DDD로 복잡함 다루기