SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Downloaden Sie, um offline zu lesen
아키텍처 with 도메인 주도 설계
고형호
hyungho.ko@gmail.com
https://hhko.github.io/archddd/
1
이력
2
1. 레이어 기준으로 관심사 분리를 분리한다.
2. TODO
1. interface  Mediator 패턴
2. Decorator 패턴
1. Validation
2. Long running operation log
3. DTO
4. Impure : 의존성
목차
1. 아키텍처 주요 역사
2. 관심사의 분리와 레이어
3. 레이어와 아키텍처 패턴
4. 레이어와 입/출력 함수
5. 레이어와 입/출력 의존성
6. 솔루션 구성
7. 비즈니스 관심사 설계
3
1. 아키텍처 주요 역사
4
Extreme Programming(XP) book published
by Kent Beck
Agile Manifesto
Test-Driven Development by Example
by Kent Beck
Domain-Driven Design
by Eric Evans
Hexagonal Architecture / Ports & Adapters
by Alistair Cockburn
Onion Architecture
by Jeffrey Palermo
Test Pyramid
by Mike Cohn at Succeeding with Agile Book
Clean Architecture
by Robert C. Martin
1999 2002 2005 2009
1992 2001 2003 2008 2012
아키텍처 패턴
설계 기술
설계 테스트
Three-tier Architecture > Three-layered Architecture
by John J. Donovan
Entity-Control-Boundary(ECB)
by lvar Jacobson
관심사의 분리
Separation of Concerns
5
2. 관심사의 분리와 레이어
6
Separation of Concerns
7
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
8
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
용어
9
Biz. 용어
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
용어
10
Tech. 용어
Biz. 용어
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
용어
11
Tech. 용어
Biz. 용어
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
용어
흐름
12
Tech. 용어
Biz. 용어
Biz. 흐름
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
용어
흐름
13
Tech. 용어
Biz. 용어
?
Biz. 흐름
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
용어
흐름
14
Tech. 용어
Biz. 용어
None
Biz. 흐름
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
용어
흐름
15
Tech. 용어
Biz. 용어
None
Biz. 흐름
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
용어
흐름
관계 ?
16
Tech. 용어
Biz. 용어
None
Biz. 흐름
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
용어
흐름
17
Tech. 용어
Biz. 용어
None
Biz. 흐름
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
단위
레이어 단위 레이어
18
Tech. 용어
Biz. 용어
None
Biz. 흐름
UseCase
애플리케이션
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
단위
레이어 단위 레이어
19
Tech. 용어
Biz. 용어
Entity
도메인
None
Biz. 흐름
UseCase
애플리케이션
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
단위
레이어 단위 레이어
20
Tech. 용어
Biz. 용어
Entity ∞ 어댑터
도메인
None
Biz. 흐름
UseCase
애플리케이션
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
단위
레이어 단위 레이어
21
Tech. 용어
Biz. 용어
Entity ∞ 어댑터
도메인
None
Biz. 흐름
UseCase
애플리케이션
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
단위
레이어 단위 레이어
Vs.
Tech. 관심사
Biz. 관심사
22
3. 레이어와 아키텍처 패턴
23
Tech. 용어
Biz. 용어
Entity ∞ 어댑터
도메인
None
Biz. 흐름
UseCase
애플리케이션
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
단위
레이어 단위 레이어
24
Tech. 용어
Biz. 용어
Entity ∞ 어댑터
도메인
None
Biz. 흐름
UseCase
애플리케이션
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
단위
레이어 단위 레이어
어댑터 레이어
25
Tech. 용어
Biz. 용어
Entity ∞ 어댑터
도메인
None
Biz. 흐름
UseCase
애플리케이션
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
단위
레이어 단위 레이어
어댑터 레이어
애플리케이션 레이어
26
Tech. 용어
Biz. 용어
Entity ∞ 어댑터
도메인
None
Biz. 흐름
UseCase
애플리케이션
Separation of Concerns
분리
Tech. 관심사
Biz. 관심사 Vs.
단위
레이어 단위 레이어
어댑터 레이어
애플리케이션 레이어
도메인 레이어
27
4. 레이어와 입/출력 함수
28
연산
입력 출력
29
연산
입력 출력
Tech. 관심사 Tech. 관심사
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
30
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
31
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
Biz. 흐름
UseCase
애플리케이션
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
32
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
Biz. 용어
Entity
도메인
Biz. 흐름
UseCase
애플리케이션
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
33
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
Biz. 용어
Entity
도메인
Biz. 흐름
UseCase
애플리케이션
Tech. 용어
∞
어댑터
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
None
34
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
Biz. 용어
Entity
도메인
Biz. 흐름
UseCase
애플리케이션
Tech. 용어
∞
어댑터 Biz. 용어
어댑터 ∞
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
None None
35
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
Biz. 용어
Entity
도메인
Biz. 흐름
UseCase
애플리케이션
Tech. 용어
∞
어댑터 Biz. 용어
어댑터 ∞
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
36
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
Biz. 용어
Entity
도메인
Biz. 흐름
UseCase
애플리케이션
Tech. 용어
∞
어댑터 Biz. 용어
어댑터 ∞
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
37
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
Biz. 용어
Entity
도메인
Biz. 흐름
UseCase
애플리케이션
Tech. 용어
∞
어댑터 Biz. 용어
어댑터 ∞
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
38
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
Biz. 용어
Entity
도메인
Biz. 흐름
UseCase
애플리케이션
Tech. 용어
∞
어댑터 Biz. 용어
어댑터 ∞
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
39
5. 레이어와 입/출력 의존성
40
연산
입력 출력
Tech. 관심사 Biz. 관심사 Tech. 관심사
Biz. 용어
Entity
도메인
Biz. 흐름
UseCase
애플리케이션
Tech. 용어
∞
어댑터 Biz. 용어
어댑터 ∞
- GUI
- FileSystem
- gRPC
- RabbitMQ
- …
- GUI
- FileSystem
- gRPC
- RabbitMQ
- Database
- …
인터페이스
Port
인터페이스
Port
사용 구현 사용 구현
41
1. 인터페이스  Mediator 패턴
2. Decorator 패턴
1. Validation
2. Long running operation log
3. DTO
4. Impure : 의존성
42
6. 솔루션 구성
43
src
ArchDdd.Domain
ArchDdd.Application
ArchDdd.Adapters.Infrastructure
ArchDdd.Adapters.Persistence
ArchDdd.Adapters.Presentation
ArchDdd.Host
Layers
T1.T2.T3
Adapter
Application
Domain
Host
44
tests
ArchDdd.Tests.E2E
ArchDdd.Tests.Integration
ArchDdd.Tests.Unit
Features
T1.T2.T3
Unit
Integration
E2E
45
7. 비즈니스 관심사 설계
46
설계 런타임
Vs.
47
설계 단위
설계 런타임
Vs.
Doamin
Application
Adapter
Host
48
설계 단위
설계 런타임
Vs.
※ 사용자가 인식하는 “트랜잭션” 단위로 UseCase(Application service)을 발굴한다.
49
설계 단위
설계 단위 설계 런타임
Vs.
50
설계 런타임
Vs.
※ Application service 구성 요소는 “비교 방법”으로 발굴한다.
- Structural Equality) : ValueObject 예. 이름이 같은 경우
- Identifier Equality) : Entity 예. 이름은 같지만 서로 다른 사람인 경우
51
설계 단위
설계 런타임
Vs.
※ Application service 트랜잭션을 담당할 Entity을 선정한다.
- AggregateRoot는 여러 Entity를 하나의 트랜젹션으로 묶는 단위다.
- 트랜잭션 관리를 위해 Entity은 AggregateRoot 외부로 직접 노출되지 않는다.
52
설계 단위
설계 런타임
Vs.
애플리케이션 레이어 도메인 레이어
- AggregateRoot
- Domain Event
- Domain Service
- Entity
- ValueObject
- Application Service
53
설계 단위
Appendix
54
템플릿 대상에서 제외 시킨다.
55
runs-on: ${{ matrix.os }}
name
Matrix에서 조합되는 N개 Job을 실행합니다.
56
57
{
"profiles": {
"고형호.ArchDdd.Host": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "고형호"
},
"applicationUrl": "https://localhost:50803;http://localhost:50804"
}
}
}
launchSettings.json
1
2
3
4
58
Extreme Programming(XP) book published
by Kent Beck
Agile Manifesto
Test-Driven Development by Example
by Kent Beck
Domain-Driven Design
by Eric Evans
Hexagonal Architecture / Ports & Adapters
by Alistair Cockburn
Onion Architecture
by Jeffrey Palermo
Test Pyramid
by Mike Cohn at Succeeding with Agile Book
Clean Architecture
by Robert C. Martin
1999 2002 2005 2009
1992 2001 2003 2008 2012
Pattern
Tech.
Test
Three-tier Architecture > Three-layered Architecture
by John J. Donovan
Entity-Control-Boundary(ECB)
by lvar Jacobson
Separation of Concerns
Layer(Tier), Entity
59

