도메인 주도 설계를 위한 함수형 프로그래밍 (코틀린과 타입스크립트로 구현하는 실전 도메인 모델링)

도메인 주도 설계를 위한 함수형 프로그래밍 (코틀린과 타입스크립트로 구현하는 실전 도메인 모델링)

$32.00
Description
타입스크립트와 코틀린으로 되살린 함수형 DDD 실전 가이드
함수형 프로그래밍과 도메인 주도 설계가 만났다. 이 번역서는 스콧 블라신이 쓴 명저의 철학을 온전히 지켜내면서도, 국내 개발자들이 더 쉽게 활용할 수 있도록 모든 예제를 타입스크립트와 코틀린으로 새롭게 재작성해 실용성을 극대화했다. 수학적 추상 대신 직관적인 코드와 친숙한 예시로 원리를 설명하며, 버그를 줄이고 도메인을 더 정확히 표현할 수 있는 길을 보여준다. 모든 개발자가 실무에서 바로 적용할 수 있는 실질적인 통찰을 전한다.
저자

스콧블라신

20년이상의경력을가진선임소프트웨어아키텍트이자개발자.함수형프로그래밍에대한비학문적접근분야에서유명하며,세계주요기술콘퍼런스에서인기있는연사다.최근에는기업및커뮤니티를대상으로컨설팅과교육활동에활발히참여하고있다.

목차

옮긴이머리말xii
추천사xv
베타리더후기xvi
한국어판서문xviii
서문xix

PARTI도메인이해하기
CHAPTER1DDD소개3
1.1공유모델의중요성4
1.2비즈니스이벤트로도메인이해하기7
__1.2.1이벤트스토밍으로도메인탐색하기8/1.2.2도메인탐색하기:주문접수시스템8/1.2.3끄트머리까지이벤트확장하기12/1.2.4명령문서화하기13
1.3도메인을하위도메인들로나누기15
1.4경계진맥락을활용한설루션만들기17
__1.4.1맥락바로잡기18/1.4.2맥락지도만들기19/1.4.3가장중요한맥락에집중하기21
1.5공용어만들기21
1.6DDD개념요약22
1.7마무리23
__1.7.1이벤트와프로세스23/1.7.2하위도메인과경계진맥락24/1.7.3공용어24/1.7.4다음장안내24

CHAPTER2도메인이해하기25
2.1도메인전문가인터뷰하기25
__2.1.1비기능적요구사항이해하기27/2.1.2작업흐름의나머지부분이해하기28/2.1.3입력생각해보기29
2.2데이터베이스중심디자인지양하기30
2.3클래스중심디자인지양하기31
2.4도메인문서화32
2.5주문접수작업흐름을깊이파고들기33
2.6복잡미묘한도메인모델링하기36
__2.6.1제약사항표현하기37/2.6.2주문의생애주기표현하기39/2.6.3작업흐름의단계구체화하기41
2.7마무리43
__2.7.1다음장안내44

CHAPTER3함수형아키텍처45
3.1경계진맥락을자율적인소프트웨어컴포넌트로46
3.2경계진맥락간의소통47
__3.2.1경계진맥락간데이터전송48/3.2.2신뢰경계와검증49
3.3경계진맥락간의계약50
__3.3.1부패방지계층51/3.3.2맥락간관계를나타내는맥락지도51
3.4경계진맥락의작업흐름52
__3.4.1작업흐름입력및출력53/3.4.2경계진맥락내도메인이벤트금지54
3.5경계진맥락의코드구조55
__3.5.1양파아키텍처56/3.5.2외부입출력을맥락경계로내몰기57
3.6마무리57
__3.6.1다음장안내58

PARTII도메인모델링하기
CHAPTER4타입이해하기61
4.1함수이해하기61
__4.1.1함수이해하기62
4.2타입과함수63
4.3타입합성66
__4.3.1AND타입67/4.3.2OR타입67/4.3.3단순타입69/4.3.4대수적타입시스템69
4.4TypeScript및Kotlin타입다루기70
4.5타입으로도메인모델만들기73
4.6없어도되는값,오류및컬렉션모델링77
__4.6.1없어도되는값모델링78/4.6.2오류모델링79/4.6.3값자체가없음모델링80/4.6.4리스트및컬렉션모델링81
4.7마무리83

