스프링 부트 3와 스프링 클라우드를 활용한 마이크로서비스 구축 (스프링 클라우드, 이스티오, 쿠버네티스를 활용한 견고하고 확장성 있는 마이크로서비스 구축과 배포 | 개정판 4 판)

스프링 부트 3와 스프링 클라우드를 활용한 마이크로서비스 구축 (스프링 클라우드, 이스티오, 쿠버네티스를 활용한 견고하고 확장성 있는 마이크로서비스 구축과 배포 | 개정판 4 판)

$46.41
Description
단계별로 배우는 견고하고 확장성 있는 마이크로서비스 구축과 배포!
이 책에서는 실용적인 접근 방식을 채택해 간단한 마이크로서비스부터 시작해 복잡한 분산 애플리케이션을 구축하는 과정을 단계적으로 진행한다. 그 과정에서 마이크로서비스 구축에 필수적인 기능들을 학습하고 쿠버네티스와 이스티오를 이용해 마이크로서비스를 배포하는 방법을 익힐 수 있다.

4차 개정판인 이 책에서는 자바 24, 스프링 부트 3.5, 스프링 클라우드 2025를 사용한다. 코드 예제가 전체적으로 업데이트됐으며, 사용 중단된 API는 대체되어 최신 정보를 제공한다. 스프링의 AOT 모듈, 관찰 가능성, 분산 추적, 쿠버네티스 패키징을 위한 헬름에 대한 지식을 배울 수 있다.

실습에서는 도커 컴포즈를 사용해 데이터베이스 및 메시징 서비스와 함께 마이크로서비스를 실행하는 것으로 시작해 이스티오를 사용해 쿠버네티스에 마이크로서비스를 배포한다. 또한 데이터 영속성, 복원력, 반응형 마이크로서비스, OpenAPI를 활용한 API 문서화를 비롯해 넷플릭스 유레카를 활용한 서비스 디스커버리, 스프링 클라우드 게이트웨이를 활용한 에지 서버 구축, 프로메테우스, 그라나파, EFK 스택을 활용한 모니터링을 배운다.

이 책을 마치고 나면 스프링 부트와 스프링 클라우드를 활용해 견고하고 확장성 있는 마이크로서비스를 구축할 수 있을 것이다.

저자

마그누스 라르손

1986년부터 IT 업계의 베테랑으로 활동해왔으며, 볼보, 에릭슨, 아스트라제네카 등 스웨덴의 주요 기업에서 컨설팅을 담당했다. 과거에는 분산 시스템 구축에 어려움이 많았지만 오늘날에는 스프링 클라우드, 쿠버네티스, 이스티오 같은 오픈소스 도구들이 효과적인 해결책을 제공한다. 지난 10년 동안 마그누스는 고객이 이러한 도구를 사용할 수 있도록 지원해 왔으며, 프레젠테이션과 블로그를 통해 인사이트를 공유해 왔다.

목차

[1부] 스프링 부트를 활용해 마이크로서비스 개발 시작하기

▣ 01장: 마이크로서비스 소개
기술적 요구사항
마이크로서비스와의 만남
__자율적인 소프트웨어 컴포넌트의 이점
__자율적인 소프트웨어 컴포넌트의 문제
__마이크로서비스 시작하기
__예제 마이크로서비스 환경
마이크로서비스 정의
마이크로서비스의 문제
마이크로서비스 디자인 패턴
__서비스 디스커버리
__에지 서버
__반응형 마이크로서비스
__중앙 집중식 구성
__중앙 집중식 로그 분석
__분산 추적
__서킷 브레이커
__제어 루프
__중앙 집중식 모니터링과 알람
소프트웨어 지원 도구
기타 중요한 고려 사항
정리

▣ 02장: 스프링 부트 소개
기술적 요구사항
스프링 부트
__‘구성보다 관습’과 팻 JAR 파일
__스프링 부트 애플리케이션 설정을 위한 코드 예제
__스프링 부트 3.0 ~ 3.5의 새로운 기능
__스프링 부트 2 애플리케이션의 마이그레이션
스프링 웹플럭스
__REST 서비스 구축을 위한 코드 예제
__springdoc-openapi
스프링 데이터
__엔티티
__리포지터리
스프링 클라우드 스트림
__메시지 전송과 수신을 위한 코드 예제
도커
정리
문제

