SlideShare una empresa de Scribd logo
1 de 18
Domain Driven Design8장 이수안(inch772@naver.com) 아꿈사(café.naver.com/architect1)
더 심층적인 통찰력을 향한 리팩토링 3장 소개
우리가 알고 있는 리팩토링 "매우 상세한 수준에서 코드의 가독성을 높이거나 개선하려는 기계적인 변경에 초점을 맞춘다"
Refactoring 마이크로 리팩토링 카탈로그 코드 자체에서 발견되는 문제를 해결하는 것이 목표
패턴을 활용한 리팩토링 개발자가 디자인 패턴을 적용해야 한다고 판단 했을 때 따라야 할 리팩토링 절차에 대한 높은 수준 목표 제시 설계 품질을 기술적 관점에서 바라봄
심층 모델을 향한 리팩토링 What? 시스템의 생존력에 가장 큰 영향을 미치는 리팩토링 When ? 도메인에 대한 새로운 통찰력을 얻었을 때 수행 How ? 코드를 사용해 모델이 표현하고자 하는 바를 명확하게 드러내고자 수행  리팩토링의 목표는 개발자가 단순히 코드가 수행 하는 바를 이해하는 것뿐만 아니라 왜 그렇게 수행 되는지를 이해하고 도메인 전문가와 의사소통에 이를 연결 시키는 것이다.
심층 모델(Deep Model)이란? 도메인의 피상적인 측면을 배제하고 도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델 추상적인 요소를 포함하지만 문제의 핵심을 관통하는 구체적인 요소를 포함 예) 선박과 컨테이너가 포함된 객체 모델 초기 아이디어로 사용 -> 여러번의 반복주기-> 선박운항 과 "선하증권"모델 부각 (선백/컨테이너는 모델에 누락)
심층 모델/유연한 설계 지속적 리팩토링을 수행하려면 설계 자체가 변경을 지원 해야됨   "유연한 설계"(supple design)와 이를 달성하기 위한 접근법 10장에서 소개 예)낡은 야구글러브  구부러지는 지점 유연해짐 - 그 외 부분은 딱딱해서 손을 보호 출처 : http://suhyeonkwon.blog.me/100099740800
발견과정 9장 "암시적인 개념을 명시적으로 "  도메인의 중심 개념을 담고 있는 모델을 확보하고 설계에 반영하는 법  10장 "유연한 설계“  유연하고 쉽게 확장할 수 있는 소프트웨어를 작성하는 방법 11장 ~12장  분석 패턴과, 디자인 패턴을 적용하는 방법을 설명
8장 도약 사례 소개
리팩토링 효과 서서히 습득한 지식은 소규모 리팩토링을 통해 드러난다 쌓인 지식은 어느 순간 중요한 통찰로서 프로젝트 전체에 영향을 미친다
도약의 사례소개 여러 대출회사가 모여 퍼실리티(facility)를 지원할 지원할 자금을 공동으로 출자하는 채권 은행단 구현 퍼실리티란? 돈을 대출해 줄 회사와의 매매 계약 신용카드 예 신용카드 한도 : 사전 협의된 금액까지 빌릴 수 있는 퍼실리티 신용카드 사용의 미 청구 금액은 퍼실리티에 대한 차용액이 되며 대출 총액을 증가시킴
서서히 지식 쌓아가기 1. 대출 회사 지분이 고정적이라는 가정 2. but. 대출금  제공 받은 투자 회사는 일반적으로 더 많은 지분에 해당 하는 금액을 제공할 수 있음 핵심을 관통 하지 못하여 알고리즘은 복잡해지고 미묘한 반올림 불일치 문제 발생 됨
도약
PIE 그래프를 통한 새로운 모델을 시각화 하고 다양한 시나리오 검증
지분 총액(Share Pie)를 사용한 Loan 모델 생성
결과 업무 전문가들도 쉽게 이해할 수 있는 모델이 생김 복잡한 반올림 문제도 자동 해결 됨 심층모델의명확성/단순함 UBIUITUOS LANGUAGE 기반 의사소통 더 나은 모델링으로 도약
정리 우리가 알고 있는 수준의 리팩토링은 코드레벨로 접근하는 마이크로리팩토링 보다 시스템의 생존력에 영향을 미칠 수 있는 큰 관점의 접근법을 심층 모델을 향한 리팩토링 심층 모델은 핵심을 관통하는 구체적인 요소를 포함하면서 알기 쉽게 표현한 모델  심층 모델의 발견과정은 기반 지식을 쌓다 어느순간도약 시점을 거쳐 발견하게 된다.

