장바구니 담기 close

장바구니에 상품을 담았습니다.

마이크로서비스 패턴

마이크로서비스 패턴

  • 크리스리처드슨
  • |
  • 길벗
  • |
  • 2020-02-03 출간
  • |
  • 628페이지
  • |
  • 183 X 235 mm
  • |
  • ISBN 9791165210441
판매가

38,000원

즉시할인가

34,200

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
34,200

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




44가지 패턴으로 배우는
아키텍처 문제 해법과 노하우!

제대로 알고 적용하자
마이크로서비스 아키텍처 기반의 애플리케이션을 성공적으로 구축하려면 새로운 아키텍처의 개념을 이해하는 것뿐만 아니라 사고방식의 전환이 필요하다. 단편적인 지식으로 모놀리스를 여러 서비스로 분해한다고 성능이 좋아지는 건 아니다. 이 책은 마이크로서비스란 무엇인지, 어떤 장단점이 있고, 언제, 어디에 사용해야 하는지 올바른 가이드를 제시한다.

경험을 바탕으로 한 44가지 패턴으로 배우자
마이크로서비스 선구자이자 자바 챔피언인 저자가 수집하고 분류한 44개 패턴으로 서비스 분해, 트랜잭션 관리, 쿼리, 서비스 간 통신 등 갖가지 난제를 해결하는 방법을 설명한다. 저자가 수십 년간 분산 시스템을 구축하면서 경험한 것들 외에도 실무에서 서비스를 작성하는 데 필요한 패턴과 시스템이 확장/실행되도록 패턴을 조합하는 내용까지 포함했다. 특히 단순히 패턴을 나열하는 데 그치지 않고 마이크로서비스 애플리케이션을 설계, 구현, 테스트, 배포하는 데 유용한 경험 중심의 조언이 가득하다.

자바 기반 예제로 테스트하자
마이크로서비스를 경험해볼 수 있는 스프링 기반의 "온라인 음식 배달 서비스" 예제를 제공한다. 이 서비스는 "소비자 생성, 음식점 생성, 주문 생성 및 조회, 주문 이력 조회"와 같은 여러 서비스를 포함하고 있으며, 코드를 직접 실행해보며 마이크로서비스 아키텍처를 이해할 수 있다.


목차


1장 모놀리식 지옥에서 벗어나라
1.1 서서히 모놀리식 지옥에 빠져들다
__1.1.1 FTGO 애플리케이션 아키텍처
__1.1.2 모놀리식 아키텍처의 장점
__1.1.3 모놀리식 지옥의 실상
1.2 이 책의 대상 독자
1.3 이 책의 학습 내용
1.4 마이크로서비스 아키텍처가 답이다
__1.4.1 확장 큐브와 마이크로서비스
__1.4.2 마이크로서비스는 모듈성을 갖고 있다
__1.4.3 서비스마다 DB가 따로 있다
__1.4.4 FTGO 마이크로서비스 아키텍처
__1.4.5 마이크로서비스 아키텍처와 SOA
1.5 마이크로서비스 아키텍처의 장단점
__1.5.1 마이크로서비스 아키텍처의 장점
__1.5.2 마이크로서비스 아키텍처의 단점
1.6 마이크로서비스 아키텍처 패턴 언어
__1.6.1 마이크로서비스 아키텍처도 만병통치약은 아니다
__1.6.2 패턴 및 패턴 언어
__1.6.3 마이크로서비스 아키텍처 패턴 언어 개요
1.7 마이크로서비스 너머: 프로세스와 조직
__1.7.1 소프트웨어 개발/전달 조직
__1.7.2 소프트웨어 개발/전달 프로세스
__1.7.3 마이크로서비스를 받아들이는 인간적 요소
1.8 마치며

2장 분해 전략
2.1 마이크로서비스 아키텍처란 무엇인가?
__2.1.1 소프트웨어 아키텍처의 정의와 중요성
__2.1.2 아키텍처 스타일 개요
__2.1.3 마이크로서비스 아키텍처는 일종의 아키텍처 스타일이다
2.2 마이크로서비스 아키텍처 정의
__2.2.1 시스템 작업 식별
__2.2.2 서비스 정의: 비즈니스 능력 패턴별 분해
__2.2.3 서비스 정의: 하위 도메인 패턴별 분해
__2.2.4 분해 지침
__2.2.5 서비스 분해의 장애물
__2.2.6 서비스 API 정의
2.3 마치며

