서브메뉴

본문

실용적인 마이크로서비스 아키텍처 패턴 (스프링 부트와 스프링 클라우드를 활용한)
실용적인 마이크로서비스 아키텍처 패턴 (스프링 부트와 스프링 클라우드를 활용한)
저자 : 비닐다스 크리스투다스
출판사 : 에이콘출판
출판년 : 2023
ISBN : 9791161757629

책소개


이벤트 기반 마이크로서비스가 Axon 2 프레임워크로 구현된 CQRS 패턴으로 작동하는 방식을 배운다. 그리고 분산 트랜잭션이 마이크로서비스에 어떻게 작동하는지, 고가용성 및 확장성과 같은 비기능적 측면을 해결하기 위한 고급 아키텍처 설명으로 이어진다. Axon 프레임워크와 진정한 BASE 트랜잭션을 사용해 최대한 안전하게 자신만의 마이크로서비스 애플리케이션을 개발한다.

분산 애플리케이션을 한 단계 업그레이드하고 마이크로서비스와 관련된 참조 아키텍처가 무엇을 할 수 있는지 확인한다. 분산 컴퓨팅 아키텍처 환경을 보여주는 것으로 시작해 마이크로서비스 아키텍처에 대한 심층적인 관점을 제공한다. 그런 다음 마이크로서비스의 필수 패턴인 CQRS를 사용하고 분산 메시징이 작동하는 방식을 확인한다.

목차


1장. 분산 컴퓨팅 아키텍처 환경

__시스템 아키텍처
____메인프레임 아키텍처
____클라이언트-서버 아키텍처
____3계층 아키텍처
____N계층 아키텍처
__네트워크 아키텍처
____지점 간
____허브와 스포크
____엔터프라이즈 메시지 버스
____엔터프라이즈 서비스 버스
__소프트웨어 아키텍처
____애플리케이션 계층
____애플리케이션 레이어
__애플리케이션 아키텍처 환경
____일반적인 애플리케이션 아키텍처
____일반적인 배포 아키텍처
__확장성 딜레마
____애플리케이션 상태
____의존성의 어려움
____모놀리스 애플리케이션
__확장 가능한 아키텍처
____상태 비저장 설계
____분할과 정복
__요약

2장. 마이크로서비스 소개

__모듈식 모놀리스
____모듈식 조직
____모놀리스 애플리케이션
____모놀리스 애플리케이션 경계
____모놀리스 모듈 간 의존성
____확장성 딜레마
____모놀리스 기술 제약
__마이크로서비스 소개
____독립 모듈
____모듈 간 통신
____마이크로서비스
__요약

3장. 심층 마이크로서비스

__마이크로서비스의 겉모습
____전자상거래 마이크로서비스
____무계층, 분산형
____마이크로모놀리스
____자체 포함 마이크로서비스
____마이크로서비스와 SOA의 유사성
____메시지 기반 마이크로서비스
__고급 마이크로서비스 기능
____마이크로서비스 안전장치
____마이크로서비스 확장성
____마이크로서비스 가변성
__요약

4장. 마이크로서비스 아키텍처

__디지털 비즈니스를 위한 아키텍처
____디지털 시대
____디지털 앱
____메시 앱과 서비스 아키텍처
__마이크로서비스에 대한 컨텍스트
____서비스의 세분성
____게이트웨이
____도메인 중심 파티션
____클라우드 네이티브 전환
____웹 스케일 컴퓨팅
__없어서는 안 될 클라우드
____클라우드 아키텍처 모델
____클라우드 서비스 모델
____SaaS 성숙도 모델
____가상화
____가상화 서버와 컨테이너
__마이크로서비스 아키텍처
____아키텍처의 역전
____내부 아키텍처 관점
____외부 아키텍처 관점
____MASA의 큰 그림
__요약

5장. 마이크로서비스를 위한 필수 패턴

__서비스의 직교 스케일아웃
____쓰기 대 읽기 트랜잭션
____조회 후 예약 과제
__CQRS: 명령과 조회 책임 분리
____전통적 방식과 CQRS 기반 소프트웨어 시스템
____CQRS의 명명법
__이벤트 기반 CQRS 아키텍처
____이벤트 기반 CQRS 설계를 위한 메타모델
____이벤트를 사용한 명령 조회 분리
____CQRS 기반 마이크로서비스의 확장
__요약

6장. 분산 메시징

