추천 검색어

최근 검색어

도서 IT전문서/IT입문서 프로그래밍/오픈소스
요즘 개발자를 위한 마이크로서비스 아키텍처
정 가
44,000원
출 간
2026-10-30
지 은 이
이도원
I S B N
9791140720996
분 량
696쪽
난 이 도
관계없음

만드는 MSA에서 운영하는 MSA까지, 한 권의 책으로 담았다!

서비스만 나눈다고 MSA가 완성되는 것은 아니다. 분산된 서비스를 어떻게 연결하고 안정적으로 운영할 것인가를 함께 고민해야 한다. 이 책은 스프링 부트와 스프링 클라우드를 기반으로 서비스 디스커버리, API 게이트웨이, 중앙화된 설정 관리와 서비스 간 통신부터 Kafka를 활용한 이벤트 기반 아키텍처와 비동기 처리까지 차근차근 설명한다. 이어 분산 데이터와 트랜잭션, 장애 대응, 분산 추적과 로그 모니터링, 배포와 운영 전략까지 범위를 넓혀 실제 마이크로서비스 환경에서 마주하게 되는 문제를 다룬다. AI가 답과 코드를 빠르게 만들어 주는 시대지만, 그 답이 내 시스템에 적합한지 판단하려면 결국 아키텍처와 분산 시스템에 대한 이해가 필요하다. 서비스를 만드는 개발자에서, 분산된 시스템을 설계하고 운영할 수 있는 개발자로 한 단계 더 나아가 보자!

 

1장 마이크로서비스 개요

1.1 마이크로서비스의 정의와 특징

1.2 모놀리식 아키텍처 vs 마이크로서비스 아키텍처

1.3 마이크로서비스의 장단점

1.4 마이크로서비스 도입 배경

1.5 마이크로서비스에 대한 비즈니스 가치

__1.5.1 클라우드 네이티브

1.6 실습: 스프링 부트로 간단한 마이크로서비스 개발

__1.6.1 개발 환경 준비

__1.6.2 Postman 사용법

1.7 요약

 

2장 스프링 부트와 스프링 클라우드

2.1 스프링 부트

__2.1.1 스프링 부트란?

__2.1.2 스프링 부트의 작동 방식과 구성

__2.1.3 REST API 서비스 작성 실습: 상품 목록 조회

2.2 스프링 클라우드

__2.2.1 스프링 클라우드란?

__2.2.2 스프링 클라우드 기반 MSA 구조

2.3 왜 스프링 부트와 스프링 클라우드인가?

2.4 주요 기능 및 사용 방법

__2.4.1 스프링 부트 주요 애너테이션과 설정 파일

__2.4.2 스프링 클라우드 모듈 적용: Eureka, Gateway 연동

2.5 스프링 부트와 스프링 클라우드의 장단점

2.6 요약

 

3장 마이크로서비스 아키텍처의 이해

3.1 마이크로서비스 아키텍처 설계 원칙

__3.1.1 단일 책임 원칙과 서비스 설계

__3.1.2 도메인 주도 설계와 바운디드 컨텍스트

__3.1.3 비즈니스 기능 중심의 서비스 모델링

__3.1.4 콘웨이의 법칙: 조직 구조와 아키텍처의 정렬

3.2 마이크로서비스에서의 데이터 관리

__3.2.1 서비스별 데이터베이스 원칙

__3.2.2 데이터 일관성과 분산 트랜잭션 처리

__3.2.3 서비스 간 데이터 조회: API vs 이벤트 vs CQRS

__3.2.4 여러 요청을 집계하여 전달하는 게이트웨이 애그리게이션

3.3 서비스 통신 패턴의 이해

__3.3.1 동기식 통신과 비동기식 통신

__3.3.2 활용 시나리오와 장단점 비교

__3.3.3 전자상거래 예시: 주문 처리 흐름

3.4 마이크로서비스 설계 시 고려사항

__3.4.1 서비스 경계 정의 전략

__3.4.2 API 계약 우선 설계

__3.4.3 인프라 및 데브옵스 관점 고려사항

__3.4.4 보안과 장애 복원력 설계 원칙

__3.4.5 스프링 클라우드 구성 요소 도입 시 고려사항