3장 프로세스 간 통신
3.1 마이크로서비스 아키텍처 IPC 개요
__3.1.1 상호 작용 스타일
__3.1.2 마이크로서비스 API 정의
__3.1.3 API 발전시키기
__3.1.4 메시지 포맷
3.2 동기 RPI 패턴 응용 통신
__3.2.1 동기 RPI 패턴: REST
__3.2.2 동기 RPI 패턴: gRPC
__3.2.3 부분 실패 처리: 회로 차단기 패턴
__3.2.4 서비스 디스커버리
3.3 비동기 메시징 패턴 응용 통신
__3.3.1 메시징 개요
__3.3.2 메시징 상호 작용 스타일 구현
__3.3.3 메시징 기반 서비스의 API 명세 작성
__3.3.4 메시지 브로커
__3.3.5 수신자 경합과 메시지 순서 유지
__3.3.6 중복 메시지 처리
__3.3.7 트랜잭셔널 메시징
__3.3.8 메시징 라이브러리/프레임워크
3.4 비동기 메시징으로 가용성 개선
__3.4.1 동기 통신으로 인한 가용성 저하
__3.4.2 동기 상호 작용 제거
3.5 마치며

4장 트랜잭션 관리: 사가
4.1 마이크로서비스 아키텍처에서의 트랜잭션 관리
__4.1.1 분산 트랜잭션의 필요성
__4.1.2 분산 트랜잭션의 문제점
__4.1.3 데이터 일관성 유지: 사가 패턴
4.2 사가 편성
__4.2.1 코레오그래피 사가
__4.2.2 오케스트레이션 사가
4.3 비격리 문제 처리
__4.3.1 비정상 개요
__4.3.2 비격리 대책
4.4 주문 서비스 및 주문 생성 사가 설계
__4.4.1 OrderService 클래스
__4.4.2 주문 생성 사가 구현
__4.4.3 OrderCommandHandlers 클래스
__4.4.4 OrderServiceConfiguration 클래스
4.5 마치며

5장 비즈니스 로직 설계
5.1 비즈니스 로직 구성 패턴
__5.1.1 비즈니스 로직 설계: 트랜잭션 스크립트 패턴
__5.1.2 비즈니스 로직 설계: 도메인 모델 패턴
__5.1.3 도메인 주도 설계 개요
5.2 도메인 모델 설계: DDD 애그리거트 패턴
__5.2.1 불분명한 경계 문제
__5.2.2 애그리거트는 경계가 분명하다
__5.2.3 애그리거트 규칙
__5.2.4 애그리거트 입도
__5.2.5 비즈니스 로직 설계: 애그리거트
5.3 도메인 이벤트 발행
__5.3.1 변경 이벤트를 발행하는 이유
__5.3.2 도메인 이벤트란 무엇인가?
__5.3.3 이벤트 강화
__5.3.4 도메인 이벤트 식별
__5.3.5 도메인 이벤트 생성 및 발행
__5.3.6 도메인 이벤트 소비
5.4 주방 서비스 비즈니스 로직
__5.4.1 Ticket 애그리거트
5.5 주문 서비스 비즈니스 로직
__5.5.1 Order 애그리거트
__5.5.2 OrderService 클래스
5.6 마치며

6장 비즈니스 로직 개발: 이벤트 소싱
6.1 이벤트 소싱 응용 비즈니스 로직 개발
__6.1.1 기존 영속화의 문제점
__6.1.2 이벤트 소싱 개요
__6.1.3 동시 업데이트: 낙관적 잠금
__6.1.4 이벤트 소싱과 이벤트 발행
__6.1.5 스냅샷으로 성능 개선
__6.1.6 멱등한 메시지 처리
__6.1.7 도메인 이벤트 발전시키기
__6.1.8 이벤트 소싱의 장점
__6.1.9 이벤트 소싱의 단점
6.2 이벤트 저장소 구현
__6.2.1 이벤추에이트 로컬 이벤트 저장소의 작동 원리
__6.2.2 자바용 이벤추에이트 클라이언트 프레임워크
6.3 사가와 이벤트 소싱을 접목
__6.3.1 코레오그래피 사가 구현: 이벤트 소싱
__6.3.2 오케스트레이션 사가 생성
__6.3.3 이벤트 소싱 기반의 사가 참여자 구현
__6.3.4 사가 오케스트레이터 구현: 이벤트 소싱
6.4 마치며