Weitere ähnliche Inhalte

Ähnlich wie 아키텍처 with 도메인 주도 설계

5G Cloud 기술
5G Cloud 기술5G Cloud 기술
5G Cloud 기술James Ahn
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] DockerWonjun Hwang
 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework명신 김
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견Devgear
 
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++BuilderDevgear
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#명신 김
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지YoungSu Son
 
RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.Devgear
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig baseINSIGHT FORENSIC
 
제품 설계에서 제조 프로세스까지 하나의 통합 플랫폼으로, Fusion 360
제품 설계에서 제조 프로세스까지 하나의 통합 플랫폼으로, Fusion 360제품 설계에서 제조 프로세스까지 하나의 통합 플랫폼으로, Fusion 360
제품 설계에서 제조 프로세스까지 하나의 통합 플랫폼으로, Fusion 360Daniel Kim
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XpressEngine
 
RAD Studio 10 시애틀: 출시 세미나 발표자료
RAD Studio 10 시애틀: 출시 세미나 발표자료RAD Studio 10 시애틀: 출시 세미나 발표자료
RAD Studio 10 시애틀: 출시 세미나 발표자료Devgear
 
ABG(Xener SBC-Session Board Controller) Introduction
ABG(Xener SBC-Session Board Controller) IntroductionABG(Xener SBC-Session Board Controller) Introduction
ABG(Xener SBC-Session Board Controller) IntroductionGuisun Han
 