3.5 마이크로서비스 전환 시 도전 과제

__3.5.1 조직 구조 변화와 데브옵스 문화 도입

__3.5.2 통합 테스트 및 품질 관리의 복잡성

__3.5.3 네트워크 환경에서의 예측 불가능성

__3.5.4 서비스 스프롤과 문서화/버전 관리

3.6 요약

 

4장 서비스 디스커버리

4.1 마이크로서비스와 서비스 디스커버리

__4.1.1 서비스 레지스트리 개념

__4.1.2 서비스 레지스트리의 역할

4.2 스프링 클라우드 넷플릭스 Eureka

__4.2.1 Eureka 서버의 특징

__4.2.2 Eureka 서버 구현하고 설정하기

__4.2.3 Eureka 클라이언트(마이크로서비스) 설정하기

__4.2.4 Eureka와 스프링 클라우드 구성 요약

4.3 다른 서비스 디스커버리 솔루션들과의 비교

__4.3.1 HashiCorp Consul 150

__4.3.2 Apache ZooKeeper 159

__4.3.3 쿠버네티스 DNS 기반 서비스 디스커버리

__4.3.4 Eureka, Consul, ZooKeeper, 쿠버네티스의 비교

4.4 요약

 

5장 API 게이트웨이

5.1 API 게이트웨이의 개념과 필요성

5.2 API 게이트웨이의 주요 역할

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

5.4 스프링 클라우드 게이트웨이의 아키텍처와 동작 원리

5.5 스프링 클라우드 게이트웨이 설정 구성

__5.5.1 API 게이트웨이 애플리케이션 생성하기

__5.5.2 스프링 클라우드 게이트웨이의 라우트 설정하기

__5.5.3 다양한 프레디킷 사용

__5.5.4 게이트웨이 필터 설정하기

__5.5.5 서비스 디스커버리 연동 및 부하 분산

5.6 인증 필터와 로깅 필터(사용자 정의 필터 구성)

__5.6.1 인증 필터 구성

__5.6.2 로깅 필터 구성

__5.6.3 필터 구성 요약

5.7 요약

 

6장 전자상거래 애플리케이션

6.1 전자상거래 애플리케이션의 마이크로서비스 구성

6.2 인프라스트럭처 컴포넌트: 서비스 디스커버리, API 게이트웨이, 컨피그 서버

__6.2.1 서비스 디스커버리 서버

__6.2.2 API 게이트웨이

__6.2.3 컨피그 서버

6.3 마이크로서비스 간 협업: 시나리오 흐름 예시

6.4 REST API 설계 및 예시

__6.4.1 상품 서비스 API(product-service)

__6.4.2 주문 서비스 API(order-service)

__6.4.3 결제 서비스 API(payment-service)

6.5 서비스별 설정과 독립 실행

__6.5.1 상품 서비스 설정

__6.5.2 주문 서비스 설정

__6.5.3 결제 서비스 설정

6.6 서비스 디스커버리 설정

6.7 API 게이트웨이 서비스 설정

6.8 전체 아키텍처 흐름도

6.9 마이크로서비스 프로젝트 구조와 주요 코드

__6.9.1 상품 서비스 컨트롤러 예시

__6.9.2 주문 서비스: 다른 마이크로서비스 호출

__6.9.3 컨피그 서버와 게이트웨이 등 나머지 구성

6.10 전체 서비스 동작 확인하기

6.11 요약

 

7장 중앙화된 설정 관리

7.1 스프링 클라우드 컨피그 서버

__7.1.1 필요성 및 등장 배경

__7.1.2 스프링 클라우드 컨피그의 구성 예시

__7.1.3 스프링 클라우드 컨피그 서버 구성

7.2 스프링 클라우드 컨피그 클라이언트 구성

__7.2.1 스프링 클라우드 컨피그 클라이언트 구성하기

7.3 설정 변경 반영 전략

__7.3.1 애플리케이션 재시작

__7.3.2 액추에이터를 통한 수동 리프레시 - /actuator/refresh

__7.3.3 스프링 클라우드 버스를 통한 자동 갱신

__7.3.4 액추에이터를 이용한 설정 정보 리프레시

7.4 마무리 및 요약

 

