길벗·이지톡

도서 IT전문서/IT입문서
스프링 부트와 스프링 클라우드를 이용한 마이크로서비스 모범 사례 스프링 마이크로서비스 코딩 공작소 개정 2판
정 가
38,000원
I S B N
9791140700448
출 간
2022-06-30
분 량
524쪽
지 은 이
존 카넬,일러리 후알리루포 산체스
난 이 도
초급,중급
옮 긴 이
정성권
부 록
예제 소스 코드

스프링 부트와 스프링 클라우드를 이용한 마이크로서비스 모범 사례

이론은 탄탄하게, 실습은 실무에 가깝게!

스프링 부트와 스프링 클라우드를 이용한 모범 사례를 직접 실행하며

마이크로서비스의 개념을 확실하게 익히자!

 

마이크로서비스는 서비스 개발, 그 이상(클라우드, 인프라, 자동화, 테스팅, 회복성, 보안, 인증, 로깅, 모니터링, 배포 등)을 필요로 한다. 클라우드를 사용하면 안정성, 생산성, 확장성, 유지 보수 등 여러 가지 면에서 유용하다. 책에서는 이러한 장점이 있는 스프링 클라우드를 사용해 마이크로서비스의 빌드와 배포를 최소화하도록 했다. 스프링 부트와 스프링 클라우드, 도커, 하시코프 볼트, 아파치 카프카, 키클록, 오픈 집킨, ELK 스택, 그라파나, 프로메테우스, AWS EKS, 깃허브/젠킨스를 사용해 쿠버네티스 기반의 마이크로서비스를 구축해보면서 개념과 실무를 동시에 배울 수 있다. 또한, 핵심 마이크로서비스 개발 패턴, 라우팅 패턴, 클라이언트 회복성 패턴, 구축/배치 패턴 등 주요 패턴도 함께 살펴본다. 이 책을 통해 어떻게 서비스를 만들고 개선해 나갈 수 있는지에 대한 다양한 고민들에 대한 해법을 찾을 수 있을 것이다.

 

목차

1장 스프링, 클라우드와 만나다

1.1 마이크로서비스 아키텍처로 진화

__1.1.1 N-계층 아키텍처

__1.1.2 모놀리스 아키텍처

__1.1.3 마이크로서비스란?

__1.1.4 애플리케이션 구축 방법을 왜 바꾸어야 할까?

1.2 스프링 마이크로서비스

1.3 우리가 구축할 것은 무엇인가?

1.4 이 책의 내용

__1.4.1 이 책에서 배울 내용

__1.4.2 이 책의 연관성

1.5 클라우드 및 마이크로서비스 기반 애플리케이션

__1.5.1 스프링 부트로 마이크로서비스 구축하기

__1.5.2 클라우드 컴퓨팅이란 정확히 무엇인가?

__1.5.3 왜 클라우드와 마이크로서비스인가?

1.6 마이크로서비스는 코드 작성 이상을 의미한다

1.7 핵심 마이크로서비스 개발 패턴

1.8 마이크로서비스 라우팅 패턴

1.9 마이크로서비스 클라이언트 회복성

1.10 마이크로서비스 보안 패턴

1.11 마이크로서비스 로깅과 추적 패턴

1.12 애플리케이션 지표 패턴

1.13 마이크로서비스 빌드/배포 패턴

1.14 요약

 

2장 스프링 클라우드와 함께 마이크로서비스 세계 탐험

2.1 스프링 클라우드란?

__2.1.1 스프링 클라우드 컨피그

__2.1.2 스프링 클라우드 서비스 디스커버리

__2.1.3 스프링 클라우드 로드 밸런서와 Resilience4j

__2.1.4 스프링 클라우드 API 게이트웨이

__2.1.5 스프링 클라우드 스트림

__2.1.6 스프링 클라우드 슬루스

__2.1.7 스프링 클라우드 시큐리티

2.2 스프링 클라우드 예제 소개

2.3 클라우드 네이티브 마이크로서비스 구축 방법

__2.3.1 코드베이스

__2.3.2 의존성

__2.3.3 구성 정보

__2.3.4 백엔드 서비스

__2.3.5 빌드, 릴리스, 실행

__2.3.6 프로세스

__2.3.7 포트 바인딩

__2.3.8 동시성

__2.3.9 폐기 가능

__2.3.10 개발 및 운영 환경 일치

__2.3.11 로그

__2.3.12 관리 프로세스

2.4 적절한 예제 도입

2.5 스프링 부트와 자바로 마이크로서비스 만들기

__2.5.1 환경 설정

__2.5.2 뼈대 프로젝트 시작하기

__2.5.3 스프링 부트 애플리케이션 부팅하기: 부트스트랩 클래스 작성

2.6 요약

 