RAD Studio XE7 기술 세미나 발표자료
RAD Studio XE7 기술 세미나 발표자료RAD Studio XE7 기술 세미나 발표자료
RAD Studio XE7 기술 세미나 발표자료Devgear
 
Developer direct live in 부산
Developer direct live in 부산Developer direct live in 부산
Developer direct live in 부산Humphery Kim
 
한국머신비전산업협회보 2018.03 4호
한국머신비전산업협회보 2018.03 4호한국머신비전산업협회보 2018.03 4호
한국머신비전산업협회보 2018.03 4호고양뉴스
 
Introduce midasPlant
Introduce midasPlantIntroduce midasPlant
Introduce midasPlantmidasITPlant
 
국내외 Io t 기술 표준
국내외 Io t 기술 표준국내외 Io t 기술 표준
국내외 Io t 기술 표준남억 김
 

Ähnlich wie 아키텍처 with 도메인 주도 설계 (20)

5G Cloud 기술
5G Cloud 기술5G Cloud 기술
5G Cloud 기술
 
Maker 오해와 진실
Maker 오해와 진실Maker 오해와 진실
Maker 오해와 진실
 
SYTEC2202.pdf
SYTEC2202.pdfSYTEC2202.pdf
SYTEC2202.pdf
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] Docker
 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지
 
RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
 
제품 설계에서 제조 프로세스까지 하나의 통합 플랫폼으로, Fusion 360
제품 설계에서 제조 프로세스까지 하나의 통합 플랫폼으로, Fusion 360제품 설계에서 제조 프로세스까지 하나의 통합 플랫폼으로, Fusion 360
제품 설계에서 제조 프로세스까지 하나의 통합 플랫폼으로, Fusion 360
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
 
RAD Studio 10 시애틀: 출시 세미나 발표자료
RAD Studio 10 시애틀: 출시 세미나 발표자료RAD Studio 10 시애틀: 출시 세미나 발표자료
RAD Studio 10 시애틀: 출시 세미나 발표자료
 
ABG(Xener SBC-Session Board Controller) Introduction
ABG(Xener SBC-Session Board Controller) IntroductionABG(Xener SBC-Session Board Controller) Introduction
ABG(Xener SBC-Session Board Controller) Introduction
 
RAD Studio XE7 기술 세미나 발표자료
RAD Studio XE7 기술 세미나 발표자료RAD Studio XE7 기술 세미나 발표자료
RAD Studio XE7 기술 세미나 발표자료
 
Developer direct live in 부산
Developer direct live in 부산Developer direct live in 부산
Developer direct live in 부산
 
한국머신비전산업협회보 2018.03 4호
한국머신비전산업협회보 2018.03 4호한국머신비전산업협회보 2018.03 4호
한국머신비전산업협회보 2018.03 4호
 
Introduce midasPlant
Introduce midasPlantIntroduce midasPlant
Introduce midasPlant
 
국내외 Io t 기술 표준
국내외 Io t 기술 표준국내외 Io t 기술 표준
국내외 Io t 기술 표준
 

아키텍처 with 도메인 주도 설계