8장 스프링 클라우드 버스를 이용한 분산 이벤트 전파

8.1 설정 동기화의 필요성

8.2 스프링 클라우드 버스란

8.3 RabbitMQ로 스프링 클라우드 버스 환경 설정하기

__8.3.1 RabbitMQ 설치하고 실행하기

__8.3.2 RabbitMQ 연결 테스트

8.4 스프링 클라우드 버스 설정하기

__8.4.1 스프링 클라우드 버스 설정

8.5 스프링 클라우드 버스를 통한 구성 갱신 적용하기

__8.5.1 설정 정보 수정하기

__8.5.2 스프링 클라우드 버스를 통한 브로드캐스트 트리거

__8.5.3 변경된 설정 정보 확인

8.6 RabbitMQ vs Kafka

8.7 스프링 클라우드 버스 사용을 위한 아키텍처

__8.7.1 구성 변경 메시지 흐름

__8.7.2 브로드캐스트 범위 제한(선택적 갱신)

8.8 장점과 고려사항

8.9 요약

 

9장 컨피그 서버를 이용한 암호화 처리

9.1 스프링 클라우드 컨피그의 암호화 아키텍처

9.2 대칭 키 암호화 적용하기(encrypt.key 속성 사용)

__9.2.1 대칭 키 방식을 이용한 암호화 처리

__9.2.2 대칭 키 암호화 데이터 설정하기

__9.2.3 대칭 키 암호화 데이터 사용하기

9.3 비대칭 키(RSA) 암호화 적용하기

__9.3.1 RSA 키 쌍 및 키스토어 생성하기

__9.3.2 컨피그 서버에 RSA 키스토어 설정하기

__9.3.3 RSA를 이용한 암호화/복호화 과정

9.4 /encrypt 및 /decrypt 엔드포인트 활용하기

__9.4.1 /encrypt 사용 예시(cURL)

__9.4.2 /decrypt 사용 예시(cURL)

__9.4.3 YAML vs Properties 파일 저장 시 유의사항

9.5 자주 발생하는 오류와 문제 해결

__9.5.1 복호화 키 누락 또는 불일치

__9.5.2 {cipher} 암호문이 평문으로 노출되는 문제

__9.5.3 Illegal key size 등 암호화 관련 예외

__9.5.4 기존 암호문이 새 키로 복호화되지 않는 문제

__9.5.5 그 외 고려해야 할 오류들

9.6 암호화 엔드포인트 보안

__9.6.1 컨피그 서버에 스프링 시큐리티 적용하기

__9.6.2 엔드포인트별 권한 제어

9.7 요약

__9.7.1 대칭 vs 비대칭 암호화 방식 선택 가이드

__9.7.2 키 관리 및 교체

__9.7.3 CI/CD와 자동 암호화

__9.7.4 기타 주의 사항

 

10장 마이크로서비스 간 통신

10.1 동기 통신의 개요 및 동작 흐름

10.2 REST API와 RESTful API

10.3 RestTemplate을 사용한 REST API 호출

__10.3.1 RestTemplate 빈 생성하기

__10.3.2 RestTemplate으로 주문 서비스 호출하기

10.4 OpenFeign을 사용한 REST API 호출

__10.4.1 페인 클라이언트 사용 순서

__10.4.2 OpenFeign을 이용한 REST API 호출

__10.4.3 사용자 등록하고 로그인하기

__10.4.4 OpenFeign을 이용한 REST API 호출하기

__10.4.5 페인 클라이언트에서의 오류 처리 방법

__10.4.6 오류 디코더를 사용한 예외 처리 실습

10.5 스프링 클라우드 Eureka를 통한 서비스 디스커버리 통합

10.6 RESTful API 설계와 예시

__10.6.1 RESTful API 설계 주요 원칙

__10.6.2 예제 API 설계

10.7 기타 서비스 통신 기술

__10.7.1 gRPC

__10.7.2 GraphQL

__10.7.3 웹소켓

10.8 동기 통신에서의 고려사항

10.9 요약

 

11장 비동기 데이터 처리

11.1 스프링에서의 비동기 처리 방법

11.2 Kafka 기반 비동기 메시징 처리

11.3 Spring Kafka 연동 실습

