실용적인 마이크로서비스 아키텍처 패턴 [스프링 부트와 스프링 클라우드를 활용한]
- 원서명Practical Microservices Architectural Patterns: Event-Based Java Microservices with Spring Boot and Spring Cloud (ISBN 9781484245002)
- 지은이비닐다스 크리스투다스(Binildas Christudas)
- 옮긴이황주필
- ISBN : 9791161757629
- 50,000원
- 2023년 06월 30일 펴냄
- 페이퍼백 | 1,004쪽 | 188*235mm
- 시리즈 : 소프트웨어 아키텍처
책 소개
소스 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/Apress/practical-microservices-architectural-patterns
요약
이벤트 기반 마이크로서비스가 Axon 2 프레임워크로 구현된 CQRS 패턴으로 작동하는 방식을 배운다. 그리고 분산 트랜잭션이 마이크로서비스에 어떻게 작동하는지, 고가용성 및 확장성과 같은 비기능적 측면을 해결하기 위한 고급 아키텍처 설명으로 이어진다. Axon 프레임워크와 진정한 BASE 트랜잭션을 사용해 최대한 안전하게 자신만의 마이크로서비스 애플리케이션을 개발한다.
분산 애플리케이션을 한 단계 업그레이드하고 마이크로서비스와 관련된 참조 아키텍처가 무엇을 할 수 있는지 확인한다. 분산 컴퓨팅 아키텍처 환경을 보여주는 것으로 시작해 마이크로서비스 아키텍처에 대한 심층적인 관점을 제공한다. 그런 다음 마이크로서비스의 필수 패턴인 CQRS를 사용하고 분산 메시징이 작동하는 방식을 확인한다.
추천의 글
이 책은 소프트웨어 엔지니어와 아키텍트의 수년간 실무 경험의 산물이 분명하다. 저자는 분산 시스템 아키텍처 영역에서 복잡한 개념적 결정을 위해 소프트웨어 엔지니어와 소프트웨어 아키텍트를 안내하는 포괄적인 책을 썼다.
각 장은 논리적 방식으로 구성돼 있어 독자는 모든 대규모 분산 시스템 프로젝트에서 제기돼야 하는 중요한 질문들을 통해 안내받을 수 있다. 특히 저자가 마이크로서비스 활용을 고려한 프로젝트에 착수하기 전에 소프트웨어 아키텍트와 소프트웨어 엔지니어가 질문해야 하는 모든 질문을 상세히 설명하며, 모놀리스 아키텍처에서 마이크로서비스 기반 아키텍처로의 전환을 설계하는 데 상당 부분을 사용한다는 점을 강조할 필요가 있다. 또한 이 책에서는 클라우드 배포와 관련된 문제도 다루며, 이는 이러한 시스템의 중요한 측면을 구성한다.
이 책에서 설명하는 흥미로우며 수준 높은 문제는 마이크로서비스의 기초부터 트랜잭션, 결과적 일관성, 클라우드 배포, CAP 정리 관련 문제에 이르는 광범위한 주제를 다룬다.
마이크로서비스와 관련된 모든 문제에 대한 지침서 역할을 할 수 있는 책으로, 마이크로서비스 기반 분산 시스템을 구현하려면 어떤 질문을 해야 할지, 이후에 취해야 할 단계는 무엇인지에 대한 단계별 매뉴얼이다.
—챠람 더스트다르(Schahram Dustdar),
IEEE 연구원, 책임자, 분산 시스템 그룹, WEIN(비엔나 기술 대학교) 기술 대학
소프트웨어 엔지니어링의 영역은 빠르게 진화한다. 기업은 시장의 신규 이민자와 법률 및 고객 기대치의 변화로 인해 지속적인 도전을 받고 있다. 스타트업은 빠르게 진화하고 성공할수록 증가하는 서비스 수요를 처리해야 한다. 이러한 ㅘ제를 해결하려면 소프트웨어를 설계하고 구축하는 방법을 철저히 검토해야 한다. 마이크로서비스 아키텍처는 이러한 요구에 직면한 시스템을 위한 좋은 기반을 제공한다.
그러나 마이크로서비스에는 고유한 과제가 있다.
비닐다스는 소프트웨어 개발 영역에서 쌓은 광범위한 실무 경험과 새로운 기술 및 아키텍처 방식에 대한 열린 마음을 결합해 훌륭한 성과를 냈다. 이 책 전반에 걸쳐 마이크로서비스 시스템과 관련된 다양한 아키텍처 패턴을 도입하는 실용적인 접근법을 취하며, 기존부터 확립되어 있던 공통 패턴과 CQRS 같은 일부 새로운 패턴을 설명한다.
마이크로서비스 여정을 시작하기를 원한다면 이 책이 당신의 여행 가이드가 되어줄 것이다.
—알라드 뷔제(Allard Buijze),
AxonIQ의 CTO겸 설립자, Axon 프레임워크 제작자
몇 년 전의 SOA가 그랬듯이, 오늘날 새로운 소식의 중심에는 마이크로서비스가 있다. 어떤 사람들은 마이크로서비스가 바로 제대로 구현된 SOA라고 말한다. 이제 무거운 WS-* 표준 대신 REST가 제공되며, ESB 대신 ActiveMQ와 같은 경량 브로커가 있다. 트랜잭션은 어떨까? 아마존과 같은 업계 거대 기업에서는 모든 마이크로서비스를 아우르는 글로벌 ACID 트랜잭션을 필수적으로 사용하지 않는다(권장하지도 않는다). 대신 요즘은 BASE와 사가에 대한 이야기뿐이다.
BASE는 모든 마이크로서비스에 걸친 거대한 ACID 트랜잭션(하나의 거대한 커밋 포함)이 아니라 시스템으로 파급되는 여러 개의 작은 ACID 트랜잭션을 의미하므로 결론적 일관성이 생긴다. 이를 위해 메시징이 중요하다.
이러한 각각의 작은 ACID 트랜잭션은 XA와 같은 입증된 기술로 제어할 수 있으므로 문제가 발생하더라도 실제로는 ACID다.
안타깝게도 BASE는 XA 지원이 부족한 최신 프레임워크나 기술/플랫폼에서 사용하는 잘못된 변명일 뿐이다. BASE 구현 방식이 핵심이며, XA가 없으면 메시지 중복 처리나 손실에 신경 쓰지 않는 한 올바르게 수행하기가 매우 어렵다.
중복은 종종 문제가 발생할 수 있으며 임시 수정으로 해결될 수 있다. 손실된 메시지는 장기적인 데이터 불일치를 제외하면 전혀 감지되지 않을 수 있기 때문에 근본 원인을 찾기가 매우 어렵다. 소비자 측뿐만 아니라 생산자 측에서도 문제가 발생할 수 있는 것이다.
BASE를 수행하는 간단하고 안전한 방법은 13장에 나와 있다. 모험심이 강하지 않다면 이러한 방식을 고수하는 것이 좋다. 금융 서비스에 종사하면 XA에서 제공하는 강력한 보증과 더불어 코드 단순성을 무료로 제공하는 혜택을 받을 수 있다.
14장에서 알 수 있듯이 XA 트랜잭션에서 기본적으로 제공되는 보증을 모방하려면 많은 추가 코딩과 테스트가 필요하다. 14장의 조정은 대부분 내가 주로 다루는 수준을을 훨씬 뛰어넘는 내용이지만, 비닐다스는 얼마나 많은 것을 고려해야 하는지를 훌륭하게 지적해주었다. 그것은 공원에서 산책하는 것처럼 쉬운 것이 아니었으며, 그와 거리가 멀었다.
사가와 같은 고급 코딩(15장)은 격리를 포기하고 스스로 보상을 감당해야 하는 다른 수준의 트랜잭션을 도입할 수 있다. 아토미코스(Atomikos)에는 Try-Confirm/Cancel(줄여서 TCC이라는 다소 유사한 모델이 있다. 롤백을 해야 하는(보상을 프로그래밍하는) 부담이 있기 때문에 우리가 만나 본 많은 사람이 별로 좋아하지는 않지만 개념은 훌륭하다.
—가이 파르돈 박사(Guy Pardon, PhD),
atomikos.com 설립자
이 책에서 다루는 내용
◆ 모놀리스 아키텍처에서 마이크로서비스로 전환
◆ ACID 호환 데이터베이스 없이 견고한 아키텍처 구축
◆ 분산 트랜잭션 시스템 작업
◆ 마이크로서비스의 고가용성 원칙
이 책의 대상 독자
마이크로서비스를 설계할 때 다룰 많은 아키텍처 복잡성을 드러내며, 까다로운 시나리오를 해결하는 데 코드 예제를 사용하는 책이다. 아키텍트를 위한 책이지만 개발자와 기술 관리자도 활용할 수 있다. 일반적으로 심각한 분산 서버 측 애플리케이션, 특히 마이크로서비스를 구축하려는 자바 설계자를 염두에 두고 작성했다. 이벤트 기반 시스템, 트랜잭션 무결성, 데이터 일관성 등과 같은 측면에서 설계자가 알아야 할 사항에 중점을 뒀다. 개발자들도 일상적인 작업에 유용한 완전한 코드를 찾을 수 있다. 예제를 빠르게 시작하고 실행하려면 자바, 스프링, 약간의 HTTP에 대한 실무 지식이 필요할 것으로 가정한다. 자바와 스프링에 대한 배경 지식이 없는 경우에도 유틸리티 구축 스크립트와 단계별 지침이 도움이 될 것이다. 또한 예제가 자바로 돼 있더라도 모든 아키텍처 측면과 많은 장이 자바에 국한되지 않으므로 분산 시스템을 다루는 기술 배경이 있는 설계자는 이 책이 도움이 될 것이다.
이 책의 구성
우리는 약 20년 동안 분산 애플리케이션을 개발하고 배포해 왔다. 마이크로서비스는 분산 애플리케이션을 개발, 배포, 유지 관리하는 데 있어 많은 부족한 점을 이용해 아키텍처 원칙과 패턴을 제시한다. 마이크로서비스 아키텍처라고도 하는 마이크로서비스(Microservice)는 유지 관리와 테스트가 가능하며 비즈니스 기능을 중심으로 구성되는, 느슨하게 결합되고 독립적으로 배포 가능한 서비스 모음으로 애플리케이션을 구조화하는 아키텍처 방식이다. 이 책은 스프링 부트, 스프링 클라우드, Axon과 같은 가볍고 일반적인 기술을 사용해, 자바로 마이크로서비스를 작성하는 실용적인 방법을 소개한다. 또한, 학습한 내용을 바로 사용할 수 있는 형태로 자료를 제시한다. 이를 위해 모든 주요 개념에 대한 코드 예제를 포함하고, 이를 빌드하고 실행하는 방법을 정확하게 보여준다.
이 책은 완전한 마이크로서비스 예제인 전자상거래 애플리케이션을 소개한다. 독자는 이를 템플릿으로 사용해 운영 시스템의 구축을 바로 시작할 수 있다. 자바 세계에서 사용할 수 있는 모든 책 중에서, 이 책은 완전한 코드와 함께 XA 트랜잭션 관리자와 2개의 서로 다른 XA 트랜잭션 리소스를 활용하는 2단계 커밋 트랜잭션의 모든 성공과 실패 시나리오 시뮬레이션을 독점적으로 보여주는 첫 번째 책이다. XA 트랜잭션을 자세히 보여준 다음 ACID 방식 트랜잭션을 파티션 및 도메인 내로 제한해 파티션 및 도메인에 걸쳐 BASE 트랜잭션이라고 하는 것을 채택함으로써 (최종) 트랜잭션 무결성을 달성하는 데 사용할 수 있는 코드와 기술을 다룬다. BASE 방식 분산 트랜잭션의 가장 잘 알려진 패턴 중 하나인 사가(Saga)에 대한 작업 예제도 소개한다. 또한 마이크로서비스의 고가용성, 보안, 성능도 다룬다. 여기에 묘사된 많은 개념, 아키텍처, 코드들은 경험이 풍부한 아키텍트들만 갖고 있는, 밖에서 쉽게 얻을 수 없는 비법들이지만 이제는 이 책의 형태로 압축돼 있다.
목차
목차
- 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 컨트롤러 테스트
- 요약
- 스프링 부트와 몽고DB를 사용해 데이터 작업 수행
- 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에서 명령과 이벤트 처리
- 예제 시나리오
- 예제 시나리오 코딩
- 예제 시나리오 빌드와 테스트
- 분산 명령과 이벤트 처리
- 예제 시나리오
- 예제 시나리오 코딩
- 예제 시나리오 빌드와 테스트
- 요약
- CQRS 프레임워크 Axon 소개
- 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에서 낙관적 잠금을 보여주는 예제
- 예제 시나리오 설계
- 예제 시나리오 코딩
- 예제 시나리오 빌드와 테스트
- 요약
- 오라클 DB를 참고로 하는 고가용성과 확장성 템플릿
- 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 게이트웨이 주울
- 권한 부여 서버
- 리소스 서버
- 전자상거래 마이크로서비스 애플리케이션 설정
- 애플리케이션 구성
- 환경 인프라 설정
- 애플리케이션 빌드와 실행
- 애플리케이션 테스트
- 요약
- OAuth 2.0과 마이크로서비스
- 19장. Axon 마이크로서비스와 BASE 트랜잭션
- Axon 3을 사용해 동일한 JVM에서 명령과 이벤트 처리
- 예제 시나리오 설계
- 예제 시나리오 코딩
- 예제 시나리오 빌드와 테스트
- Axon 3을 사용한 분산 명령과 이벤트 처리
- 스프링 클라우드를 사용한 분산 명령 버스 설계
- 예제 시나리오 코딩
- 예제 시나리오 빌드와 테스트
- BASE 트랜잭션을 사용하는 Axon 3 CQRS 전자상거래 마이크로서비스
- 주문과 재고 도메인 사이의 ACID 매듭 제거
- 주문과 재고 도메인을 별도의 마이크로서비스로 분할
- 결정론적 결과적 일관성을 위한 사가
- 전자상거래 마이크로서비스 애플리케이션 구성
- 전자상거래 마이크로서비스 애플리케이션 구축과 실행
- Axon 4를 사용해 동일한 JVM에서 명령과 이벤트 처리
- Axon 4를 사용한 분산 명령과 이벤트 처리
- 요약
- Axon 3을 사용해 동일한 JVM에서 명령과 이벤트 처리
- 부록A 몽고DB 설치, 구성, 실행
- 몽고DB 소개
- 몽고DB 문서
- 몽고DB 설치와 구성
- 몽고DB 커뮤니티 에디션 다운로드
- 몽고DB 설치와 구성
- 몽고DB 사용 시작
- 몽고DB 시작과 연결
- 몽고DB로 기본 데이터 조작 실행
- Robomongo: 몽고DB용 GUI
- Robomongo 커뮤니티 에디션 다운로드와 설치
- Robomongo를 사용한 몽고DB 시작과 연결
- 몽고DB로 기본 데이터 조작 실행
- 요약
- 몽고DB 소개
- 부록B RabbitMQ 클러스터 설치, 구성, 실행
- RabbitMQ 소개
- RabbitMQ 설정
- Erlang 다운로드와 설치
- RabbitMQ 설치와 구성
- RabbitMQ 사용 시작
- 관리 플러그인 활성화
- RabbitMQ 서버 시작
- RabbitMQ 관리 콘솔보기
- RabbitMQ 클러스터 설정
- RabbitMQ 클러스터 구성
- RabbitMQ 클러스터 불러오기
- RabbitMQ 클러스터 다시 시작