3장 스프링 부트로 마이크로서비스 구축하기

3.1 아키텍트 이야기: 마이크로서비스 아키텍처 설계

__3.1.1 비즈니스 문제 분해

__3.1.2 서비스 세분화 확정

__3.1.3 서비스 인터페이스 설계

3.2 마이크로서비스를 사용하지 말아야 할 때

__3.2.1 분산 시스템 구축의 복잡성

__3.2.2 서버 또는 컨테이너 스프롤

__3.2.3 애플리케이션 타입

__3.2.4 데이터 트랜잭션과 일관성

3.3 개발자 이야기: 스프링 부트와 자바

__3.3.1 마이크로서비스의 출입구 만들기: 스프링 부트 컨트롤러

__3.3.2 라이선싱 서비스에 국제화 추가하기

__3.3.3 관련 링크를 표시하는 스프링 HATEOAS 구현

3.4 데브옵스 이야기: 혹독한 런타임 구축

__3.4.1 서비스 조립: 마이크로서비스의 패키징과 배포

__3.4.2 서비스 부트스트래핑: 마이크로서비스의 구성 관리

__3.4.3 서비스 등록과 디스커버리: 클라이언트가 마이크로서비스와 통신하는 방법

__3.4.4 마이크로서비스의 상태 전달

3.5 모든 관점 통합하기

3.6 요약

 

4장 도커

4.1 컨테이너 또는 가상 머신?

4.2 도커란?

4.3 Dockerfiles

4.4 도커 컴포즈

4.5 마이크로서비스와 도커 통합하기

__4.5.1 도커 이미지 만들기

__4.5.2 스프링 부트로 도커 이미지 생성하기

__4.5.3 도커 컴포즈로 서비스 실행하기

4.6 요약

 

5장 스프링 클라우드 컨피그 서버로 구성 관리

5.1 구성(그리고 복잡성) 관리

__5.1.1 구성 관리 아키텍처

__5.1.2 구현 솔루션 선택

5.2 스프링 클라우드 컨피그 서버 구축

__5.2.1 스프링 클라우드 컨피그 부트스트랩 클래스 설정

__5.2.2 스프링 클라우드 컨피그 서버에 파일 시스템 사용

__5.2.3 서비스의 구성 파일 설정

5.3 스프링 클라우드 컨피그와 스프링 부트 클라이언트 통합

__5.3.1 라이선싱 서비스의 스프링 클라우드 컨피그 서비스 의존성 설정

__5.3.2 스프링 클라우드 컨피그 사용을 위한 라이선싱 서비스 구성

__5.3.3 스프링 클라우드 컨피그 서버를 사용하여 데이터 소스 연결

__5.3.4 @ConfigurationProperties를 사용하여 프로퍼티 직접 읽기

__5.3.5 스프링 클라우드 컨피그 서버를 사용하여 프로퍼티 갱신

__5.3.6 깃과 함께 스프링 클라우드 컨피그 서버 사용

__5.3.7 볼트와 스프링 클라우드 컨피그 서비스 통합

__5.3.8 볼트 UI

5.4 중요한 구성 정보 보호

__5.4.1 대칭 암호화 키 설정

__5.4.2 프로퍼티 암호화와 복호화

5.5 마치며

5.6 요약

 

6장 서비스 디스커버리

6.1 서비스 위치 확인

6.2 클라우드에서 서비스 디스커버리

__6.2.1 서비스 디스커버리 아키텍처

__6.2.2 스프링과 넷플릭스 유레카를 사용한 서비스 디스커버리

6.3 스프링 유레카 서비스 구축

6.4 스프링 유레카에 서비스 등록

__6.4.1 유레카 REST API

__6.4.2 유레카 대시보드

6.5 서비스 디스커버리를 이용한 서비스 검색

__6.5.1 스프링 Discovery Client로 서비스 인스턴스 검색

__6.5.2 로드 밸런서를 지원하는 스프링 REST 템플릿으로 서비스 호출

__6.5.3 넷플릭스 Feign 클라이언트로 서비스 호출

6.6 요약

 

7장 나쁜 상황에 대비한 스프링 클라우드와 Resilience4j를 사용한 회복성 패턴

7.1 클라이언트 측 회복성이란?

__7.1.1 클라이언트 측 로드 밸런싱

__7.1.2 회로 차단기

__7.1.3 폴백 처리

__7.1.4 벌크헤드

7.2 클라이언트 회복성이 중요한 이유

7.3 Resilience4j 구현

7.4 스프링 클라우드와 Resilience4j를 사용하는 라이선싱 서비스 설정

7.5 회로 차단기 구현

__7.5.1 조직 서비스에 회로 차단기 추가

__7.5.2 회로 차단기 사용자 정의

7.6 폴백 처리