__메시징의 복원력
____메시지 지속성
____마이크로서비스의 다양한 운영 특성을 위한 설계
____사슬의 강도는 가장 약한 고리에 달렸다
__동기식 또는 비동기식
____마이크로서비스 간의 동기식 상호작용
____마이크로서비스 간의 비동기 상호작용
__단일 노드 RabbitMQ 브로커로 메시지 송수신
____RabbitMQ 메시지 발송자
____RabbitMQ 메시지 수신자
____RabbitMQ 예제 빌드와 실행
__스프링 AMQP를 사용해 RabbitMQ에 메시지 송수신
____스프링 AMQP 메시지 리스너
____스프링 AMQP 메시지 생산자
____스프링 AMQP RabbitMQ 예제 빌드와 실행
__다중 노드 RabbitMQ 클러스터로 메시지 송수신
__소비자와 생산자 연결
____상관관계 ID
____대량의 부하를 동시에 처리하게 커스텀 네트워크 서버 코딩
____동시 전시 게임
____메시지 상관관계와 마이크로서비스
__요약

7장. 스프링 부트

__스프링 부트와 몽고DB를 사용해 데이터 작업 수행
____스프링 이니셜라이저를 사용해 스프링 부트 프로젝트 템플릿 생성
____엔티티 도메인 설계와 코딩
____리포지터리 코딩
____실행 가능 부트 애플리케이션 코딩
____스프링 부트 애플리케이션 빌드와 패키징
____스프링 부트 애플리케이션 실행과 테스트
__스프링 HAL 브라우저, HATEOAS를 사용한 개발
____HAL 브라우저
____RestTemplate을 사용한 HAL REST 엔드포인트 테스트
__RESTful 웹 서비스 개발
____REST 기초
____CRUD 리소스에 대한 HTTP 메서드
____스프링 부트에서 REST 컨트롤러 개발
____RestTemplate을 사용한 REST 컨트롤러 테스트
__요약

8장. 스프링 클라우드

__마이크로서비스 아키텍처를 위한 스프링 클라우드
__스프링 클라우드의 페인 클라이언트 사용
____페인 클라이언트 시나리오 설계
____페인 클라이언트 사용 코드
____페인 클라이언트 빌드와 테스트
__히스트릭스 폴백
____히스트릭스 폴백 시나리오 설계
____히스트릭스 폴백 시나리오 코딩
____히스트릭스 폴백 시나리오 빌드와 테스트
__히스트릭스 대시보드
____히스트릭스 폴백 메서드 재설계
____히스트릭스의 새로운 설계로 코딩
____히스트릭스 폴백 시나리오 빌드와 테스트
____히스트릭스 대시보드 검사
__리본: 클라이언트 측 로드밸런서
____리본 클라이언트 시나리오 설계
____리본 클라이언트를 사용한 코드
____리본 클라이언트 빌드와 테스트
__유레카: 서비스 레지스트리
____유레카 사용 시나리오 설계
____유레카 사용 코드
____유레카 예제 빌드와 테스트
____부트스트랩 서버
__주울: API 게이트웨이
____부트스트랩 URL
____주울 지원 시나리오 설계
____주울 사용 코드
____주울 예제 빌드와 테스트
__구성 서버
____구성 시나리오 설계
____구성 서버 사용 코드
____구성 서버 빌드와 테스트
__요약

9장. 고가용성과 마이크로서비스

__고가용성
____고가용성 측정
____고가용성 기준 설정
__고가용성 분해
____DNS 이중화
____DNS 부하 분산
____ISP 이중화
____애플리케이션 아키텍처 이중화
____데이터와 스토리지 이중화
__마이크로서비스의 고가용성
__스프링 클라우드 마이크로서비스 고가용성 시연
____마이크로서비스 고가용성 시나리오 설계
____마이크로서비스의 고가용성을 보여주는 코드
____마이크로서비스 고가용성 빌드와 테스트
__요약

10장. 마이크로서비스 성능

__외부 아키텍처를 통한 커뮤니케이션
__비동기 HTTP
____HTTP의 부족한 부분과 좋지 않은 부분
____비동기 HTTP 처리를 위한 API
____마이크로서비스 간 비동기 HTTP 시연 시나리오 설계
____스프링 부트에서 비동기 HTTP를 사용한 코드
____마이크로서비스 간 비동기 HTTP 빌드와 테스트
__스프링 부트 마이크로서비스 간 구글 프로토콜 버퍼
____프로토콜 버퍼
____마이크로서비스 간의 프로토콜 버퍼를 시연하는 시나리오
____스프링 부트에서 프로토콜 버퍼를 사용하는 코드
____마이크로서비스 간 프로토콜 버퍼 빌드와 테스트
____프로토콜 버퍼 사용의 영향
__요약

11장. 이벤트와 결과적 일관성