CHAPTER5타입으로도메인모델링하기85
5.1도메인모델다시보기85
5.2도메인모델속패턴찾기87
5.3단순값모델링87
__5.3.1래퍼타입활용하기89/5.3.2제약있는값90/5.3.3단순타입의성능문제완화하기90
5.4복잡한데이터모델링92
__5.4.1레코드모델링92/5.4.2잘모르는타입모델링93/5.4.3선택타입모델링94
5.5함수로작업흐름모델링하기95
__5.5.1복잡한입력및출력처리96/5.5.2함수시그니처에서효과문서화하기99
5.6정체성에관하여:값객체100
__5.6.1값객체의같음102
5.7정체성에관하여:엔터티103
__5.7.1엔터티의ID103/5.7.2데이터정의에ID포함하기104/5.7.3엔터티의같음106/5.7.4불변성과정체성108
5.8집합체110
__5.8.1일관성과불변성을책임지는집합체112/5.8.2집합체참조112
5.9모두한데모으기115
__5.9.1다시생각해보는도전과제:정말타입으로문서를대체할수있을까?119
5.10마무리120

CHAPTER6도메인의무결성과일관성121
6.1단순값의무결성122
6.2측정단위126
6.3타입시스템으로불변성강제하기128
6.4타입시스템에비즈니스규칙녹이기128
__6.4.1잘못된상태가생길수없게예시도메인수정하기133
6.5일관성135
__6.5.1단일집합체내의일관성135/6.5.2다른맥락간의일관성137/6.5.3같은맥락의집합체들간일관성138/6.5.4동일한데이터를다루는여러집합체140
6.6마무리140

CHAPTER7파이프라인으로작업흐름모델링하기141
7.1작업흐름입력142
__7.1.1명령을입력으로사용하기143/7.1.2공통구조일반화하기144/7.1.3여러명령을단일타입으로묶기145
7.2상태집합으로주문모델링하기146
__7.2.1요구사항변경에따라새상태타입추가하기149
7.3상태기계149
__7.3.1왜상태기계를사용할까요?151/7.3.2TypeScript와Kotlin으로간단한상태기계를구현하는방법151
7.4타입으로작업흐름의개별단계모델링하기153
__7.4.1검증단계153/7.4.2가격책정단계156/7.4.3주문확인단계157/7.4.4반환할이벤트생성160
7.5효과문서화하기162
__7.5.1검증단계의효과162/7.5.2가격산정단계의효과164/7.5.3주문확인단계의효과165
7.6개별단계로부터작업흐름합성하기166
7.7의존을디자인에포함시켜야하나요?167
7.8완전한파이프라인169
__7.8.1내부단계171
7.9오래수행하는작업흐름175
7.10마무리176
__7.10.1다음장안내177

PARTIII모델구현하기
CHAPTER8함수이해하기181
8.1함수,함수어디에나함수182
8.2함수가주인공183
__8.2.1주인공인함수184/8.2.2입력으로서함수185/8.2.3출력으로서함수186/8.2.4커링187/8.2.5부분적용188
8.3완전함수189
8.4함수합성192
__8.4.1TypeScript와Kotlin의함수합성193/8.4.2전체애플리케이션을함수로구성하기195/8.4.3녹록지않은함수합성196
8.5마무리198

CHAPTER9구현:파이프라인조합하기199
9.1단순타입다루기200
9.2함수타입으로구현가이드하기202
9.3유효성검증단계구현204
__9.3.1유효한주소생성207/9.3.2주문항목생성209/9.3.3함수어댑터생성211
9.4나머지단계구현214
__9.4.1승인단계구현218/9.4.2이벤트생성220
9.5파이프라인단계들모두모으기224
9.6의존주입227
__9.6.1넘쳐나는의존235
9.7의존테스트237
9.8조립한파이프라인240
9.9마무리244

CHAPTER10구현:오류처리하기247
10.1Either타입으로오류드러내기247
10.2도메인오류다루기249
__10.2.1타입으로도메인오류모델링하기251/10.2.2코드를어지럽히는오류처리253
10.3Either타입을출력하는함수연결하기255
__10.3.1어댑터블록구현258/10.3.2Either함수들관리하기260/10.3.3함수합성과타입검사261/10.3.4공통오류타입으로변환262
10.4flatMap과map으로파이프라인조립하기266
10.5다른유형의함수들이중선로모델에적응시키기269
__10.5.1예외처리269/10.5.2막다른길함수처리273
10.6복잡한파이프라인다루기275
__10.6.1fp-ts의do표기법275/10.6.2arrow-kt의either블록277/10.6.3arrow-kt의Raise콘텍스트278/10.6.4Either타입으로주문검사하기282/10.6.5Either리스트의유효성검사283
10.7모나드와기타개념286
__10.7.1애플리케이티브로병렬합성하기287
10.8비동기효과추가하기287
10.9마무리291