Más contenido relacionado

La actualidad más candente

마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
Roles, Responsibilities, Collaborations
Roles, Responsibilities, CollaborationsRoles, Responsibilities, Collaborations
Roles, Responsibilities, Collaborations
Young-Ho Cho
 

La actualidad más candente (20)

게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
Rich domain model
Rich domain modelRich domain model
Rich domain model
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
 
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
 
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
Roles, Responsibilities, Collaborations
Roles, Responsibilities, CollaborationsRoles, Responsibilities, Collaborations
Roles, Responsibilities, Collaborations
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
빅데이터 분석 시스템 도입과 AI 적용
빅데이터 분석 시스템 도입과 AI 적용빅데이터 분석 시스템 도입과 AI 적용
빅데이터 분석 시스템 도입과 AI 적용
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법
 
DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)
 
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
 

Similar a Domain driven design 8장

3부. 더 심층적인 통찰력을 향한 리팩터링 (8장 도약)
3부. 더 심층적인 통찰력을 향한 리팩터링 (8장 도약)3부. 더 심층적인 통찰력을 향한 리팩터링 (8장 도약)
3부. 더 심층적인 통찰력을 향한 리팩터링 (8장 도약)
Choonghyun Yang
 
Wwc2016 기획디자인개발그리고프로토
Wwc2016 기획디자인개발그리고프로토Wwc2016 기획디자인개발그리고프로토
Wwc2016 기획디자인개발그리고프로토
keesung kim
 
C Language II
C Language IIC Language II
C Language II
Suho Kwon
 
시간 있으면 설계나 합시다
시간 있으면 설계나 합시다시간 있으면 설계나 합시다
시간 있으면 설계나 합시다
codevania
 

Similar a Domain driven design 8장 (20)

도메인주도설계
도메인주도설계도메인주도설계
도메인주도설계
 
3부. 더 심층적인 통찰력을 향한 리팩터링 (8장 도약)
3부. 더 심층적인 통찰력을 향한 리팩터링 (8장 도약)3부. 더 심층적인 통찰력을 향한 리팩터링 (8장 도약)
3부. 더 심층적인 통찰력을 향한 리팩터링 (8장 도약)
 
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
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
 
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
 
Wwc2016 기획디자인개발그리고프로토
Wwc2016 기획디자인개발그리고프로토Wwc2016 기획디자인개발그리고프로토
Wwc2016 기획디자인개발그리고프로토
 
[Atlassian meets dev ops and itsm] infrastructure for devops
[Atlassian meets dev ops and itsm] infrastructure for devops[Atlassian meets dev ops and itsm] infrastructure for devops
[Atlassian meets dev ops and itsm] infrastructure for devops
 
프로젝트관리­ 2회(블로그용)
프로젝트관리­ 2회(블로그용)프로젝트관리­ 2회(블로그용)
프로젝트관리­ 2회(블로그용)
 
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworks
 
SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSA
 
Dev rookie codecomplete-1
Dev rookie codecomplete-1Dev rookie codecomplete-1
Dev rookie codecomplete-1
 
개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기
 
자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라
 
C Language II
C Language IIC Language II
C Language II
 
SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션
 
클라우드 네이티브로의 전환을 위한 여정
클라우드 네이티브로의 전환을 위한 여정클라우드 네이티브로의 전환을 위한 여정
클라우드 네이티브로의 전환을 위한 여정
 
시간 있으면 설계나 합시다
시간 있으면 설계나 합시다시간 있으면 설계나 합시다
시간 있으면 설계나 합시다
 
TDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: Refactoring
 