7장 마이크로서비스 쿼리 구현
7.1 API 조합 패턴 응용 쿼리
__7.1.1 findOrder( ) 쿼리
__7.1.2 API 조합 패턴 개요
__7.1.3 API를 조합 패턴으로 findOrder( ) 쿼리 구현
__7.1.4 API 조합 설계 이슈
__7.1.5 API 조합 패턴의 장단점
7.2 CQRS 패턴
__7.2.1 CQRS의 필요성
__7.2.2 CQRS 개요
__7.2.3 CQRS의 장점
__7.2.4 CQRS의 단점
7.3 CQRS 뷰 설계
__7.3.1 뷰 DB 선택
__7.3.2 데이터 접근 모듈 설계
__7.3.3 CQRS 뷰 추가 및 업데이트
7.4 CQRS 뷰 구현: AWS DynamoDB 응용
__7.4.1 OrderHistoryEventHandlers 모듈
__7.4.2 DynamoDB 데이터 모델링 및 쿼리 설계
__7.4.3 OrderHistoryDaoDynamoDb 클래스
7.5 마치며

8장 외부 API 패턴
8.1 외부 API 설계 이슈
__8.1.1 API 설계 이슈: FTGO 모바일 클라이언트
__8.1.2 API 설계 이슈: 다른 종류의 클라이언트
8.2 API 게이트웨이 패턴
__8.2.1 API 게이트웨이 패턴 개요
__8.2.2 API 게이트웨이의 장단점
__8.2.3 API 게이트웨이 사례: 넷플릭스
__8.2.4 API 게이트웨이 설계 이슈
8.3 API 게이트웨이 구현
__8.3.1 기성 API 게이트웨이 제품/서비스 활용
__8.3.2 API 게이트웨이 자체 개발
__8.3.3 API 게이트웨이 구현: GraphQL
8.4 마치며

9장 마이크로서비스 테스트 1부
9.1 마이크로서비스 아키텍처 테스트 전략
__9.1.1 테스트 개요
__9.1.2 마이크로서비스 테스트
__9.1.3 배포 파이프라인
9.2 서비스 단위 테스트 작성
__9.2.1 단위 테스트 작성: 엔터티
__9.2.2 단위 테스트 작성: 밸류 객체
__9.2.3 단위 테스트 작성: 사가
__9.2.4 단위 테스트 작성: 도메인 서비스
__9.2.5 단위 테스트 작성: 컨트롤러
__9.2.6 단위 테스트 작성: 이벤트/메시지 핸들러
9.3 마치며

10장 마이크로서비스 테스트 2부
10.1 통합 테스트 작성
__10.1.1 통합 테스트: 영속화
__10.1.2 통합 테스트: REST 요청/응답형 상호 작용
__10.1.3 통합 테스트: 발행/구독 스타일 상호 작용
__10.1.4 통합 계약 테스트: 비동기 요청/응답 상호 작용
10.2 컴포넌트 테스트 개발
__10.2.1 인수 테스트 정의
__10.2.2 인수 테스트 작성: 거킨
__10.2.3 컴포넌트 테스트 설계
__10.2.4 컴포넌트 테스트 작성: 주문 서비스
10.3 종단 간 테스트 작성
__10.3.1 종단 간 테스트 설계
__10.3.2 종단 간 테스트 작성
__10.3.3 종단 간 테스트 실행
10.4 마치며