__11.3.1 프로젝트 설정하고 의존성 추가하기

__11.3.2 주문 서비스 – Kafka 프로듀서 구현하기

__11.3.3 상품 서비스 – Kafka 컨슈머 구현 준비하기

__11.3.4 Kafka 컨슈머 구현하기

__11.3.5 비동기 처리를 활용한 주문하기

11.4 비동기 통신의 장단점

11.5 요약 및 마무리

 

12장 EDA를 위한 Kafka 활용

12.1 MSA 통신의 진화와 EDA의 등장 배경

__12.1.1 동기식 통신의 한계와 문제점

__12.1.2 이벤트 주도 아키텍처란?

12.2 Spring Kafka를 이용한 EDA 구현하기

__12.2.1 프로젝트 설정 및 환경

__12.2.2 EDA를 위한 Kafka 프로듀서 구현하기

__12.2.3 EDA를 위한 Kafka 컨슈머 구현하기

__12.2.4 이벤트 흐름도

12.3 Kafka 기반 EDA의 핵심 설계 전략

__12.3.1 메시지 순서 보장의 메커니즘

__12.3.2 이벤트 재처리 전략

__12.3.3 장애 대비 설계 전략

__12.3.4 이벤트 스키마 설계 및 버전 관리

12.4 EDA 확장 패턴

__12.4.1 CQRS 패턴

__12.4.2 이벤트 소싱 패턴

12.5 EDA 도입 전략

__12.5.1 EDA의 장점

__12.5.2 EDA의 단점/한계

__12.5.3 도입 전략 및 베스트 프랙티스

12.6 요약 및 핵심 정리

 

13장 마이크로서비스 분산 트랜잭션 관리

13.1 분산 트랜잭션과 2PC의 한계

13.2 사가 패턴

__13.2.1 사가 구현 방식

__13.2.2 오케스트레이션 기반의 사가

__13.2.3 코레오그래피 기반의 사가

13.3 스프링 부트를 이용한 사가 구현

__13.3.1 오케스트레이션 기반 사가

__13.3.2 주문 서비스 구현 실습

__13.3.3 결제 서비스 구현 실습

__13.3.4 상품 서비스 구현 실습

__13.3.5 코레오그래피 기반 사가 구현하기

__13.3.6 주문 서비스 구현 실습

__13.3.7 결제 서비스 구현 실습

__13.3.8 상품 서비스 구현 실습

__13.3.9 보상 트랜잭션 구현하기

13.4 트랜잭션 실패 시 예외 처리 및 사가 복구 전략

__13.4.1 오케스트레이션 방식의 예외 처리

__13.4.2 코레오그래피 방식의 예외 처리

__13.4.3 사가 복구 전략

13.5 사가 적용을 위한 추가 고려사항

__13.5.1 CQRS와 사가 병행 적용

__13.5.2 로깅과 트랜잭션 트레이싱(분산 추적)

13.6 요약

 

14장 장애 처리와 분산 추적

14.1 마이크로서비스 환경의 장애 유형과 원인

__14.1.1 마이크로서비스 장애 유형

__14.1.2 마이크로서비스가 장애에 취약한 이유

__14.1.3 마이크로서비스 장애 전파 시나리오

14.2 회복성 패턴과 Resilience4j 개요

__14.2.1 회로 차단기

__14.2.2 재시도

__14.2.3 속도 제한기

__14.2.4 타임아웃

__14.2.5 격리 처리

__14.2.6 대체 처리

14.3 서비스 호출 장애 발생 시 Resilience4j 적용 예제

__14.3.1 장애 대응 패턴 구현하기

__14.3.2 장애 상황에서 동작 확인하기

__14.3.3 격리 처리와 대체 처리 구현하기

14.4 분산 추적

__14.4.1 분산 추적 도구

__14.4.2 Micrometer Tracing+OpenTelemetry 실습

__14.4.3 Trace Context 전파 실습

__14.4.4 장애 메트릭 모니터링

14.5 장애 대응 전략 및 마무리

 

15장 모니터링과 로깅

15.1 관찰 가능성: 메트릭, 로그, 트레이스

15.2 서비스 메트릭 수집 및 시각화

