도메인 주도 설계로 시작하는 마이크로서비스 개발
도서명:도메인 주도 설계로 시작하는 마이크로서비스 개발
저자/출판사:한정헌,유해식,최은정,이주영/위키북스
쪽수:436쪽
출판일:2021-04-08
ISBN:9791158392468
목차
▣ 01장: 아마존 비즈니스 민첩성의 비밀
1.1 성공한 인터넷 기업들과 비즈니스 민첩성
___1.1.1 성공 사례: 아마존의 배포 속도
___1.1.2 클라우드 인프라의 등장
___1.1.3 클라우드 인프라에 어울리는 애플리케이션의 조건
______스케일 업과 스케일 아웃
______특정 서비스만 탄력성 있게 확장(스케일 아웃)
______클라우드 프렌들리와 클라우드 네이티브
1.2 마이크로서비스란 무엇인가?
___1.2.1 모노리스와 마이크로서비스 비교
___1.2.2 SOA와 마이크로서비스
1.3 마이크로서비스를 위한 조건은 무엇인가?
___1.3.1 조직의 변화: 업무 기능 중심 팀
___1.3.2 관리체계의 변화: 자율적인 분권 거버넌스, 폴리글랏
___1.3.3 개발 생명주기의 변화: 프로젝트가 아니라 제품 중심으로
___1.3.4 개발 환경의 변화: 인프라 자동화
___1.3.5 저장소의 변화: 통합 저장소가 아닌 분권 데이터 관리
___1.3.6 위기 대응 방식의 변화: 실패를 고려한 설계
1.4 정리
▣ 02장: MSA의 이해
2.1 리액티브 선언: 현대 애플리케이션이 갖춰야 할 바람직한 속성들
2.2 강 결합에서 느슨한 결합의 아키텍처로의 변화
2.3 마이크로서비스의 외부 아키텍처와 내부 아키텍처
2.4 MSA 구성요소 및 MSA 패턴
___2.4.1 인프라 구성요소
______퍼블릭 클라우드와 베어 메탈, 프라이빗 클라우드 환경
______VM과 컨테이너
______컨테이너 오케스트레이션
______그 밖의 다양한 클라우드 인프라 서비스
___2.4.2 마이크로서비스 운영과 관리를 위한 플랫폼 패턴
______개발 지원 환경: 데브옵스 인프라 구성
______빌드/배포 파이프라인 설계
______마이크로서비스 생태계와 운영 관리 요소의 탄생
______경험으로 획득한 지혜: 마이크로서비스 관리/운영 패턴
______스프링 클라우드: 스프링 부트 + 넷플릭스 OSS
______다양한 서비스의 등록 및 탐색을 위한 서비스 레지스트리, 서비스 디스커버리 패턴
______서비스 단일 진입을 위한 API 게이트웨이 패턴
______BFF 패턴
______외부 구성 저장소 패턴
______인증/인가 패턴
______장애 및 실패 처리를 위한 서킷 브레이커 패턴
______모니터링과 추적 패턴
______중앙화된 로그 집계 패턴
______MSA 기술 변화 흐름
______서비스 메시 패턴
___2.4.3 애플리케이션 패턴
______UI 컴포지트 패턴 또는 마이크로 프런트엔드
______마이크로서비스 통신 패턴
______저장소 분리 패턴
______분산 트랜잭션 처리 패턴
______읽기와 쓰기 분리: CQRS 패턴
______API 조합과 CQRS
______쓰기 최적화: 이벤트 소싱 패턴
2.5 정리
▣ 03장: 마이크로서비스 애플리케이션 아키텍처
3.1 비즈니스 로직은 어디에? - 관심사의 분리
___3.1.1 데이터베이스 중심 아키텍처의 문제점
3.2 헥사고날 아키텍처와 클린 아키텍처
___3.2.1 레이어드 아키텍처
___3.2.2 헥사고날 아키텍처
___3.2.3 클린 아키텍처
3.3 마이크로서비스의 내부 구조 정의
___3.3.1 바람직한 마이크로서비스의 내부 아키텍처: 클린 마이크로서비스
___3.3.2 내부 영역 - 업무 규칙
______트랜잭션 스크립트 패턴
______도메인 모델 패턴
______도메인 주도 설계의 애그리거트 패턴
___3.3.3 외부 영역 - 세부사항
______API 퍼블리싱 어댑터
______API 프락시 어댑터
______저장소 처리 어댑터
______도메인 이벤트 발행 어댑터
______도메인 이벤트 핸들러
3.4 정리
▣ 04장: 마이크로서비스와 애자일 개발 프로세스
4.1 도메인 주도 설계와 마이크로서비스
4.2 기민한 설계/개발 프로세스
___4.2.1 점진/반복적인 스크럼 생명주기
___4.2.2 아키텍처 정의와 마이크로서비스 도출
___4.2.3 스프린트 내 개발 공정
4.3 정리
▣ 05장: 마이크로서비스 설계
5.1 마이크로서비스를 도출하는 방법
___5.1.1 비즈니스 능력에 근거한 도출
___5.1.2 DDD의 바운디드 컨텍스트 기반 도출
5.2 DDD에서의 설계
5.3 DDD의 전략적 설계
___5.3.1 도메인과 서브도메인
___5.3.2 유비쿼터스 언어와 도메인 모델, 바운디드 컨텍스트
___5.3.3 컨텍스트 매핑
______주요 컨텍스트 매핑 관계
______컨텍스트 맵
5.4 이벤트 스토밍을 통한 마이크로서비스 도출
___5.4.1 이벤트 스토밍 워크숍 준비
___5.4.2 이벤트 스토밍 워크숍 진행
5.5 마이크로서비스 상세설계
___5.5.1 프런트엔드 모델링
___5.5.2 백엔드 모델링
______API 설계
5.6 도메인 모델링
___5.6.1 DDD의 전술적 설계(도메인 모델링 구성요소)
______엔티티
______값 객체
______표준 타입
______애그리거트
______도메인 서비스
______도메인 이벤트
5.7 정리
▣ 06장: 사례 연구 - 마이크로서비스 도출과 아키텍처 구성
6.1 요구사항 정의
6.2 이벤트 스토밍을 통한 마이크로서비스 도출
___6.2.1 이벤트 스트밍 워크숍
___6.2.2 바운디드 컨텍스트 식별
___6.2.3 컨텍스트 다이어그램
___6.2.4 이벤트 스토밍 결과를 헥사고날 아키텍처로 표현하기
6.3 외부 아키텍처 정의
6.4 내부 아키텍처 정의
___6.4.1 패키지 구조 및 명명 규칙
6.5 JHipster를 활용한 아키텍처 구성
___6.5.1 MSA 외부 아키텍처 구성(게이트웨이, 레지스트리 서비스)
___6.5.2 마이크로서비스 빠르게 만들어 보기
___6.5.3 백엔드 서비스의 프로젝트 구조 리팩터링
6.6 정리
▣ 07장: 사례연구- 백엔드 마이크로서비스 구현
7.1 도서 대출 마이크로서비스 개발
___7.1.1 구현 기능 소개
___7.1.2 내부 아키텍처 결정
___7.1.3 API 설계
___7.1.4 도메인 모델링
___7.1.5 유스케이스 흐름
___7.1.6 내부 영역 - 도메인 모델 개발(도서 대출, 반납)
___7.1.7 내부 영역 - 서비스 개발
___7.1.8 내부 영역 - 리포지토리 개발
___7.1.9 외부 영역 - REST 컨트롤러 개발
___7.1.10 외부 영역 - 아웃바운드 어댑터 개발(동기 호출)
______타 서비스에 대한 동기 호출: 페인 클라이언트 연결
______EnableFeignClients 처리
___7.1.11 외부 영역 - 아웃바운드 어댑터 개발(비동기 호출 EDA 구현)
______타 서비스에 대한 비동기 호출 처리: 카프카를 이용한 EDA 구현
______대출 서비스에 카프카 Producer 만들기
______도메인 이벤트 객체 - StockChanged.java
______도서 마이크로서비스에 컨슈머(Consumer) 어댑터 구현하기
___7.1.12 내부 영역 - 도메인 모델 개발: 도서 연체 및 연체된 도서 반납
______서비스 흐름 처리
___7.1.13 내부 영역 - 도메인 모델 개발: 대출 불가 해제 처리 기능 구현
___7.1.14 외부 영역 - REST 컨트롤러 개발
7.2 사용자 마이크로서비스 개발
___ 7.2.1 사용자 마이크로서비스의 기능 소개
___ 7.2.2 API 설계
___ 7.2.3 도메인 모델링
___ 7.2.4 유스케이스 흐름
___ 7.2.5 내부 영역 - 도메인 모델 개발
___ 7.2.6 내부 영역 - 서비스 개발
___ 7.2.7 내부 영역 - 리포지토리 개발
___ 7.2.8 외부 영역 - REST 컨트롤러 개발
___ 7.2.9 외부 영역 - 아웃바운드 어댑터 개발
7.3 사용자 마이크로서비스 - 포인트 관리 기능 구현
___ 7.3.1 기본 포인트 부여 기능 구현
___ 7.3.2 포인트 적립/결제 기능 구현
______User 엔티티의 포인트 적립 메서드 - User.java
______User 엔티티의 포인트 결제 메서드 - User.java
7.3.3 포인트 적립, 결제 기능에 대한 호출 구현
7.4 정리
▣ 08장: CQRS 패턴을 활용한 백엔드 마이크로서비스 개발
8.1 도서 마이크로서비스 개발
___ 8.1.1 구현 기능 소개
___ 8.1.2 내부 아키텍처 결정
___ 8.1.3 API 설계
___ 8.1.4 도메인 모델링
___ 8.1.5 입고 도서 등록과 재고 도서 등록에 대한 유스케이스 흐름
___ 8.1.6 내부 영역 - 도메인 모델 개발
___ 8.1.7 내부 영역 - 서비스 개발
___ 8.1.8 내부 영역 - 리포지토리 개발
___ 8.1.9 외부 영역 - REST 컨트롤러 개발
___ 8.1.10 외부 영역 - 아웃바운드 어댑터 개발
___ 8.1.11 외부 영역 - 인바운드 어댑터 개발
8.2 도서 카탈로그 마이크로서비스
___ 8.2.1 기능 소개
___ 8.2.2 내부 아키텍처 결정
___ 8.2.3 API 설계
___ 8.2.4 도메인 모델링
___ 8.2.5 내부 영역 - 도메인 모델 개발
___ 8.2.6 내부 영역 - 서비스 개발
___ 8.2.7 내부 영역 - 리포지토리 개발
___ 8.2.8 외부 영역 - REST 컨트롤러 개발
___ 8.2.9 외부 영역 - 인바운드 어댑터 개발
8.3 정리
▣ 09장: 사례 연구 - 시연 수행
9.1 서비스 동작 환경 실행
9.2 게이트웨이와 마이크로서비스 동작시키기
9.3 웹 화면에서 시나리오 테스트하기
9.4 정리
▣ 10장: 애플리케이션 통합과 배포
10.1 통합 및 배포 파이프라인 정의
___ 10.1.1 지속적 통합
___ 10.1.2 지속적 배포
10.2 GCP 배포 환경 구성
___ 10.2.1 GCP 환경설정
___ 10.2.2 GKE 생성
10.3 JHipster를 이용한 애플리케이션 배포
___ 10.3.1 지속적 통합
___ 10.3.2 지속적 배포
10.4 정리