__이벤트 기반 아키텍처
____이벤트
____EDA 구성 요소
__마이크로서비스와 이벤트 기반 아키텍처
____마이크로서비스의 진화
____결과적 일관성과 마이크로서비스
__마이크로서비스와 CAP 정리
____스케일 큐브
____CAP 정리
____BASE 시스템
____CAP 피라미드
__요약

12장. CQRS 아키텍처를 위한 Axon

__CQRS 프레임워크 Axon 소개
____Axon은 무엇일까?
____Axon을 사용할 수 있는 곳
____Axon을 실행할 때 필요한 것
__동일한 JVM에서 명령과 이벤트 처리
____예제 시나리오
____예제 시나리오 코딩
____예제 시나리오 빌드와 테스트
__분산 명령과 이벤트 처리
____예제 시나리오
____예제 시나리오 코딩
____예제 시나리오 빌드와 테스트
__요약

13장. 분산 트랜잭션

__두 장군의 역설
____두 장군의 역설 설명
____솔루션 접근법
____장군으로서의 마이크로서비스
____TCP/IP, 장군 사이의 계곡
__트랜잭션
____트랜잭션의 핵심에 있는 하드웨어 지침
____트랜잭션의 ACID
____트랜잭션 모델
____EJB와 스프링의 트랜잭션 속성 비교
____트랜잭션 격리 메커니즘
____트랜잭션 격리 수준
____트랜잭션 동시성
____트랜잭션 격리 제어 방법
__엔터프라이즈 트랜잭션 범주
____ACID 트랜잭션
____BASE = ACID를 조각으로 나누기
____BASE 트랜잭션
____완화된 BASE 트랜잭션
__ACID와 BASE 비교
__분산 트랜잭션 재검토
____로컬 트랜잭션
____분산 트랜잭션
____자바에서 분산 트랜잭션
__MySQL, ActiveMQ, Derby, 아토미코스를 사용한 분산 트랜잭션 예제
____예제 시나리오
____예제 시나리오 코딩
____예제의 정상 흐름 빌드와 테스트
____트랜잭션 롤백 시나리오 테스트
____완화된 BASE 이상 시뮬레이션
____일반적인 메시징 함정
__요약

14장 트랜잭션과 마이크로서비스

__파티셔닝과 마이크로서비스
____마이크로서비스와 분산 데이터
____멱등성 운영과 마이크로서비스
____글로벌 대 로컬 리소스
__분산 트랜잭션 예제: 더 적은 ACID로 리팩토링
____완화된 BASE를 향해: 메시지 중복과 비순차적 메시지 처리를 위한 재설계
____완화된 예제 시나리오 코딩
____메시지 중복 전송 시나리오 빌드와 테스트
____메시지 중복 소비 시나리오 테스트
____메시지 수신 순서가 맞지 않는 시나리오 테스트
__트랜잭션 옵션 선택
____메시지 대기열, 미리보기, 클라이언트 확인
__요약

15장. 마이크로서비스에 최적화된 트랜잭션

__마이크로서비스 트랜잭션을 위한 사가
____사가 설명
____분산형 사가
__Axon을 사용한 사가 예제 코드
____사가 예제 시나리오 설계
____사가 예제 시나리오 코딩
____사가 예제 빌드와 테스트
__요약

16장. 고급 고가용성과 확장성

__오라클 DB를 참고로 하는 고가용성과 확장성 템플릿
____단순한 초기 아키텍처
____단순하고 확장된 아키텍처
____데이터베이스 병목 현상을 해결하기 위한 아키텍처
____효율성 향상을 위한 독립적인 읽기와 쓰기 확장성
____웹 확장성 아키텍처를 위한 샤딩
____좋은 아키텍처지만 더 좋고 더 단순한 것이 필요
__Axon의 고가용성과 확장 가능한 CQRS 예제
____예제 시나리오 설계
____예제 시나리오 코딩
____고가용성 시나리오 빌드와 테스트
__Axon CQRS용 쓰기 노드에서 에그리게이트 루트 엔티티 확장
____동일한 엔티티의 복제 요청을 동시에 수정
____낙관적 잠금
____Axon의 충돌 탐지와 해결
__Axon CQRS에서 낙관적 잠금을 보여주는 예제
____예제 시나리오 설계
____예제 시나리오 코딩
____예제 시나리오 빌드와 테스트
__요약

17장. Axon CQRS 마이크로서비스 전자상거래