__15.2.1 스프링 부트 액추에이터와 Micrometer를 활용한 메트릭 노출

__15.2.2 Micrometer + Prometheus를 이용한 메트릭 모니터링 구성하기

__15.2.3 커스텀 메트릭 추가하기

__15.2.4 Prometheus를 활용한 메트릭 수집(Pull 방식 시계열 DB)

__15.2.5 Prometheus 설치하기

__15.2.6 Grafana를 통한 메트릭 시각화 및 대시보드 구성하기

__15.2.7 Grafana 대시보드 생성하기

__15.2.8 Grafana.com/dashboards에 등록된 대시보드 가져오기

15.3 스프링 부트 어드민

__15.3.1 어드민 서버 실행하기

__15.3.2 어드민 클라이언트 설정하기

15.4 로그 전략 수립

__15.4.1 마이크로서비스를 위한 로그 포맷 표준화

__15.4.2 마이크로서비스에 logback-spring.xml 파일 추가

__15.4.3 주요 로그 정보: Trace ID 및 공통 필드 포함

__15.4.4 로그 수집 파이프라인 구축하기

__15.4.5 Filebeat 실행하기

__15.4.6 로그 수집 에이전트 배포하기

__15.4.7 로그 중앙화와 시각화: Elasticsearch, Kibana

__15.4.8 Kibana Data View 생성하기

__15.4.9 Query DSL 사용하기

15.5 운영 환경 고려사항

15.6 모니터링/로깅 아키텍처의 장단점

15.7 요약

 

16장 애플리케이션 배포 전략

16.1 배포 전략의 중요성과 구조

__16.1.1 클라우드 모델의 변화와 MSA 배포 전략

__16.1.2 컨테이너 오케스트레이션

__16.1.3 스프링 클라우드 핵심 컴포넌트의 현대적 역할 변화

16.2 무중단 배포 전략

__16.2.1 블루/그린 배포 전략

__16.2.2 카나리 배포 전략

16.3 스프링 클라우드 주요 컴포넌트의 고가용성 구성 및 실습

__16.3.1 Eureka 서버의 HA 구성

__16.3.2 멀티 Eureka 서버 구성하기 실습

__16.3.3 스프링 클라우드 게이트웨이의 확장과 로드 밸런싱

__16.3.4 컨피그 서버의 HA 구성

16.4 도커 컨테이너 기반 배포

__16.4.1 스프링 부트 컨테이너 이미지 최적화 전략

__16.4.2 최적화된 도커 파일 예시

__16.4.3 도커 컨테이너 이미지 생성하기

__16.4.4 도커 컴포즈를 이용한 전체 MSA 실행 환경 구성하기

__16.4.5 도커 컴포즈 실행

16.5 쿠버네티스 환경에서의 배포 개요

__16.5.1 서비스 디스커버리: 쿠버네티스의 서비스 vs Eureka 서버

__16.5.2 설정 관리: 컨피그 서버 vs 컨피그맵/시크릿

__16.5.3 서비스 메시의 활용

__16.6 지속적 통합(CI)과 지속적 배포(CD)

16.7 데브옵스 문화와 배포 전략

16.8 요약

 

부록 A 실습 환경 설정

A.1 IDE 설정하기

__A.1.1 JDK 설치하기

__A.1.2 IntelliJ IDEA 설치하기

A.2 도커 데스크톱 설치

A.3 쿠버네티스 실행해 보기

A.4 비주얼 스튜디오 코드 설치

 

 

ㆍ지은이 이도원
소개
엔제이원컴퍼니 대표이자 동국대학교 국제정보대학원 정보보호학과 대우 교수로, 일본 JP Morgan Chase AMJ와 삼성 SDS에서 실무 경험을 쌓았다. 주요 관심 분야는 마이크로서비스 아키텍처(MSA), 클라우드 네이티브, 대화형 AI다. AI 챗봇과 지능형 어시스턴트 구축 프로젝트에서 솔루션 아키텍트(SA)와 프로젝트 매니저(PM)를 맡아 왔다. 삼성전자, LG전자, SK AX, KT DS, 금융결제원 등에서 MSA와 AI를 강의하며 실무 경험과 기술 지식을 나누고 있다.

필요한 자료를 선택하세요.

추천도서