▣ 03장: 협력하는 마이크로서비스 만들기
기술적 요구사항
마이크로서비스 환경 소개
마이크로서비스에서 처리하는 정보
__제품 서비스
__리뷰 서비스
__추천 서비스
__제품 복합 서비스
__인프라 관련 정보
__임시로 서비스 디스커버리 대체하기
기본 골격 마이크로서비스 생성
__스프링 이니셜라이저를 활용한 기본 골격 코드 생성
__그레이들에서 멀티 프로젝트 빌드 설정
RESTful API 추가
__API와 유틸리티 프로젝트 추가
__API 구현
복합 마이크로서비스 추가
__API 클래스
__프로퍼티
__통합 컴포넌트
__복합 API 구현
오류 처리 추가
__전역 REST 컨트롤러 예외 핸들러
__API 구현에서의 오류 처리
__API 클라이언트에서의 오류 처리
API 수동 테스트
격리된 환경의 자동화된 마이크로서비스 테스트 추가
마이크로서비스 환경에 대한 반자동화된 테스트 추가
__테스트 스크립트 실행
정리
문제

▣ 04장: 도커를 활용한 마이크로서비스 배포
기술적 요구사항
도커 소개
__첫 번째 도커 명령 실행
도커에서 자바 실행하기
__사용 가능한 CPU 제한하기
__사용 가능한 메모리 제한하기
단일 마이크로서비스에 도커 사용
__소스코드의 변경 사항
__도커 이미지 빌드
__서비스 구동
__컨테이너를 분리 모드로 실행
도커 컴포즈를 활용한 마이크로서비스 환경 관리
__소스코드의 변경 사항
__마이크로서비스 환경 구동
협력 마이크로서비스의 테스트 자동화
__테스트 실행 문제 해결
정리
문제

▣ 05장: OpenAPI를 활용한 API 문서화
기술적 요구사항
springdoc-openapi 사용법 소개
소스코드에 springdoc-openapi 추가
__그레이들 빌드 파일에 의존성 추가
__ProductCompositeService에 OpenAPI 구성 및 일반 API 문서 추가
__ProductCompositeService 인터페이스에 API 관련 문서 추가
마이크로서비스 환경 빌드 및 구동
OpenAPI 문서 테스트
정리
문제

▣ 06장: 영속성 추가
기술적 요구사항
이번 장의 목표
핵심 마이크로서비스에 영속성 계층 추가
__의존성 추가
__엔티티 클래스를 활용한 데이터 저장
__스프링 데이터에서 리포지터리 정의하기
영속성에 중점을 둔 자동화된 테스트 작성
__Testcontainers 사용
__영속성 테스트 작성
서비스 계층에서 영속성 계층 사용
__데이터베이스 연결 URL 로깅
__새 API 추가
__서비스 계층에서 영속성 계층 호출
__자바 빈 매퍼 선언
__서비스 테스트 업데이트
복합 서비스 API 확장
__복합 서비스 API에 새 연산 추가
__통합 계층에 메서드를 추가
__새로운 복합 API 연산 구현
__복합 서비스 테스트 업데이트
도커 컴포즈 환경에 데이터베이스 추가
__도커 컴포즈 구성
__데이터베이스 연결 구성
__MongoDB와 MySQL CLI 도구
새로운 API와 영속성 계층에 대한 수동 테스트
마이크로서비스 환경의 자동화된 테스트 업데이트
정리
문제

▣ 07장: 반응형 마이크로서비스 개발
기술적 요구사항
논블로킹 동기 API와 이벤트 기반 비동기 서비스 중에서 선택하기
논블로킹 동기 RESTful API 개발
__프로젝트 리액터 소개
__스프링 데이터 MongoDB를 활용한 논블로킹 영속성
__핵심 서비스의 논블로킹 RESTful API
__복합 서비스의 논블로킹 RESTful API
이벤트 기반 비동기 서비스 개발
__메시징 관련 문제 처리
__토픽과 이벤트 정의
__그레이들 빌드 파일 변경
__핵심 서비스에서 이벤트 소비하기
__복합 서비스에서 이벤트 게시하기
반응형 마이크로서비스 환경에 대한 수동 테스트 실행
__이벤트 저장
__상태 API 추가
__파티션을 사용하지 않고 RabbitMQ 사용하기
__파티션과 함께 RabbitMQ 사용하기
__토픽당 두 개의 파티션과 함께 카프카 사용하기
반응형 마이크로서비스 환경에 대한 자동화된 테스트 실행
정리
문제

[2부] 스프링 클라우드를 활용한 마이크로서비스 관리

