소프트웨어 개발은 예전보다 어렵다. 개발자로서 지속적으로 변화하는 기술 트렌드를 따라잡아야 할 뿐 아니라 소프트웨어 이면의 비즈니스 도메인도 이해해야 한다. 이 실용서는 비즈니스 도메인을 분석하고 비즈니스 전략을 이해하는 것은 물론이고, 무엇보다 비즈니스 요건에 맞춰 소프트웨어 설계를 조정하기 위한 일련의 핵심 패턴, 원리, 실천법을 알아본다.
저자는 실무를 통해 견고한 비즈니스 로직이 어떻게 구현되는지, 그리고 어떻게 미래지향적인 소프트웨어 설계와 아키텍처가 되는지를 보여준다. 독자는 비즈니스 요구사항을 충족하는 아키텍처 의사결정을 내리기 위한 도메인 주도 설계(DDD: Domain-Driven Design)와 다른 방법론과의 관계를 검토하게 될 것이다. 또한 스타트업에서 DDD를 구현한 실제 실무 사례를 살펴볼 것이다.
Contents
[Part 1] 전략적 설계
▣ 01장: 비즈니스 도메인 분석하기
비즈니스 도메인이란?
하위 도메인이란?
__하위 도메인의 유형
__하위 도메인 비교
__하위 도메인 경계 식별
도메인 분석 예제
__Gigmaster
__BusVNext
도메인 전문가는 어떤 사람인가?
결론
연습문제
▣ 02장: 도메인 지식 찾아내기
비즈니스 문제
도메인 지식 찾아내기
커뮤니케이션
유비쿼터스 언어란 무엇인가?
비즈니스 언어
__시나리오
__일관성
비즈니스 도메인 모델
__모델이란 무엇인가?
__효과적인 모델링
__비즈니스 도메인 모델링
__지속적인 노력
__도구
__도전과제
결론
연습문제
▣ 03장: 도메인 복잡성 관리
일관성 없는 모델
바운디드 컨텍스트란 무엇인가?
__모델 경계
__정제된 유비쿼터스 언어
__바운디드 컨텍스트의 범위
바운디드 컨텍스트 대 하위 도메인
__하위 도메인
__바운디드 컨텍스트
__하위 도메인과 바운디드 컨텍스트 사이의 상호작용
경계
__물리적 경계
__소유권 경계
실생활의 바운디드 컨텍스트
__시맨틱 도메인
__과학
__냉장고 구입
결론
연습문제
▣ 04장: 바운디드 컨텍스트 연동
협력형 패턴 그룹
__파트너십 패턴
__공유 커널 패턴
사용자-제공자 패턴 그룹
__순응주의자 패턴
__충돌 방지 계층 패턴
__오픈 호스트 서비스 패턴
분리형 노선
__커뮤니케이션 이슈
__일반 하위 도메인
__모델의 차이
컨텍스트 맵
__유지보수
__한계
결론
연습문제
[Part 2] 전술적 설계
▣ 05장: 간단한 비즈니스 로직 구현
트랜잭션 스크립트
__구현
__그렇게 쉽진 않다!
__트랜잭션 스크립트를 사용하는 경우
액티브 레코드
__구현
__액티브 레코드를 사용하는 경우
실용적인 접근 방식
결론
연습문제
▣ 06장: 복잡한 비즈니스 로직 다루기
배경
도메인 모델
__구현
__구성요소
__복잡성 관리
결론
연습문제
▣ 07장: 시간 차원의 모델링
이벤트 소싱
__검색
__분석
__원천 데이터
__이벤트 스토어
이벤트 소싱 도메인 모델
__장점
__단점
자주 묻는 질문
__성능
__데이터 삭제
__이렇게 하면 안될까요…?
결론
연습문제
▣ 08장: 아키텍처 패턴
비즈니스 로직과 아키텍처 패턴
계층형 아키텍처
__프레젠테이션 계층
__비즈니스 로직 계층
__데이터 접근 계층
__계층 간 커뮤니케이션
__변종(variation)
__계층형 아키텍처를 사용하는 경우
포트와 어댑터
__용어
__의존성 역전 원칙
__인프라 구성요소의 연동
__변형
__포트와 어댑터를 사용하는 경우
CQRS
__폴리글랏 모델링
__읽기 모델의 프로젝션
__도전과제
__모델 분리
__CQRS를 사용해야 하는 경우
범위
결론
연습문제
▣ 09장: 커뮤니케이션 패턴
모델 변환
__스테이트리스 모델 변환
__스테이트풀 모델 변환
애그리게이트 연동
__아웃박스
__사가
__프로세스 관리자
결론
연습문제
[Part 3] 도메인 주도 설계 적용 실무
▣ 10장: 휴리스틱 설계
휴리스틱
바운디드 컨텍스트
비즈니스 로직 구현 패턴
아키텍처 패턴
테스트 전략
__피라미드형 테스트
__다이아몬드형 테스트
__역전된 피라미드형 테스트
전술적 설계 의사결정 트리
결론
연습문제
▣ 11장: 진화하는 설계 의사결정
도메인 변경
__핵심에서 일반으로
__일반에서 핵심으로
__지원에서 일반으로
__지원에서 핵심으로
__핵심에서 지원으로
__일반에서 지원으로
전략적 설계 문제
전술적 설계 문제
__트랜잭션 스크립트에서 액티브 레코드로
__액티브 레코드에서 도메인 모델로
__도메인 모델에서 이벤트 소싱 도메인 모델로
__전환에 필요한 과거 이력 생성
__마이그레이션 이벤트 모델링
조직 변화
__파트너십에서 사용자-제공자로
__사용자-제공자에서 분리형 노선으로
도메인 지식
성장
__하위 도메인
__바운디드 컨텍스트
__애그리게이트
결론
연습문제
▣ 12장: 이벤트스토밍
이벤트스토밍이란?
누가 이벤트스토밍에 참석하나?
이벤트스토밍에 무엇이 필요한가?
이벤트스토밍 과정
__1단계: 자유로운 탐색
__2단계: 타임라인
__3단계: 고충점
__4단계: 중요 이벤트
__5단계: 커맨드
__6단계: 정책
__7단계: 읽기 모델
__8단계: 외부 시스템
__9단계: 애그리게이트
__10단계: 바운디드 컨텍스트
변형
이벤트스토밍을 사용하는 경우
진행 팁
__활력도 살피기
__원격 이벤트스토밍
결론
연습문제
▣ 13장: 실무에서의 도메인 주도 설계
전략적 분석
__비즈니스 도메인 이해하기
__현재 설계 탐색
현대화 전략
__전략적 현대화
__전술적 현대화
__유비쿼터스 언어 육성
실용적인 도메인 주도 설계
도메인 주도 설계 확산
__실무에 활용하는 도메인 주도 설계
결론
연습문제
[Part 4] 다른 방법론 및 패턴과의 관계
▣ 14장: 마이크로서비스
서비스란 무엇인가?
마이크로서비스란 무엇인가?
__서비스형 메서드: 완벽한 마이크로서비스?
__설계 목표
__시스템의 복잡성
__깊은 서비스로서의 마이크로서비스
__깊은 모듈로서의 마이크로서비스
도메인 주도 설계와 마이크로서비스의 경계
__바운디드 컨텍스트
__애그리게이트
__하위 도메인
마이크로서비스의 퍼블릭 인터페이스 압축하기
__오픈 호스트 서비스
__충돌 방지 계층
결론
연습문제
▣ 15장: 이벤트 주도 아키텍처
이벤트 주도 아키텍처
이벤트
__이벤트, 커맨드, 메시지
__구조
__이벤트 유형
이벤트 주도 연동 설계
__분산된 커다란 진흙 덩어리
__시간 결합
__기능 결합
__구현 결합
__이벤트 주도 연동의 리팩터링
__이벤트 주도 설계 휴리스틱
결론
연습문제
▣ 16장: 데이터 메시
분석 데이터 모델과 트랜잭션 데이터 모델의 비교
__팩트 테이블
__디멘전 테이블
__분석 모델
분석 데이터 관리 플랫폼
__데이터 웨어하우스
__데이터 레이크
__데이터 웨어하우스와 데이터 레이크 아키텍처의 도전과제
데이터 메시
__도메인 기준의 데이터 분리
__제품 관점에서 데이터 다루기
__자율성 활성화
__에코시스템 구축
데이터 메시와 도메인 주도 설계를 엮기
결론
연습문제
▣ 맺음말
문제
솔루션
구현
추가 자료
__고급 도메인 주도 설계
__아키텍처 및 통합 패턴
__레거시 시스템 현대화
__이벤트스토밍
결론
▣ 부록A: DDD 적용: 사례 연구
다섯 가지 바운디드 컨텍스트
__비즈니스 도메인
__바운디드 컨텍스트 #1: 마케팅
__바운디드 컨텍스트 #2: CRM
__바운디드 컨텍스트 #3: 이벤트 크런처
__바운디드 컨텍스트 #4: 보너스
__바운디드 컨텍스트 #5: 마케팅 허브
논의
__유비쿼터스 언어
__하위 도메인
__바운디드 컨텍스트의 경계
결론
▣ 부록B: 연습문제 정답
Author
블라드 코노노프,김민석,오창윤
블라드 코노노프는 여러 규모의 회사에서 웹 마스터부터 최고 아키텍트까지 다양한 역할을 수행한 20년 이상의 경력을 가진 소프트웨어 엔지니어다. 블라드는 주요 미디어에서 연설자, 블로거, 그리고 저자로 활동하고 있다. 세계를 무대로 도메인 주도 설계, 마이크로서비스, 소프트웨어 아키텍처 전반에 대해 컨설팅과 강연을 한다. 블라드는 기업이 그 비즈니스 도메인을 이해하고 복잡한 아키텍처 문제를 다룰 수 있게 도움을 주고 있다. 그는 이스라엘 북부에서 아내와 고양이들과 함께 살고 있다.
블라드 코노노프는 여러 규모의 회사에서 웹 마스터부터 최고 아키텍트까지 다양한 역할을 수행한 20년 이상의 경력을 가진 소프트웨어 엔지니어다. 블라드는 주요 미디어에서 연설자, 블로거, 그리고 저자로 활동하고 있다. 세계를 무대로 도메인 주도 설계, 마이크로서비스, 소프트웨어 아키텍처 전반에 대해 컨설팅과 강연을 한다. 블라드는 기업이 그 비즈니스 도메인을 이해하고 복잡한 아키텍처 문제를 다룰 수 있게 도움을 주고 있다. 그는 이스라엘 북부에서 아내와 고양이들과 함께 살고 있다.