본문 바로가기
2. 책 & 영화 리뷰

[도서] 마이크로서비스 아키텍처 - 우메쉬 램 샤르마

by soosun 2022. 9. 25.

ㅇ 책의 주요 내용

- 이 책은 MSA 이전 프로젝트를 하고 있는 저자가,

MSA개념에서 다른 아키텍처와의 비교, 장단점, 기본 구조, 통신, 보안,데이터 모델, 테스트와 베포, 모니터링과 문제해결 방안 등 MSA 프로젝트를 진행하기 위해 필요한 부분들을 설명해주고 있다.

 

- 책 전반에 걸쳐 '신용 리스크 엔진'이라는 Java기반의 샘플 프로젝트를 이용하여 MSA 적용 과정을 설명한다.

- 각 챕터는 "개념설명 -> 필요항목들 정의 -> 샘플 소스 설명 -> 내용 요약" 등의 절차로 구성되어 있다.

- 기존 시스템의 MSA 전환, 장애와 모티터링, 문제해결 등의 실무적인 내용이 잘 정리되어 있으나, 아주 디테일한 부분은 약간 부족하다.

=> 페이지는(약 290 페이지) 조금 많으나 샘플코드와 간략한 단락들로 구성되어 상대적으로 부담이 많지는 않은 편으로,

      난이도 있는 내용보다는 MSA 프로젝트 진행을 간략하게 경험해보기에 좋은 책인 것 같다.  

 

< 목 차 >

1장. 마이크로서비스 아키텍처 소개
__일반적인 마이크로서비스 아키텍처
__마이크로서비스 아키텍처의 특성
____문제 정의
____해결 방안
__성공적인 마이크로서비스 아키텍처에 대한 어려움
____로깅을 통한 디버깅
____마이크로서비스 모니터링
____공통 라이브러리
____서비스 간 메시징
____마이크로서비스 배치와 버전 관리
__마이크로서비스의 미래
____서버리스 아키텍처
____PaaS로서의 마이크로서비스
__마이크로서비스 아키텍처는 전통적인 아키텍처보다 우세한 것인가?
__마이크로서비스가 SOA로 보이지 않는다?
__대규모 비즈니스 도메인을 마이크로서비스 컴포넌트로 세분하기
____비즈니스 중심으로 마이크로서비스 컴포넌트 구성하기
__마이크로서비스를 도입해야 할까 도입하지 말아야 할까
____조직 도입
____데브옵스 경험
____기존 데이터베이스 모델 분석
____자동화 및 CI/CD
____통합
____보안
____성공적인 전환 사례
__예제 프로젝트(신용 리스크 엔진)
__스프링
__스프링 부트
____스프링 부트로 쉽게 할 수 있다!
__요약


2장. 마이크로서비스 컴포넌트 정의
__마이크로서비스의 정의
__서비스 디스커버리와 역할
____DNS
____디스커버리 서비스 필요
____서비스 디스커버리 패턴의 예
____아키텍처 전반에 걸친 외부 설정
__API 게이트웨이 및 필요성
____인증
____다른 프로토콜
____로드 밸런싱
____디스패치 요청(서비스 디스커버리 포함)
____응답 변환
____서킷 브레이커
____API 게이트웨이의 장단점
__API 게이트웨이 예제
____책 전반에 걸쳐 사용된 예제 애플리케이션
__사용자 등록 마이크로서비스 개발
____서버 설정
__요약


3장. 마이크로서비스와 엔드포인트 간의 통신
__마이크로서비스는 어떻게 통신하는가
__오케스트레이션 대 커리어그래피
____오케스트레이션
____커리어그래피
__동기 대 비동기 통신
____동기 통신
____비동기 통신
____금융 서비스
__요약


4장. 마이크로서비스 엔드포인트 보안
__마이크로서비스의 보안 문제
____기술 스택 또는 레거시 코드의 혼합
____인증 및 권한 부여(접근 제어)
____토큰 기반 보안
____보안 책임
____오케스트레이션 스타일에 대한 두려움
____서비스 간의 통신
__OpenID 및 OAuth 2.0과 함께 JWT 사용
____OpenID
____OAuth 2.0
____JWT
____예제 애플리케이션
__요약


5장. 효과적인 데이터 모델 만들기
__데이터와 모델링
____기존 데이터 모델과 비교
__모놀리스 유형 아키텍처의 데이터 모델
__SOA의 데이터 모델
__마이크로서비스 아키텍처의 데이터 모델
____각 마이크로서비스에 제한된 테이블 접근 권한을 부여하는 방법
____마이크로서비스별 데이터베이스
____사가 패턴
____필요시 데이터 기술 혼용
__모놀리스에서 마이크로서비스로의 데이터 모델 전환
____도메인 주도 설계
____데이터 모델 전환 방법
__요약


6장. 마이크로서비스 테스트
__마이크로서비스를 테스트하는 목적
__단위 테스트
__통합 테스트
__컴포넌트(서비스) 테스트
__계약 테스트
____Pact
____스프링 클라우드 계약
__엔드 투 엔드 테스트
__추가 고려 사항
__요약


7장. 마이크로서비스 배포
__지속적 통합
__지속적 전달
__마이크로서비스를 위한 CI 및 CD 도구 설정
__마이크로서비스에 도커 적용하기
____도커
____도커에서의 작업 방식
____공개, 개인, 공용 이미지 저장소
____도커와 VM
____리눅스에 도커 설치하기
__오픈 소스 CI 도구를 사용해 마이크로서비스에 도커 활용하기
__요약


8장. 기존 시스템을 마이크로서비스로 진화시키기
__어디서부터 시작하나
____아키텍처 관점과 모범 사례
____데이터베이스 관점과 모범 사례
__예제 애플리케이션과 애플리케이션의 진화
____사용자 관리 서비스
____장바구니/주문 서비스
____결제 서비스
____배송/추적 서비스와 고객 지원 서비스
____추천 서비스
____스케줄러 서비스
__요약


9장. 모니터링과 확장
__마이크로서비스 시스템의 모니터링 원칙
____누가 어떻게 경고 메시지들을 봐야 하는가
____시작부터 모니터링하고 소통하기
____자동 확장과 자동 검색
____프론트 도어 모니터링
__모니터링 기능의 변화(변화하는 모습의 모니터링)
__모니터링 시 로깅 작업의 필요성
__마이크로서비스 시스템을 확장할 때 지켜야 하는 원칙
____X축
____Y축
____Z축
__확장 전 고려 사항
__마이크로서비스의 모니터링과 확장에서 실무적으로 고려해야 할 옵션
__요약


10장. 장애 해결
__마이크로서비스에서 발생하는 일반적인 문제
____성능 저하
____다른 프로그래밍 언어로부터 만들어지는 서로 다른 로깅 위치
____여러 컴포넌트 간 결합도 또는 종속성 문제
____많은 서비스를 위한 매일 배포
____성능 저하 혹은 문제들을 위한 대규모 서비스의 모니터링
____로그와 다양한 컴포넌트 간의 관계
__일반적인 문제를 해결하기 위한 기법
____성능 문제를 해결하기 위한 단계
____다른 위치와 다른 언어로 작성된 서비스에서 로깅 처리
____서비스 간의 의존성
__적극적인 데브옵스 적용
____유용한 도구 사용
____역량 있는 개발자 활용
____모니터링
__요약

 

댓글