11장 프로덕션 레디 서비스 개발
11.1 보안 서비스 개발
__11.1.1 기존 모놀리식 애플리케이션의 보안
__11.1.2 마이크로서비스 아키텍처에서의 보안 구현
11.2 구성 가능한 서비스 설계
__11.2.1 푸시 기반의 외부화 구성
__11.2.2 풀 기반의 외부화 구성
11.3 관측 가능한 서비스 설계
__11.3.1 헬스 체크 API 패턴
__11.3.2 로그 수집 패턴
__11.3.3 분산 추적 패턴
__11.3.4 애플리케이션 지표 패턴
__11.3.5 예외 추적 패턴
__11.3.6 감사 로깅 패턴
11.4 서비스 개발: 마이크로서비스 섀시 패턴
__11.4.1 마이크로서비스 섀시
__11.4.2 이제는 서비스 메시로
11.5 마치며

12장 마이크로서비스 배포
12.1 서비스 배포: 언어에 특정한 패키징 포맷 패턴
__12.1.1 언어에 특정한 패키징 포맷 패턴의 장점
__12.1.2 언어에 특정한 패키징 포맷 패턴의 단점
12.2 서비스 배포: 가상 머신 패턴
__12.2.1 가상 머신 패턴의 장점
__12.2.2 가상 머신 패턴의 단점
12.3 서비스 배포: 컨테이너 패턴
__12.3.1 서비스를 도커로 배포
__12.3.2 컨테이너 패턴의 장점
__12.3.3 컨테이너 패턴의 단점
12.4 FTGO 애플리케이션 배포: 쿠버네티스
__12.4.1 쿠버네티스 개요
__12.4.2 쿠버네티스 배포: 음식점 서비스
__12.4.3 API 게이트웨이 배포
__12.4.4 무중단 배포
__12.4.5 배포와 릴리스 분리: 서비스 메시
12.5 서비스 배포: 서버리스 패턴
__12.5.1 AWS 람다를 이용한 서버리스 배포
__12.5.2 람다 함수 개발
__12.5.3 람다 함수 호출
__12.5.4 람다 함수의 장점
__12.5.5 람다 함수의 단점
12.6 REST 서비스 배포: AWS 람다 및 AWS 게이트웨이
__12.6.1 음식점 서비스를 AWS 람다 버전으로 설계
__12.6.2 ZIP 파일로 서비스 패키징
__12.6.3 서버리스 프레임워크로 람다 함수 배포
12.7 마치며

13장 마이크로서비스로 리팩터링
13.1 마이크로서비스 리팩터링 개요
__13.1.1 모놀리스를 왜 리팩터링하는가?
__13.1.2 모놀리스 옥죄기
13.2 모놀리스 → 마이크로서비스 리팩터링 전략
__13.2.1 새 기능을 서비스로 구현한다
__13.2.2 표현 계층과 백엔드를 분리한다
__13.2.3 기능을 여러 서비스로 추출한다
13.3 서비스와 모놀리스 간 협동 설계
__13.3.1 통합 글루 설계
__13.3.2 서비스와 모놀리스에 걸쳐 데이터 일관성 유지
__13.3.3 인증/인가 처리
13.4 새 기능을 서비스로 구현: 배달 실패한 주문 처리
__13.4.1 배달 지연 서비스 설계
__13.4.2 배달 지연 서비스를 위한 통합 글루 설계
13.5 모놀리스 분해: 배달 관리 추출
__13.5.1 현행 배달 관리 기능
__13.5.2 배달 서비스 개요
__13.5.3 배달 서비스의 도메인 모델 설계
__13.5.4 배달 서비스의 통합 글루 설계
__13.5.5 배달 서비스와 상호 작용할 수 있게 모놀리스를 변경
13.6 마치며

한국어판 부록 a 실습 환경 구성
A.1 실습 준비
__A.1.1 운영 체제: 윈도 10 Pro
__A.1.2 하이퍼-V 가상화 지원
__A.1.3 윈도 리눅스용 하위 시스템(WSL) 기능 활성화
A.2 WSL 설치
A.3 도커 설치 및 구성
A.4 소스 내려받아 빌드하기
A.5 컨테이너 실습
__A.5.1 도커 컴포즈 실행
__A.5.2 스웨거 접속
__A.5.3 도커 컴포즈 종료
A.6 더 보기

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.