7.7 벌크헤드 패턴 구현

7.8 재시도 패턴 구현

7.9 속도 제한기 패턴 구현

7.10 ThreadLocal과 Resilience4j

7.11 요약

 

8장 스프링 클라우드 게이트웨이를 이용한 서비스 라우팅

8.1 서비스 게이트웨이란?

8.2 스프링 클라우드 게이트웨이 소개

__8.2.1 스프링 부트 게이트웨이 프로젝트 설정

__8.2.2 유레카와 통신하는 스프링 클라우드 게이트웨이 구성

8.3 스프링 클라우드 게이트웨이에서 라우팅 구성

__8.3.1 서비스 디스커버리를 이용한 자동 경로 매핑

__8.3.2 서비스 디스커버리를 이용한 수동 경로 매핑

__8.3.3 동적으로 라우팅 구성을 재로딩

8.4 스프링 클라우드 게이트웨이의 진정한 능력: Predicate과 Filter Factories

__8.4.1 게이트웨이 Predicate Factories

__8.4.2 게이트웨이 Filter Factories

__8.4.3 사용자 정의 필터

8.5 사전 필터 만들기

8.6 서비스에서 상관관계 ID 사용

__8.6.1 유입되는 HTTP 요청을 가로채는 UserContextFilter

__8.6.2 서비스에 쉽게 액세스할 수 있는 HTTP 헤더를 만드는 UserContext

__8.6.3 상관관계 ID 전파를 위한 사용자 정의 RestTemplate과 UserContextInterceptor

8.7 상관관계 ID를 수신하는 사후 필터 작성

8.8 요약

 

9장 마이크로서비스 보안

9.1 OAuth2 소개

9.2 키클록 소개

9.3 작게 시작하기: 스프링과 키클록으로 한 개의 엔드포인트 보호

__9.3.1 도커에 키클록 추가하기

__9.3.2 키클록 설정

__9.3.3 클라이언트 애플리케이션 등록

__9.3.4 O-stock 사용자 구성

__9.3.5 O-stock 사용자 인증

9.4 키클록으로 조직 서비스 보호하기

__9.4.1 스프링 시큐리티와 키클록 JARs를 서비스에 추가

__9.4.2 키클록 서버 접속을 위한 서비스 구성

__9.4.3 서비스에 접근할 수 있는 사용자 및 대상 정의

__9.4.4 액세스 토큰 전파

__9.4.5 JWT의 사용자 정의 필드 파싱

9.5 마이크로서비스 보안을 마치며

__9.5.1 모든 서비스 통신에 HTTPS/SSL을 사용하라

__9.5.2 서비스 게이트웨이를 사용하여 마이크로서비스에 접근하라

__9.5.3 공개 API 및 비공개 API 영역을 지정하라

__9.5.4 불필요한 네트워크 포트를 차단해서 마이크로서비스 공격 지점을 제한하라

9.6 요약

 

10장 스프링 클라우드 스트림을 사용한 이벤트 기반 아키텍처

10.1 메시징과 EDA, 마이크로서비스의 사례

__10.1.1 동기식 요청- 응답 방식으로 상태 변화 전달

__10.1.2 메시징을 사용한 서비스 간 상태 변화 전달

__10.1.3 메시징 아키텍처의 단점

10.2 스프링 클라우드 스트림 소개

10.3 간단한 메시지 생산자와 소비자 작성

__10.3.1 아파치 카프카 및 레디스 도커 구성

__10.3.2 조직 서비스에서 메시지 생산자 작성

__10.3.3 라이선싱 서비스에서 메시지 소비자 작성

__10.3.4 메시지 서비스 동작 보기

10.4 스프링 클라우드 스트림 사용 사례: 분산 캐싱

__10.4.1 캐시 검색을 위한 레디스

__10.4.2 사용자 정의 채널 설정

10.5 요약

 

11장 스프링 클라우드 슬루스와 집킨을 이용한 분산 추적

11.1 스프링 클라우드 슬루스와 상관관계 ID

__11.1.1 라이선싱 및 조직 서비스에 스프링 클라우드 슬루스 추가

__11.1.2 스프링 클라우드 슬루스의 추적 분석

11.2 로그 수집과 스프링 클라우드 슬루스

__11.2.1 동작하는 스프링 클라우드 슬루스/ELK 스택 구현

__11.2.2 서비스에서 로그백 구성

__11.2.3 도커에서 ELK 스택 애플리케이션 정의 및 실행

__11.2.4 키바나 구성

__11.2.5 키바나에서 스프링 클라우드 슬루스의 추적 ID 검색

11.3 집킨을 사용한 분산 추적

__11.3.1 스프링 클라우드 슬루스와 집킨 의존성 설정

__11.3.2 집킨 연결을 위한 서비스 구성 설정