Domain driven design 8장

  • 1. Domain Driven Design8장 이수안(inch772@naver.com) 아꿈사(café.naver.com/architect1)
  • 2. 더 심층적인 통찰력을 향한 리팩토링 3장 소개
  • 3. 우리가 알고 있는 리팩토링 "매우 상세한 수준에서 코드의 가독성을 높이거나 개선하려는 기계적인 변경에 초점을 맞춘다"
  • 4. Refactoring 마이크로 리팩토링 카탈로그 코드 자체에서 발견되는 문제를 해결하는 것이 목표
  • 5. 패턴을 활용한 리팩토링 개발자가 디자인 패턴을 적용해야 한다고 판단 했을 때 따라야 할 리팩토링 절차에 대한 높은 수준 목표 제시 설계 품질을 기술적 관점에서 바라봄
  • 6. 심층 모델을 향한 리팩토링 What? 시스템의 생존력에 가장 큰 영향을 미치는 리팩토링 When ? 도메인에 대한 새로운 통찰력을 얻었을 때 수행 How ? 코드를 사용해 모델이 표현하고자 하는 바를 명확하게 드러내고자 수행 리팩토링의 목표는 개발자가 단순히 코드가 수행 하는 바를 이해하는 것뿐만 아니라 왜 그렇게 수행 되는지를 이해하고 도메인 전문가와 의사소통에 이를 연결 시키는 것이다.
  • 7. 심층 모델(Deep Model)이란? 도메인의 피상적인 측면을 배제하고 도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델 추상적인 요소를 포함하지만 문제의 핵심을 관통하는 구체적인 요소를 포함 예) 선박과 컨테이너가 포함된 객체 모델 초기 아이디어로 사용 -> 여러번의 반복주기-> 선박운항 과 "선하증권"모델 부각 (선백/컨테이너는 모델에 누락)
  • 8. 심층 모델/유연한 설계 지속적 리팩토링을 수행하려면 설계 자체가 변경을 지원 해야됨 "유연한 설계"(supple design)와 이를 달성하기 위한 접근법 10장에서 소개 예)낡은 야구글러브 구부러지는 지점 유연해짐 - 그 외 부분은 딱딱해서 손을 보호 출처 : http://suhyeonkwon.blog.me/100099740800
  • 9. 발견과정 9장 "암시적인 개념을 명시적으로 " 도메인의 중심 개념을 담고 있는 모델을 확보하고 설계에 반영하는 법 10장 "유연한 설계“ 유연하고 쉽게 확장할 수 있는 소프트웨어를 작성하는 방법 11장 ~12장 분석 패턴과, 디자인 패턴을 적용하는 방법을 설명
  • 11. 리팩토링 효과 서서히 습득한 지식은 소규모 리팩토링을 통해 드러난다 쌓인 지식은 어느 순간 중요한 통찰로서 프로젝트 전체에 영향을 미친다
  • 12. 도약의 사례소개 여러 대출회사가 모여 퍼실리티(facility)를 지원할 지원할 자금을 공동으로 출자하는 채권 은행단 구현 퍼실리티란? 돈을 대출해 줄 회사와의 매매 계약 신용카드 예 신용카드 한도 : 사전 협의된 금액까지 빌릴 수 있는 퍼실리티 신용카드 사용의 미 청구 금액은 퍼실리티에 대한 차용액이 되며 대출 총액을 증가시킴
  • 13. 서서히 지식 쌓아가기 1. 대출 회사 지분이 고정적이라는 가정 2. but. 대출금 제공 받은 투자 회사는 일반적으로 더 많은 지분에 해당 하는 금액을 제공할 수 있음 핵심을 관통 하지 못하여 알고리즘은 복잡해지고 미묘한 반올림 불일치 문제 발생 됨
  • 15. PIE 그래프를 통한 새로운 모델을 시각화 하고 다양한 시나리오 검증
  • 16. 지분 총액(Share Pie)를 사용한 Loan 모델 생성
  • 17. 결과 업무 전문가들도 쉽게 이해할 수 있는 모델이 생김 복잡한 반올림 문제도 자동 해결 됨 심층모델의명확성/단순함 UBIUITUOS LANGUAGE 기반 의사소통 더 나은 모델링으로 도약
  • 18. 정리 우리가 알고 있는 수준의 리팩토링은 코드레벨로 접근하는 마이크로리팩토링 보다 시스템의 생존력에 영향을 미칠 수 있는 큰 관점의 접근법을 심층 모델을 향한 리팩토링 심층 모델은 핵심을 관통하는 구체적인 요소를 포함하면서 알기 쉽게 표현한 모델 심층 모델의 발견과정은 기반 지식을 쌓다 어느순간도약 시점을 거쳐 발견하게 된다.