▣ 08장: 스프링 클라우드 소개
기술적 요구사항
스프링 클라우드의 진화
서비스 디스커버리를 위한 넷플릭스 유레카 활용
스프링 클라우드 게이트웨이를 에지 서버로 사용하기
중앙 집중식 구성을 위한 스프링 클라우드 컨피그 활용
복원력 향상을 위한 Resilience4j 활용
__Resilience4j의 서킷 브레이커 예제
분산 추적을 위한 마이크로미터 트레이싱과 집킨 활용
정리
문제
기술적 요구사항

▣ 09장: 넷플릭스 유레카를 활용한 서비스 디스커버리
서비스 디스커버리 소개
__DNS 기반 서비스 디스커버리의 문제
__서비스 디스커버리의 과제
__스프링 클라우드의 넷플릭스 유레카를 활용한 서비스 디스커버리
넷플릭스 유레카 서버 설정
넷플릭스 유레카 서버에 마이크로서비스 연결
개발 환경용 구성 설정
__유레카 구성 매개변수
__유레카 서버 구성
__유레카 서버에 대한 클라이언트 구성
디스커버리 서비스 테스트
__서비스 확장
__서비스 축소
__유레카 서버를 활용한 테스트
유레카 서버를 다시 구동
정리
문제

▣ 10장: 스프링 클라우드 게이트웨이를 활용해 에지 서버 뒤에 마이크로서비스 숨기기
기술적 요구사항
시스템 환경에 에지 서버 추가
스프링 클라우드 게이트웨이 설정
__복합 상태 검사 추가
__스프링 클라우드 게이트웨이 구성
__도커 엔진 외부로 무엇이 노출되는지 검사하기
__라우팅 규칙 테스트
정리
문제

▣ 11장: API에 대한 접근 보안
기술적 요구사항
OAuth 2.0과 OpenID Connect 소개
__OAuth 2.0 소개
__OpenID Connect 소개
시스템 환경 보호
HTTPS를 이용한 외부 통신 보호
__런타임에 자체 서명 인증서 교체하기
디스커버리 서버에 대한 접근 보호
__유레카 서버의 변경 사항
__유레카 클라이언트의 변경 사항
로컬 인가 서버 추가
OAuth 2.0과 OpenID Connect를 활용한 API 보호
__에지 서버 및 product-composite 서비스의 변경 사항
__product-composite 서비스의 변경 사항
__테스트 스크립트의 변경 사항
로컬 인가 서버를 이용한 테스트
__자동화된 테스트의 빌드와 실행
__보호된 디스커버리 서버에 대한 테스트
__접근 토큰 획득
__접근 토큰을 이용한 보호된 API 호출
__OAuth 2.0으로 스웨거 UI 테스트
외부 OpenID Connect 제공자를 이용한 테스트
__Auth0에서 계정 설정 및 구성
__Auth0을 OpenID 제공자로 사용하는 데 필요한 변경 사항
__Auth0을 OpenID Connect 제공자로 사용해 테스트 스크립트 실행하기
__클라이언트 자격 증명 승인 흐름을 이용한 접근 토큰 획득
__인가 코드 승인 흐름을 이용한 접근 토큰 획득
__Auth0 접근 토큰을 이용한 보호된 API 호출
__사용자의 상세 정보 조회
정리
문제

▣ 12장: 중앙 집중식 구성
기술적 요구사항
스프링 클라우드 컨피그 서버 소개
__구성 저장소의 스토리지 유형
__초기 클라이언트 연결 결정
__구성

출판사 서평

★ 이 책에서 다루는 내용 ★

◎ 스프링 부트를 활용한 반응형 마이크로서비스 구축
◎ 스프링 클라우드를 활용한 탄력적이고 확장 가능한 마이크로서비스 개발
◎ OAuth 및 스프링 시큐리티를 활용한 API 보호
◎ 도커를 이용한 개발, 테스트, 생산 환경 간의 격차 해소
◎ 쿠버네티스를 이용한 마이크로서비스 배포 및 관리
◎ 이스티오를 적용해 보안, 관찰 가능성, 트래픽 관리를 개선
◎ JUnit, 테스트 컨테이너, 그레이들, bash를 이용한 마이크로서비스 테스트 자동화
◎ 스프링 AOT 및 GraalVM을 이용한 마이크로서비스의 네이티브 컴파일
◎ 마이크로미터 트레이싱을 활용한 분산 추적