__11.3.3 집킨 서버 구성

__11.3.4 추적 레벨 설정

__11.3.5 집킨으로 트랜잭션 추적

__11.3.6 더 복잡한 트랜잭션의 시각화

__11.3.7 메시징 추적 수집

__11.3.8 사용자 정의 스팬

11.4 요약

 

12장 마이크로서비스 배포

12.1 빌드/배포 파이프라인 아키텍처

12.2 클라우드에 O-stock 핵심 인프라스트럭처 설정

__12.2.1 아마존 RDS를 사용한 PostgreSQL 데이터베이스 생성

__12.2.2 아마존에 레디스 클러스터 구축

12.3 인프라스트럭처를 넘어: O-stock과 ELK 배포

__12.3.1 ELK EC2 생성

__12.3.2 EC2 인스턴스에 ELK 스택 배포

__12.3.3 EKS 클러스터 생성

12.4 빌드/배포 파이프라인 인 액션

12.5 빌드/배포 파이프라인 생성

__12.5.1 깃허브 설정

__12.5.2 젠킨스에서 서비스 빌드 활성화

__12.5.3 파이프라인 스크립트 이해 및 작성

__12.5.4 쿠버네티스 파이프라인 스크립트 작성

12.6 빌드/배포 파이프라인 고찰

12.7 요약

 

부록 A 마이크로서비스 아키텍처 모범 사례

A.1 리처드슨 성숙도 모델

A.2 스프링 HATEOAS

A.3 구성 외부화

A.4 지속적 통합(CI)과 지속적 전달(CD)

A.5 모니터링

A.6 로깅

A.7 API 게이트웨이

 

부록 B OAuth2 그랜트 타입

B.1 패스워드 그랜트 타입

B.2 클라이언트 자격 증명 그랜트 타입

B.3 인가 코드 그랜트 타입

B.4 암시적 그랜트 타입

B.5 토큰 리프레시 방법

 

부록 C 서비스 모니터링

C.1 스프링 부트 액추에이터로 모니터링

__C.1.1 스프링 부트 액추에이터 추가

__C.1.2 액추에이터 엔드포인트 활성화

C.2 마이크로미터와 프로메테우스 설정

__C.2.1 마이크로미터와 프로메테우스의 이해

__C.2.2 마이크로미터와 프로메테우스 구현

C.3 그라파나 구성

C.4 요약

 

더보기접기

저자

ㆍ지은이 존 카넬

지은이 소개
소프트웨어 아키텍트이며, Genesis Cloud의 개발자 참여팀을 이끌고 있다. Genesis Cloud 고객과 내부 개발자에게 클라우드 기반의 컨택 센터와 전화 통신 솔루션 구축 방법, 클라우드에서 개발 모범 사례를 만드는 방법을 가르치는 데 대부분의 시간을 보낸다. AWS 플래폼에서 전화 통신 기반 마이크로서비스를 직접 구축하고 있으며, 자바, Closure, Go를 포함한 여러 기술 플랫폼에서 마이크로서비스 설계 및 구축 업무를 담당하고 있다.

ㆍ지은이 일러리 후알리루포 산체스

지은이 소개
센포텍(Cenfotec) 대학을 졸업하고 코스타리카에 위치한 라틴 아메리카 과학 기술 대학(ULACIT)에서 IT 관리에 중점을 둔 MBA 학위를 취득한 소프트웨어 엔지니어다. 현재 마이크로소프트에서 시니어 소프트웨어 엔지니어로 근무하며 대부분의 시간을 다양한 최신 프로젝트를 연구하고 개발하는 데 보내고 있다. 오라클 공인 개발자로 12년간 활동한 경험이 있고, IBM, 고릴라 로직(Gorilla Logic), 카길(Cargill), BAC Credomatic과 같은 대기업에서 시니어 소프트웨어 엔지니어로 일했다.

ㆍ옮긴이 정성권

옮긴이 소개
마이크로서비스 아키텍처에 기반한 대규모 IoT 플랫폼(SmartThings) 구축과 13억 계정 플랫폼의 클라우드화를 리드했고, 미디어 플래폼의 MSA 전환 및 새로운 고객 주도형 서비스를 작게 시도하고 있다. 분산 시스템 설계와 클라우드 네이티브 개발, DevOps 활동, SRE, 개발 조직 문화에 주목해왔으며 100세 인생을 재미있게 보낼 프로그래밍과 소프트웨어 기술에 관심이 많다. 개인 시간에는 아이들과 게임이나 검도를 하고, 스쿠버 다이빙을 하며 시간을 보낸다. 『마이크로서비스 아키텍처 구축』을 번역했고, 『ABOUT .NET XML 웹 서비스』, 『PHP 웹 서버 구축하기』를 집필했다.

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.