__전통적인 전자상거래 애플리케이션 복습
____전자상거래 비즈니스 요약
____전자상거래 아키텍처 복습
__전자상거래 마이크로서비스 애플리케이션
____마이크로서비스 기반 전자상거래 아키텍처를 위한 논리적 아키텍처
____BASE 내의 ACID
____전자상거래 마이크로서비스의 설계
____마이크로서비스 기반 전자상거래 아키텍처를 위한 기술 아키텍처
__전자상거래 마이크로서비스 애플리케이션 설계와 코딩
____상품 카테고리와 상품 나열
____재고 데이터와 함께 상품 세부 정보 나열
____장바구니에 상품 추가
____새 주문 생성
____주문 취소
____받은 주문 배송
____주문 배달
____배송된 주문에 대한 배달 실패
____주문 이력 보기 검색
__전자상거래 마이크로서비스 인프라 설계와 코딩
____구성 서버
____서비스 레지스트리
____API 게이트웨이
__전자상거래 마이크로서비스 애플리케이션 구성
__전자상거래 마이크로서비스 애플리케이션을 위한 인프라 환경 설정
__전자상거래 마이크로서비스 애플리케이션 구축과 실행
__전자상거래 마이크로서비스 사용 사례 테스트
____상품 카테고리와 상품 세부 정보보기
____장바구니에 담기
____사용자 프로필 생성
____새 주문 생성
____새 주문 배송
____배송 주문을 성공적으로 배달
____배송 주문에 대한 배달 실패
____새 주문 취소
____재고 원복
__요약

18장. 마이크로서비스 보안

__OAuth 2.0과 마이크로서비스
____OAuth 2.0
____OAuth 2.0의 역할
____OAuth 2.0 클라이언트와 사용자 에이전트
____신뢰할 수 있는 클라이언트와 신뢰할 수 없는 클라이언트
____인증 코드 부여 유형
__확장 가능한 API 호출을 위한 토큰
____세션 ID
____토큰
____JSON 웹 토큰(JWT)
__예제 마이크로서비스 애플리케이션에 대한 보안 설계
____마이크로서비스를 위한 보안 아키텍처
____비대칭 서명과 참조 토큰
__마이크로서비스 전자상거래 애플리케이션에 대한 코드 보안
____웹 앱이 보안을 처리하게 설정
____OAuth 클라이언트로서의 API 게이트웨이 주울
____권한 부여 서버
____리소스 서버
__전자상거래 마이크로서비스 애플리케이션 설정
____애플리케이션 구성
____환경 인프라 설정
____애플리케이션 빌드와 실행
____애플리케이션 테스트
__요약

19장. Axon 마이크로서비스와 BASE 트랜잭션

__Axon 3을 사용해 동일한 JVM에서 명령과 이벤트 처리
____예제 시나리오 설계
____예제 시나리오 코딩
____예제 시나리오 빌드와 테스트
__Axon 3을 사용한 분산 명령과 이벤트 처리
____스프링 클라우드를 사용한 분산 명령 버스 설계
____예제 시나리오 코딩
____예제 시나리오 빌드와 테스트
__BASE 트랜잭션을 사용하는 Axon 3 CQRS 전자상거래 마이크로서비스
____주문과 재고 도메인 사이의 ACID 매듭 제거
____주문과 재고 도메인을 별도의 마이크로서비스로 분할
____결정론적 결과적 일관성을 위한 사가
____전자상거래 마이크로서비스 애플리케이션 구성
____전자상거래 마이크로서비스 애플리케이션 구축과 실행
__Axon 4를 사용해 동일한 JVM에서 명령과 이벤트 처리
__Axon 4를 사용한 분산 명령과 이벤트 처리
__요약

부록A 몽고DB 설치, 구성, 실행
__몽고DB 소개
____몽고DB 문서
__몽고DB 설치와 구성
____몽고DB 커뮤니티 에디션 다운로드
____몽고DB 설치와 구성
__몽고DB 사용 시작
____몽고DB 시작과 연결
____몽고DB로 기본 데이터 조작 실행
__Robomongo: 몽고DB용 GUI
____Robomongo 커뮤니티 에디션 다운로드와 설치
____Robomongo를 사용한 몽고DB 시작과 연결
____몽고DB로 기본 데이터 조작 실행
__요약

부록B RabbitMQ 클러스터 설치, 구성, 실행
__RabbitMQ 소개
__RabbitMQ 설정
____Erlang 다운로드와 설치
____RabbitMQ 설치와 구성
__RabbitMQ 사용 시작
____관리 플러그인 활성화
____RabbitMQ 서버 시작
____RabbitMQ 관리 콘솔보기
__RabbitMQ 클러스터 설정
____RabbitMQ 클러스터 구성
____RabbitMQ 클러스터 불러오기
____RabbitMQ 클러스터 다시 시작
__클라이언트에서 RabbitMQ 클러스터에 연결

QuickMenu