책소개
이론은 탄탄하게, 실습은 실무에 가깝게!
스프링 부트 2와 스프링 클라우드 2로 구현하며 배우는 컨테이너 기반의 마이크로서비스
마이크로서비스에서는 배포가 중요한 이슈다. 스프링 클라우드를 사용하면 마이크로서비스의 빌드와 배포를 최소화할 수 있고, 이런 의미에서 스프링 부트와 스프링 클라우드의 조합은 매력적이다. 20년간 자바를 사용해온 클라우드 엔지니어인 저자가 현업에서 활용 가능한 컨테이너 기반의 마이크로서비스 코드를 수록했으며, 최신 스프링 부트와 스프링 클라우드 2 버전에 호환되는 실용적인 예제를 직접 실행하며 마이크로서비스의 개념을 확실히 이해할 수 있다. 특히 예제가 도커 기반으로 구성되어 있어 여러 서비스를 실행하고 테스트하기 쉽다. 또한, 개발 패턴, 라우팅 패턴, 클라이언트 회복성 패턴, 구축/배치 패턴 등 마이크로서비스의 여섯 가지 핵심 패턴도 함께 설명한다. 스프링을 사용하면서 클라우드에서 애플리케이션을 개발하고자 하는 분들에게 추천한다.
저자소개
저자 : 존 카넬
저자 : 존 카넬
제네시스(Genesys)의 수석 클라우드 엔지니어로 PureCloud 부서에서 근무 중이다. AWS 플랫폼에서 전화 통신 기반 마이크로서비스를 구축하면서 시간을 보낸다. 자바, Clojure, Go를 포함한 여러 기술 플랫폼에서 마이크로서비스를 설계하고 구축하는 일이 주 업무다. 또한, 왕성하게 활동하는 연사이자 작가이기도 하다. 지역 사용자 그룹과 ‘No Fluff Just Stuff 소프트웨어 심포지엄’에서 정기적으로 연설하며, 20년 동안 많은 자반 기술 도서와 출판물을 저술(공동 저술 포함)하고 기술 검토해왔다. 마르케트 대학에서 학사(BA)를, 위스콘신 대학(오시코시)에서 경영학 석사(MBA)를 받았다. 열정적인 기술 전문가이며, 항상 새로운 기술과 프로그래밍 언어를 탐구한다. 연설이나 집필, 코딩을 하지 않을 때는 노스캐롤라이나에서 가족과 함께 지낸다.
역자 : 정성권
마이크로서비스 아키텍처에 기반한 대규모 IoT 클라우드(Smart Things)와 어카운트 시스템의 개발을 담당하고 있다. 분산 시스템 설계와 개발, SRE, DevOps 활동에 주목해왔으며, 클라우드 네이티브와 컨테이너 기반의 서비스 구축 기술에 관심이 많다. [마이크로서비스 아키텍처 구축](한빛미디어, 2017)을 번역했고, [ABOUT .NET XML 웹 서비스](영진닷컴, 2002), [PHP 웹 서버 구축하기](사이버출판사, 2000)를 공동 집필했다.
목차
1장 스프링, 클라우드와 만나다
1.1 마이크로서비스란?
1.2 스프링은 무엇이고 마이크로서비스와 어떤 관련이 있을까?
1.3 책에서 다루는 내용
1.4 대상 독자
1.5 스프링 부트로 마이크로서비스 구축
1.6 애플리케이션 구축 방식을 바꾸는 이유
1.7 클라우드란 정확히 무엇인가?
1.8 왜 클라우드와 마이크로서비스인가?
1.9 마이크로서비스는 코드 작성 이상을 의미
1.10 스프링 클라우드로 마이크로서비스 구축
1.11 예제로 배우는 스프링 클라우드
1.12 예제와 관련성 확인
1.13 요약
2장 스프링 부트로 마이크로서비스 구축
2.1 아키텍트의 이야기: 마이크로서비스 아키텍처 설계
2.2 마이크로서비스를 사용하지 않아야 할 때
2.3 개발자 이야기: 스프링 부트와 자바로 마이크로서비스 생성
2.4 데브옵스 이야기: 혹독한 런타임 구축
2.5 모든 관점에서
2.6 요약
3장 스프링 클라우드 컨피그 서버로 구성 관리
3.1 구성(그리고 복잡성) 관리
3.2 스프링 클라우드 컨피그 서버 구축
3.3 스프링 클라우드 컨피그와 스프링 부트 클라이언트의 통합
3.4 중요한 구성 정보 보호
3.5 마치며
3.6 요약
4장 서비스 디스커버리
4.1 서비스 위치 찾기
4.2 클라우드에서 서비스 디스커버리
4.3 스프링 유레카 서비스 구축
4.4 스프링 유레카에 서비스 등록
4.5 서비스 디스커버리를 사용해 서비스 검색
4.6 요약
5장 나쁜 상황에 대비한 스프링 클라우드와 넷플릭스 히스트릭스의 클라이언트 회복성 패턴
5.1 클라이언트 회복성 패턴이란?
5.2 클라이언트 회복성이 중요한 이유
5.3 히스트릭스 시작
5.4 스프링 클라우드와 히스트릭스를 위한 라이선싱 서버 설정
5.5 히스트릭스를 사용한 회로 차단기 구현
5.6 폴백 프로세싱
5.7 벌크헤드 패턴 구현
5.8 히스트릭스 세부 설정
5.9 스레드 컨텍스트와 히스트릭스
5.10 요약
6장 스프링 클라우드와 주울로 서비스 라우팅
6.1 서비스 게이트웨이란?
6.2 스프링 클라우드와 넷플릭스 주울 소개
6.3 주울에서 경로 구성
6.4 주울의 진정한 힘! 필터
6.5 상관관계 ID를 생성하는 주울의 사전 필터 작성
6.6 상관관계 ID를 전달받는 사후 필터 작성
6.7 동적 경로 필터 작성
6.8 요약
7장 마이크로서비스의 보안
7.1 OAuth2 소개
7.2 작게 시작: 스프링과 OAuth2로 1개의 엔드포인트 보호
7.3 OAuth2를 사용한 조직 서비스 보호
7.4 자바스크립트 웹 토큰과 OAuth2
7.5 마이크로서비스 보안을 마치며
7.6 요약
8장 스프링 클라우드 스트림을 사용한 이벤트 기반 아키텍처
8.1 메시지와 EDA, 마이크로서비스의 사례
8.2 스프링 클라우드 스트림 소개
8.3 간단한 메시지 생산자와 소비자 작성
8.4 스프링 클라우드 스트림 사용 사례: 분산 캐싱
8.5 요약
9장 스프링 클라우드 슬루스와 집킨을 이용한 분산 추적
9.1 스프링 클라우드 슬루스와 상관관계 ID
9.2 로그 수집과 스프링 클라우드 슬루스
9.3 오픈집킨으로 분산 추적
9.4 요약
10장 마이크로서비스의 배포
10.1 EagleEye: 클라우드의 핵심 인프라스트럭처 설정
10.2 인프라스트럭처를 넘어: EagleEye 배포
10.3 빌드 및 배포 파이프라인 아키텍처
10.4 실제 빌드 및 배포 파이프라인
10.5 깃허브와 Travis CI로 빌드 및 배포 시작
10.6 Travis CI에서 서비스 빌드
10.7 빌드 및 배포 파이프라인을 마치며
10.8 요약
부록 A 데스크톱에서 클라우드 실행
A.1 필수 소프트웨어
A.2 깃허브에서 프로젝트 내려받기
A.3 장별 구조
A.4 프로젝트 빌드 및 컴파일
A.5 도커 이미지 빌드
A.6 도커 컴포즈로 서비스 시작
부록 B OAuth2 그랜트 타입
B.1 패스워드 그랜트
B.2 클라이언트 자격 증명 그랜트
B.3 인가 코드 그랜트
B.4 암시적 그랜트
B.5 토큰을 리프레시하는 방법