CHAPTER11직렬화293
11.1영속화와직렬화293
11.2직렬화를위한디자인294
11.3작업흐름에직렬화코드연결하기295
__11.3.1경계진맥락간계약으로서DTO296
11.4완전한직렬화예제297
__11.4.1JSON직렬화라이브러리래핑하기301/11.4.2완전한직렬화파이프라인302/11.4.3직렬화타입의여러버전관리하기306
11.5도메인타입을DTO로변환하는방법306
__11.5.1단순타입306/11.5.2옵셔널값307/11.5.3레코드307/11.5.4컬렉션308/11.5.5열거형310/11.5.6튜플311/11.5.7선택타입312/11.5.8맵으로레코드및선택타입직렬화317/11.5.9제네릭320
11.6마무리321

CHAPTER12영속화323
12.1영속화코드를가장자리로밀어내기324
__12.1.1입력값을토대로한의사결정329/12.1.2리포지터리패턴은어디에있을까요?330
12.2갱신명령과조회질의분리하기331
__12.2.1명령-질의책임분리334/12.2.2CQRS와데이터베이스분리336/12.2.3이벤트소싱336
12.3경계진맥락마다독자데이터저장소소유하기337
__12.3.1여러도메인의데이터를사용하는방법337
12.4문서형데이터베이스로작업하기339
12.5관계형데이터베이스작업하기339
__12.5.1선택타입을테이블에매핑하기341/12.5.2중첩타입을테이블에매핑하기344/12.5.3관계형데이터베이스에서읽기345/12.5.4관계형데이터베이스에서선택타입읽기352/12.5.5관계형데이터베이스에쓰기355
12.6트랜잭션358
12.7마무리360

CHAPTER13깔끔하게디자인발전시키기361
13.1첫번째변경:배송비추가하기362
__13.1.1관심사분리로비즈니스로직단순하게만들기363/13.1.2작업흐름에새단계추가하기364/13.1.3파이프라인에새단계를추가한또다른이유368
13.2두번째변경:VIP고객지원추가하기368
__13.2.1작업흐름에새로운입력추가하기371/13.2.2작업흐름에무료배송규칙추가하기373
13.3세번째변경:프로모션코드지원추가374
__13.3.1도메인모델에프로모션코드추가하기374/

출판사 서평

예제코드까지갈아엎은진짜실전함수형DDD
이책은도메인모델링과함수형패러다임을자연스럽게연결해,복잡한현실문제를단순하고안전한코드로구현하는방법을안내한다.특히도메인지식을타입으로표현한다는철학을통해,오류를줄이고비즈니스규칙을더욱명확히드러내는소프트웨어설계방식을제시한다.

스콧블라신의명저《DomainModelingMadeFunctional》은F#기반의예제를사용해이철학을풀어냈지만,국내실무환경에서활용하기에는언어장벽이존재했다.이번에번역출간된이한국어판에서는이장벽을넘어모든예제를타입스크립트와코틀린으로새롭게재작성했다.단순한문법치환이아닌,각언어의타입시스템과이디엄(idiom)을활용해다시설계하고구현한결과물로,실무에서바로적용할수있는형태로재탄생했다는점이가장큰차별점이다.

덕분에독자는도메인주도설계의개념적이해에그치지않고,친숙한언어로작성된코드를따라가며자연스럽게모델링과정을체험할수있다.또각장마다이어지는“개념→코드→개선(리팩터링)”흐름을통해,단순한이론학습이아닌실무에적합한모델과설계를구축하는사고법을익힐수있다.

함수형프로그래밍을깊이알지못해도괜찮다.이책은복잡한추상대신직관적인예시로설명하며,개발자가도메인중심의사고방식으로전환할수있도록안내한다.DDD,FP,타입시스템이라는주제를실제코드수준까지밀어붙인보기드문실전가이드이며,기존객체지향DDD의한계를느껴본개발자에게도충분히신선한통찰을제공한다.

복잡한문제를단순하게바라보고,안전한코드를통해도메인을명확하게구현하고자하는개발자라면반드시만나야할책이다.

주요내용
● 도메인을제대로이해하는법
● 함수형사고로DDD다시보기
● 타입으로설계하는모델링기법
● 파이프라인으로표현하는비즈니스로직
● 컴파일타임에오류를차단하는설계
● 데이터베이스와의유연한연동
● 코드와문서가하나가되는도메인모델링