스프링으로 하는 마이크로서비스 구축 2/e
2024년 11월 25일 출간
- eBook 상품 정보
- 파일 정보 pdf (17.37MB)
- ISBN 9791161759104
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
PDF 필기가능 (Android, iOS)
쿠폰적용가 32,400원
10% 할인 | 5%P 적립이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
카드&결제 혜택
- 5만원 이상 구매 시 추가 2,000P
- 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
- 리뷰 작성 시, e교환권 추가 최대 200원
작품소개
이 상품이 속한 분야
스프링 부트, 스프링 클라우드와 도커, 쿠버네티스, 이스티오, EFK 스택, 프로메테우스, 그라파나 등의 오픈소스 도구를 조합해 마이크로서비스를 구축하는 방법을 설명한다. 오픈소스 도구와 스프링 기반 자바 코드를 실습 위주로 설명하며, 최소한의 시간 투자만으로도 다양하고 넓은 범위의 지식을 학습할 수 있게끔 효율적으로 구성돼 있다.
개정판은 스프링 부트와 다양한 오픈소스 도구의 최신 버전을 사용해 보다 쉽고 빠르게 학습할 수 있도록 내용을 업데이트했으며, 스프링 기반 마이크로서비스를 네이티브 컴파일하는 방법, 윈도우 WSL 2 환경 설정 방법, 헬름 3 사용 방법 등의 내용을 추가했다.
1장. 마이크로서비스 소개
기술 요구 사항
내 마이크로서비스 경험
독립 소프트웨어 컴포넌트의 장점
독립 소프트웨어 컴포넌트의 문제
마이크로서비스 입문
샘플 마이크로서비스 환경
마이크로서비스 정의
마이크로서비스의 문제
마이크로서비스 디자인 패턴
서비스 검색
에지 서버
리액티브 마이크로서비스
구성 중앙화
로그 분석 중앙화
분산 추적
서킷 브레이커
제어 루프
모니터링 및 경고 중앙화
필수 소프트웨어
다른 주요 고려 사항
요약
2장. 스프링 부트 소개
기술 요구 사항
스프링 부트
설정보다 관례와 팻 JAR 파일
스프링 부트 애플리케이션 설정에 대한 코드 예제
스프링 웹플럭스
REST 서비스 설정에 대한 코드 예제
springdoc-openapi
스프링 데이터
엔티티
리포지터리
스프링 클라우드 스트림
메시지 송수신에 대한 코드 예제
도커
요약
질문
3장. 공조 마이크로서비스 집합 생성
기술 요구 사항
마이크로서비스 환경 소개
마이크로서비스가 처리하는 정보
임시로 검색 서비스 대체
골격 마이크로서비스 생성
스프링 이니셜라이저로 골격 코드 생성
그래들에 멀티 프로젝트 빌드 설정
RESTful API 추가
api 프로젝트와 util 프로젝트 추가
API 구현
복합 마이크로서비스 추가
API 클래스
속성
통합 컴포넌트
복합 API 구현
예외 처리 추가
전역 REST 컨트롤러 예외 핸들러
API 구현의 예외 처리
API 클라이언트의 예외 처리
API 수동 테스트
자동화된 마이크로서비스 테스트
반자동화된 마이크로서비스 환경 테스트
테스트 스크립트 실행
요약
질문
4장. 도커를 사용한 마이크로서비스 배포
기술 요구 사항
도커 소개
첫 도커 커맨드 실행
도커에서 자바를 실행할 때의 문제
사용 가능한 CPU 제한
사용 가능한 메모리 제한
도커로 단일 마이크로서비스 실행
소스 코드 변경
도커 이미지 빌드
서비스 시작
컨테이너를 분리 모드로 실행
도커 컴포즈를 사용한 마이크로서비스 환경 관리
소스 코드 변경
마이크로서비스 환경 시작
공조 마이크로서비스의 테스트 자동화
테스트 실행 문제 해결
요약
질문
5장. OpenAPI를 사용한 API 문서화
기술 요구 사항
springdoc-openapi 소개
소스 코드 변경
그래들 빌드 파일에 의존성 추가
ProductCompositeServiceApplication에 구성과 API 정보 추가
ProductCompositeService 인터페이스에 API 정보 추가
마이크로서비스 환경 구축 및 시작
OpenAPI 문서 사용법
요약
질문
6장. 영속성 추가
기술 요구 사항
목표
핵심 마이크로서비스에 영속성 계층 추가
의존성 추가
엔티티 클래스를 사용해 데이터 저장
스프링 데이터 리포지터리 정의
영속성에 중점을 둔 자동 테스트 작성
Testcontainers 사용법
영속성 테스트 작성
서비스 계층에서 영속성 계층 사용
데이터베이스 연결 URL 기록
새 API 추가
서비스 계층에서 영속성 계층 호출
자바 빈 매퍼 선언
서비스 테스트 업데이트
복합 서비스 API 확장
복합 서비스 API에 새 오퍼레이션 추가
통합 계층에 메서드 추가
새 복합 API 오퍼레이션 구현
복합 서비스 테스트 업데이트
도커 컴포즈 환경에 데이터베이스 추가
도커 컴포즈 구성
데이터베이스 연결 구성
MongoDB 및 MySQL CLI 도구
새 API 및 영속성 계층의 수동 테스트
마이크로서비스 환경의 자동 테스트 업데이트
요약
질문
7장. 리액티브 마이크로서비스 개발
기술 요구 사항
논블로킹 동기 API와 이벤트 기반 비동기 서비스의 선택 기준
논블로킹 동기 REST API 개발
프로젝트 리액터 소개
스프링 데이터 MongoDB를 사용한 논블로킹 영속성
핵심 서비스의 논블로킹 REST API
복합 서비스의 논블로킹 REST API
이벤트 기반 비동기 서비스 개발
메시징 관련 문제 처리
토픽 및 이벤트 정의
그래들 빌드 파일 변경
핵심 서비스에서 이벤트 소비
복합 서비스에서 이벤트 게시
리액티브 마이크로서비스 환경의 수동 테스트
이벤트 저장
상태 점검 API 추가
파티션 없이 RabbitMQ 사용
파티션을 추가해 RabbitMQ 사용
토픽당 2개의 파티션으로 카프카 사용
리액티브 마이크로서비스 환경의 자동 테스트
요약
질문
2부. 스프링 클라우드를 활용한 마이크로서비스 관리
8장. 스프링 클라우드 소개
기술 요구 사항
스프링 클라우드의 진화
넷플릭스 유레카를 검색 서비스로 사용
스프링 클라우드 게이트웨이를 에지 서버로 사용
구성 중앙화를 위해 스프링 클라우드 컨피그 사용
복원력 향상을 위해 Resilience4j 사용
Resilience4j를 사용한 서킷 브레이커 샘플
스프링 클라우드 슬루스와 집킨을 사용한 분산 추적
요약
질문
9장. 넷플릭스 유레카를 사용한 서비스 검색
기술 요구 사항
서비스 검색 소개
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 호출
스웨거 UI에서 OAuth 2.0 테스트
외부 OpenID Connect 공급자를 사용한 테스트
Auth0 사용자 계정의 설정 및 구성
Auth0를 OpenID 공급자로 사용하기 위해 필요한 변경 사항 적용
Auth0를 OpenID Connect 공급자로 사용해 테스트 스크립트 실행
클라이언트 자격 증명 승인 흐름을 사용해 접근 토큰 획득
권한 코드 승인 흐름을 사용해 접근 토큰 획득
Auth0 접근 토큰을 사용해 보안 API 호출
사용자에 대한 추가 정보 획득
요약
질문
12장. 구성 중앙화
기술 요구 사항
스프링 클라우드 컨피그 서버 소개
구성 저장소의 저장 유형 선택
클라이언트가 먼저 접속할 서버 결정
구성 보안
구성 서버 API 소개
구성 서버 설정
에지 서버에 라우팅 규칙 설정
도커 환경을 위한 구성 서버 설정
구성 서버의 클라이언트 설정
연결 정보 구성
구성 저장소 구조화
스프링 클라우드 컨피그 서버 사용
빌드 및 자동화 테스트 실행
구성 서버 API로 구성 조회
민감한 정보의 암호화 및 해독
요약
질문
13장. Resilience4j를 사용한 복원력 개선
기술 요구 사항
Resilience4j의 복원 메커니즘 소개
서킷 브레이커 소개
시간 제한기 소개
재시도 메커니즘 소개
소스 코드에 복원력 메커니즘 추가
프로그래밍 방식으로 지연 및 무작위 오류 추가
서킷 브레이커 및 시간 제한기 추가
재시도 메커니즘 추가
자동 테스트 추가
서킷 브레이커 및 재시도 메커니즘 테스트
빌드 및 자동화 테스트 실행
정상적인 요청만 유입될 때 서킷이 닫혀 있는지 확인
문제가 발생했을 때 서킷이 열리는지 확인
서킷 브레이커 다시 닫기
무작위 오류로 재시도 메커니즘 테스트
요약
질문
14장. 분산 추적
기술 요구 사항
스프링 클라우드 슬루스와 집킨을 사용한 분산 추적
소스 코드에 분산 추적 추가
빌드 파일에 의존성 추가
스프링 클라우드 슬루스 및 집킨에 대한 구성 추가
도커 컴포즈 파일에 집킨 추가
분산 추적 수행
RabbitMQ를 대기열 관리자로 사용해 시스템 환경 시작
정상적인 API 요청 전송
비정상적인 API 요청 전송
비동기 처리를 유발하는 API 요청 전송
RabbitMQ를 통해 집킨으로 전달된 추적 정보 모니터링
카프카를 메시지 브로커로 사용
요약
질문
3부. 쿠버네티스를 사용한 경량 마이크로서비스 개발
15장. 쿠버네티스 소개
기술 요구 사항
쿠버네티스 개념 소개
쿠버네티스 API 객체 소개
쿠버네티스 런타임 컴포넌트 소개
미니큐브를 사용해 쿠버네티스 클러스터 생성
미니큐브 프로필 사용
쿠버네티스의 CLI 도구인 kubectl 사용
kubectl 콘텍스트 사용
쿠버네티스 클러스터 생성
샘플 디플로이먼트 생성
로컬 쿠버네티스 클러스터 관리
쿠버네티스 클러스터 중지 및 시작
쿠버네티스 클러스터 종료
요약
질문
16장. 쿠버네티스에 마이크로서비스 배포
기술 요구 사항
넷플릭스 유레카를 쿠버네티스 서비스로 대체
쿠버네티스 객체 소개
스프링 부트의 지원 기능 사용
헬름 소개
헬름 커맨드 실행
헬름 차트의 구조
헬름 템플릿과 전달 값
common 라이브러리 차트
components 차트
environments 차트
개발 및 테스트 환경을 위한 쿠버네티스 배포
도커 이미지 빌드
헬름 차트의 의존성 해결
쿠버네티스에 배포
쿠버네티스 환경에 맞게 테스트 스크립트 수정
디플로이먼트 테스트
스테이징 및 상용 환경을 위한 쿠버네티스 배포
소스 코드 수정
쿠버네티스에 배포
정리
요약
질문
17장. 쿠버네티스로 기존 시스템 환경 대체
기술 요구 사항
스프링 클라우드 컨피그 서버 대체
스프링 클라우드 컨피그 서버를 대체하기 위한 변경 작업
스프링 클라우드 게이트웨이 대체
스프링 클라우드 게이트웨이를 대체하기 위한 변경 작업
인증서 프로비저닝 자동화
쿠버네티스 컨피그 맵, 시크릿, 인그레스, cert-manager를 사용한 테스트
인증서 갱신
스테이징 및 상용 환경을 위한 쿠버네티스 배포
쿠버네티스 없이도 마이크로서비스가 작동하는지 확인
도커 컴포즈 파일의 수정 사항
도커 컴포즈로 테스트
요약
질문
18장. 서비스 메시를 사용해 관찰 가능성 및 관리 편의성 개선
기술 요구 사항
이스티오를 이용한 서비스 메시 소개
이스티오 소개
마이크로서비스에 이스티오 프록시 삽입
이스티오의 API 객체 소개
마이크로서비스 환경 단순화
이스티오 인그레스 게이트웨이로 쿠버네티스 인그레스 컨트롤러 대체
이스티오 예거 컴포넌트로 집킨 서버 대체
쿠버네티스 클러스터에 이스티오 배포
이스티오 서비스에 대한 접근 설정
서비스 메시 생성
소스 코드 변경
커맨드를 실행해 서비스 메시 생성
서비스 메시 관찰
서비스 메시 보안
HTTPS와 인증서로 외부 엔드포인트 보호
OAuth 2.0/OIDC 접근 토큰을 사용한 외부 요청 인증
상호 인증을 사용한 내부 통신 보호
서비스 메시의 복원력 확보
결함을 삽입해 탄력성 테스트
지연을 삽입해 복원력 테스트
비가동 시간 없이 업데이트 수행
소스 코드 변경
v1 및 v2 버전의 마이크로서비스 배포
모든 트래픽이 v1 버전의 마이크로서비스로 전달되는지 확인
카나리아 테스트 실행
블루/그린 배포 실행
도커 컴포즈로 테스트 실행
요약
질문
19장. EFK 스택을 사용한 로깅 중앙화
기술 요구 사항
플루언티드 소개
플루언티드 개요
플루언티드 구성
쿠버네티스에 EFK 스택 배포
마이크로서비스 빌드 및 배포
일래스틱서치와 키바나 배포
플루언티드 배포
EFK 스택 실습
키바나 초기화
로그 레코드 분석
마이크로서비스의 로그 레코드 검색
근본 원인 분석 수행
요약
질문
20장. 마이크로서비스 모니터링
기술 요구 사항
프로메테우스와 그라파나를 사용한 성능 모니터링
애플리케이션 메트릭 수집을 위한 소스 코드 변경
마이크로서비스 빌드 및 배포
그라파나 대시보드를 사용한 마이크로서비스 모니터링
테스트용 로컬 메일 서버 설치
부하 테스트 실행
키알리 내장 대시보드 사용
기존 그라파나 대시보드 가져오기
사용자 정의 그라파나 대시보드 개발
그라파나 대시보드 내보내기 및 가져오기
그라파나 경고 설정
메일 기반 알림 채널 정의
서킷 브레이커에 경고 설정
서킷 브레이커 경고 테스트
요약
질문
21장. 맥OS용 설치 지침
기술 요구 사항
도구 설치
홈브루 설치
홈브루로 도구 설치
홈브루 없이 도구 설치
설치 후 조처
설치 확인
소스 코드 다운로드
IDE 사용
코드 구조
22장. 윈도우용 설치 지침
기술 요구 사항
도구 설치
윈도우용 도구 설치
WSL 2 리눅스 서버에 도구 설치
소스 코드 다운로드
코드 구조
23장. 자바 마이크로서비스의 네이티브 컴파일
기술 요구 사항
자바 소스 코드의 네이티브 컴파일이 필요한 이유
그랄VM 프로젝트 소개
스프링 네이티브 프로젝트 소개
소스 코드를 네이티브 이미지로 컴파일
소스 코드 변경
추적 에이전트 설치
추적 에이전트 실행
네이티브 이미지 생성
도커 컴포즈로 테스트
쿠버네티스로 테스트
요약
질문
이 책의 대상 독자
쿠버네티스를 컨테이너 오케스트레이터(container orchestrator)로 사용하고 이스티오를 서비스 메시(service mesh)로 사용해, 기반 마이크로서비스 환경을 구축하고 온프레미스(onpremise)나 클라우드로 배포하는 방법을 배우려는 자바, 스프링 개발자와 아키텍트를 위한 책이다. 마이크로서비스 아키텍처(microservice architecture)에 익숙하지 않더라도 문제없이 읽을 수 있다.
이 책의 구성
1장, ‘마이크로서비스 소개’에서는 이 책의 기본 전제인 마이크로서비스의 필수 개념과 디자인 패턴을 설명한다.
2장, ‘스프링 부트 소개’에서는 스프링 부트와 책의 앞부분에서 사용할 오픈소스 프로젝트를 소개한다. RESTful API 개발에 사용하는 스프링 웹플럭스, OpenAPI 기반 API 문서를 생성하는 springdoc-openapi, SQL 및 NoSQL 데이터베이스에 데이터를 저장할 때 사용하는 스프링 데이터, 메시지 기반의 마이크로서비스에서 사용하는 스프링 클라우드 스트림, 마이크로서비스를 컨테이너로 실행하는 도커 등을 소개한다.
3장, ’공조 마이크로서비스 집합’에서는 생성 공조 마이크로서비스 집합을 생성하는 방법을 설명한다. 스프링 이니셜라이저(Spring Initializr)를 사용해 스프링 프레임워크 5.3 및 스프링 부트 2.5 기반의 골격 프로젝트를 생성하고 세 가지 핵심 서비스를 만든다. 또한 세 가지 핵심 서비스에서 얻은 정보를 집계해 복합적 결과를 만드는 복합 서비스도 만든다. 3장의 뒷부분에선 스프링 웹플럭스(Spring WebFlux)를 기반으로 기본적인 RESTful API를 추가하는 방법을 배우며, 4장에서는 더 많은 기능을 마이크로서비스에 추가한다.
4장, ‘도커를 사용한 마이크로서비스 배포’에서는 도커를 사용해 마이크로서비스를 배포하는 방법을 설명한다. Dockerfile이나 docker-compose 파일을 이용해 전체 마이크로서비스 환경을 하나의 커맨드로 시작하는 방법을 배우고, 여러 스프링 프로필을 사용해 도커용 구성과 이외의 구성을 분리해서 처리하는 방법도 살펴본다.
5장, ‘OpenAPI를 사용한 API 문서화’에서는 OpenAPI를 사용해, 마이크로서비스에서 공개하는 API를 빠르게 문서화하는 방법을 배운다. 서비스 코드에 붙인 애노테이션(annotation)을 검사해 OpenAPI 기반의 API 문서를 생성하는 springdoc-openapi와 웹 브라우저에서 API를 테스트하는 스웨거 UI(Swagger UI)를 사용해본다.
6장, ‘영속성 추가’에서는 마이크로서비스 데이터에 영속성을 부여하는 방법을 배운다. 스프링 데이터를 사용해 두 핵심 마이크로서비스의 데이터를 문서 데이터베이스인 MongoDB에 저장 및 접근하게 하고, 나머지 마이크로서비스의 데이터는 관계형 데이터베이스인 MySQL에 두고 접근하게 한다. 통합 테스트를 실행할 때는 Testcontainers를 사용해 데이터베이스를 시작한다.
7장, ‘리액티브 마이크로서비스 개발’에서는 리액티브(reactive) 방식을 사용해야 하는 이유와 사용 시기, 종단 간(end-to-end) 리액티브 서비스를 개발하는 방법을 배운다. 논블로킹(non-blocking) 동기 방식 RESTful API, 이벤트 기반 비동기 방식 서비스를 개발하고 테스트하는 방법도 배운다. 또한 MongoDB용 리액티브 논블로킹 드라이버 사용 방법과 일반적인 MySQL용 블로킹 코드 사용 방법을 배운다.
8장, ‘스프링 클라우드 소개’에서는 이 책에서 사용하는 스프링 클라우드 및 스프링 클라우드 컴포넌트를 소개한다.
9장, ‘넷플릭스 유레카를 사용한 서비스 검색’에서는 스프링 클라우드에 넷플릭스 유레카(Netflix Eureka)를 사용해 서비스 검색 기능을 추가하는 방법을 알아본다. 즉 넷플릭스 유레카 기반의 서비스 검색 서버를 시스템 환경에 추가하고, 스프링 클라우드 로드 밸런서(LoadBalancer)를 사용해 다른 마이크로서비스를 찾도록 마이크로서비스를 구성한다. 또한 자동으로 마이크로서비스를 등록하는 방법과 스프링 클라우드 로드 밸런서를 통해 전달된 트래픽을 활성화된 새 인스턴스로 자동 로드 밸런싱하는 방법을 배운다.
10장, ‘스프링 클라우드 게이트웨이를 에지 서버로 사용’에서는 스프링 클라우드 게이트웨이를 사용해 마이크로서비스를 에지 서버(edge server) 뒤로 숨기고, 골라낸 일부 API만 외부 소비자에게 공개하는 방법을 배운다. 또한 외부 소비자가 볼 수 없도록 마이크로서비스 내부의 복잡성을 숨기는 방법을 살펴본다. 즉 스프링 클라우드 게이트웨이 기반의 에지 서버를 시스템 환경에 추가하고 공개 API만 노출하도록 에지 서버를 구성한다.
11장, ‘API 접근 보안’에서는 OAuth 2.0 및 OpenID Connect를 사용해 공개 API를 보호하는 방법을 설명한다. Spring Authorization Server 기반의 OAuth 2.0 권한 서버를 시스템 환경에 추가하는 방법과 해당 권한 서버에서 발급한 유효한 접근 토큰을 가진 클라이언트만 에지 서버와 복합 서비스에 접근할 수 있도록 구성하는 방법을 배운다. 또한 에지 서버를 통해 권한 부여 서버를 공개하고 HTTPS를 사용해 외부 소비자와의 통신을 보호하는 방법을 알아본다. 마지막으로, 내부 OAuth 2.0 인증 서버를 외부 OpenID Connect 공급자인 Auth0로 교체하는 방법을 배운다.
12장, ‘구성 중앙화’에서는 하나의 중앙 구성 저장소에서 모든 마이크로서비스의 구성 파일을 가져오고, 구성 서버를 사용해 런타임(runtime)에 마이크로서비스로 구성을 배포하는 방법을 배운다. 또한 시스템 환경에 스프링 클라우드 컨피그 서버(Spring Cloud Config Server)를 추가하고 스프링 컨피그 서버(Spring Config Server)에서 구성을 가져오도록 마이크로서비스를 구성하는 방법을 살펴본다.
13장, ‘Resilience4j를 사용한 복원력 개선’에서는 Resilience4j의 기능을 이용해 연쇄 장애(chain of failure) 같은 안티 패턴(anti-pattern)을 방지하는 방법을 설명하며, 복합 서비스에 재시도 메커니즘과 서킷 브레이커(circuit breaker)를 추가하는 방법을 배운다. 서킷이 열려 있을 때 빠른 실패 로직이 작동하도록 서킷 브레이커를 구성하는 방법과 폴백 메서드(fallback method)를 사용해 최적화된 응답을 생성하는 방법도 배운다.
14장, ‘분산 추적’에서는 집킨(Zipkin)을 사용해 추적 정보를 수집하고 시각화하는 방법을 설명한다. 또한 스프링 클라우드 슬루스(Spring Cloud Sleuth)로 요청에 추적 ID를 추가해 공조 마이크로서비스 간의 요청 체인을 시각화하는 방법을 배운다.
15장, ‘쿠버네티스 소개’에서는 쿠버네티스의 핵심 개념과 샘플 디플로이먼트(sample deployment) 생성 방법을 설명한다. 미니큐브(Minikube)를 사용해 개발 및 테스트 용도의 쿠버네티스를 로컬에 설치하는 방법을 배운다.
16장, ‘쿠버네티스에 마이크로서비스 배포’에서는 쿠버네티스에 마이크로서비스를 배포하는 방법을 설명하며, 헬름(Helm)을 사용해 쿠버네티스에 배포할 마이크로서비스를 패키징하고 구성하는 방법을 배운다. 테스트 환경, 상용 환경 등 다양한 런타임 환경에 헬름을 사용해 마이크로서비스를 배포한다. 또한 쿠버네티스 서비스 객체와 kube-proxy 런타임 컴포넌트를 기반으로 하는, 쿠버네티스에 내장된 서비스 검색 기능으로 넷플릭스 유레카를 대체하는 방법을 배운다.
17장, ‘쿠버네티스로 기존 시스템 환경 대체’에서는 앞에서 소개한 스프링 클라우드 서비스를 쿠버네티스 기능으로 대체하는 방법을 설명한다. 스프링 클라우드 컨피그 서버를 쿠버네티스 시크릿과 컨피그맵(ConfigMap)으로 대체하는 이유와 방법을 배운다. 또한 스프링 클라우드 게이트웨이를 쿠버네티스 인그레스(Kubernetes Ingress) 객체로 대체하는 방법과 cert-manager를 사용해 외부 HTTPS 엔드포인트를 위한 인증서를 자동으로 프로비저닝하고 갱신하는 방법을 배운다.
18장, ‘서비스 메시를 사용해 관찰 가능성 및 관리 편의성 개선’에서는 서비스 메시 개념을 소개하고 이스티오를 사용해 쿠버네티스에 서비스 메시를 구현하는 방법을 설명한다. 서비스 메시를 사용해 마이크로서비스 환경의 복원력, 보안, 트래픽 관리, 관찰 가능성을 향상하는 방법을 배운다.
19장, ‘EFK 스택을 사용한 로깅 중앙화’에서는 일래스틱서치(Elasticsearch), 플루언티드(Fluentd), 키바나(Kibana)를 사용해 마이크로서비스의 로그 스트림(log stream)을 수집, 저장, 시각화하는 방법을 설명한다. 미니큐브에 EFK 스택을 배포하는 방법과 EFK 스택으로 수집한 로그 레코드를 분석하는 방법, 여러 마이크로서비스가 관련된 요청을 처리하면서 발생하는 마이크로서비스 로그 출력을 찾는 방법을 배운다. 또한 EFK 스택을 사용해 근본 원인 분석을 수행하는 방법을 알아본다.
20장, ‘마이크로서비스 모니터링’에서는 프로메테우스와 그라파나를 이용해 쿠버네티스에 배포된 마이크로서비스를 모니터링하는 방법을 설명한다. 기존 그라파나 대시보드를 활용해 다양한 유형의 메트릭을 모니터링하는 방법과 직접 대시보드를 만드는 방법을 배운다. 마지막으로, 그라파나에서 특정 메트릭에 임곗값을 구성하고, 이를 초과하면 이메일을 전송하는 경고를 생성하는 방법을 배운다.
21장, ‘맥OS용 설치 지침’에서는 맥OS(MacOS)에 이 책에서 사용하는 도구를 설치하는 방법을 설명한다.
22장, ‘윈도우용 설치 지침’에서는 윈도우 PC에 리눅스용 윈도우 하위 시스템 v2(WSL 2, Windows Subsystem for Linux 2)를 사용해 이 책에서 사용하는 도구를 설치하는 방법을 설명한다.
23장, ‘자바 마이크로서비스의 네이티브 컴파일’에서는 스프링 네이티브(Spring Native) 베타 버전과 그랄VM 네이티브 이미지 컴파일러(GraalVM native-image compiler)를 사용해 스프링 기반 마이크로서비스를 네이티브 코드로 컴파일하는 방법을 설명한다. 자바 VM(Java Virtual Machine) 기반 마이크로서비스보다 시작 속도가 월등히 빠른 마이크로서비스를 생성할 수 있다.
각 장의 말미에는 해당 장에서 다루는 내용을 정리하는 데 도움이 되는 간단한 질문이 몇 개씩 있다. 질문에 대한 답은 깃허브 저장소에 있는 Assessments 파일에 있다.
이 책에서 다루는 내용
◆ 스프링 부트를 사용한 리액티브 마이크로서비스 구축
◆ 스프링 클라우드를 사용해 복원력 및 확장성 있는 마이크로서비스 개발
◆ 스프링 시큐리티 및 OAuth 2.1/OIDC를 사용해 공개 API 보호
◆ 도커를 사용해 개발, 테스트 환경과 상용 환경 사이의 격차 해소
◆ 쿠버네티스를 사용한 마이크로서비스 배포 및 관리
◆ 이스티오를 사용한 보안성, 관찰 가능성, 트래픽 관리 편의성 향상
◆ JUnit, Testcontainers, 그래들(Gradle), 배시(Bash)를 사용해 자동화된 마이크로서비스 테스트 작성 및 실행
작가정보
저자(글) 매그너스 라슨
35년 이상 IT 산업에 종사했으며 볼보(Volvo), 에릭슨(Ericsson), 아스트라제네카(AstraZeneca) 등 스웨덴 대기업의 컨설턴트로 일하고 있다. 예전에 겪었던 분산 시스템과 관련된 어려운 문제를 스프링 클라우드, 쿠버네티스, 이스티오 등의 오픈소스 도구를 이용해 해결하고 있다. 지난 몇 년 동안 고객이 이런 도구를 사용하도록 도왔고 해당 주제에 대해 여러 번 발표했으며 블로그 게시물도 작성했다.
번역 박규태
엔터프라이즈 자바 환경에서 오랫동안 일했다. CMS, 웹 오피스, 쿠버네티스 기반 GPU 플랫폼을 개발했으며, 지금은 OpenTelemetry 기반 모니터링 솔루션을 개발하고 있다.
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (5,000원 이상 상품으로 변경 예정, 2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (5,000원 이상 eBook으로 변경 예정, 2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!
- 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
- 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
- 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
가장 와 닿는 하나의 키워드를 선택해주세요.
총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.
신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.
허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
있으니 유의하시어 신중하게 신고해주세요.
이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.
구매 후 90일 이내 작성 시, e교환권 100원 적립
eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.
차감하실 sam이용권을 선택하세요.
차감하실 sam이용권을 선택하세요.
선물하실 sam이용권을 선택하세요.
-
보유 권수 / 선물할 권수0권 / 1권
-
받는사람 이름받는사람 휴대전화
- 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
- 열람권은 1인당 1권씩 선물 가능합니다.
- 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
- 선물한 열람권의 등록유효기간은 14일 입니다.
(상대방이 기한내에 등록하지 않을 경우 소멸됩니다.) - 무제한 이용권일 경우 열람권 선물이 불가합니다.
첫 구매 시 교보e캐시 지급해 드립니다.
- 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
- 한 ID당 최초 1회 지급 / sam 이용권 제외
- 구글바이액션을 통해 교보eBook 구매 이력이 없는 회원 대상
- 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)