1. 광고배너
  2. 광고배너
/ 이전버튼 다음버튼
2
미리보기

실용적인 마이크로서비스 아키텍처 패턴(스프링 부트와 스프링 클라우드를 활용한)(에이콘 소프트웨어 아키텍처 시리즈)
저자 : 비닐다스크리스투다스 ㅣ 출판사 : 에이콘출판 ㅣ 역자 : 황주필

2023.06.30 ㅣ 1,016p ㅣ ISBN-13 : 9791161757629

정가50,000
판매가47,500(5% 할인)
적립금 2,000원 (4%)
배송일정 05월 23일 출고 가능
주문 수량 변경시 안내 배송안내
쿠폰 및 결제혜택 확인하기

크기 B5(257mm X 188mm, 사륙배판)
제품구성 단행본
이용약관 청약철회
국내도서 > 컴퓨터 > 시스템공학 > 아키텍처/시스템프로...
이벤트 기반 마이크로서비스가 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 클러스터에 연결

[본 문]

우리는 약 20년 동안 분산 애플리케이션을 개발하고 배포해 왔다. 마이크로서비스는 분산 애플리케이션을 개발, 배포, 유지 관리하는 데 있어 많은 부족한 점을 이용해 아키텍처 원칙과 패턴을 제시한다. 마이크로서비스 아키텍처라고도 하는 마이크로서비스(Microservice)는 유지 관리와 테스트가 가능하며 비즈니스 기능을 중심으로 구성되는, 느슨하게 결합되고 독립적으로 배포 가능한 서비스 모음으로 애플리케이션을 구조화하는 아키텍처 방식이다. 이 책은 스프링 부트, 스프링 클라우드, Axon과 같은 가볍고 일반적인 기술을 사용해, 자바로 마이크로서비스를 작성하는 실용적인 방법을 소개한다. 또한, 학습한 내용을 바로 사용할 수 있는 형태로 자료를 제시한다. 이를 위해 모든 주요 개념에 대한 코드 예제를 포함하고, 이를 빌드하고 실행하는 방법을 정확하게 보여준다.

이 책은 완전한 마이크로서비스 예제인 전자상거래 애플리케이션을 소개한다. 독자는 이를 템플릿으로 사용해 운영 시스템의 구축을 바로 시작할 수 있다. 자바 세계에서 사용할 수 있는 모든 책 중에서, 이 책은 완전한 코드와 함께 XA 트랜잭션 관리자와 2개의 서로 다른 XA 트랜잭션 리소스를 활용하는 2단계 커밋 트랜잭션의 모든 성공과 실패 시나리오 시뮬레이션을 독점적으로 보여주는 첫 번째 책이다. XA 트랜잭션을 자세히 보여준 다음 ACID 방식 트랜잭션을 파티션 및 도메인 내로 제한해 파티션 및 도메인에 걸쳐 BASE 트랜잭션이라고 하는 것을 채택함으로써 (최종) 트랜잭션 무결성을 달성하는 데 사용할 수 있는 코드와 기술을 다룬다. BASE 방식 분산 트랜잭션의 가장 잘 알려진 패턴 중 하나인 사가(Saga)에 대한 작업 예제도 소개한다. 또한 마이크로서비스의 고가용성, 보안, 성능도 다룬다. 여기에 묘사된 많은 개념, 아키텍처, 코드들은 경험이 풍부한 아키텍트들만 갖고 있는, 밖에서 쉽게 얻을 수 없는 비법들이지만 이제는 이 책의 형태로 압축돼 있다.
펼쳐보기
◈ 이 책의 대상 독자 ◈
마이크로서비스를 설계할 때 다룰 많은 아키텍처 복잡성을 드러내며, 까다로운 시나리오를 해결하는 데 코드 예제를 사용하는 책이다. 아키텍트를 위한 책이지만 개발자와 기술 관리자도 활용할 수 있다. 일반적으로 심각한 분산 서버 측 애플리케이션, 특히 마이크로서비스를 구축하려는 자바 설계자를 염두에 두고 작성했다. 이벤트 기반 시스템, 트랜잭션 무결성, 데이터 일관성 등과 같은 측면에서 설계자가 알아야 할 사항에 중점을 뒀다. 개발자들도 일상적인 작업에 유용한 완전한 코드를 찾을 수 있다. 예제를 빠르게 시작하고 실행하려면 자바, 스프링, 약간의 HTTP에 대한 실무 지식이 필요할 것으로 가정한다. 자바와 스프링에 대한 배경 지식이 없는 경우에도 유틸리티 구축 스크립트와 단계별 지침이 도움이 될 것이다. 또한 예제가 자바로 돼 있더라도 모든 아키텍처 측면과 많은 장이 자바에 국한되지 않으므로 분산 시스템을 다루는 기술 배경이 있는 설계자는 이 책이 도움이 될 것이다.

옮긴이의 말
많은 기업에서 이제는 마이크로서비스 아키텍처로 애플리케이션을 개발하는 것이 필수인 시대가 된 것 같다. 하지만 여전히 마이크로서비스 아키텍처를 기반으로 애플리케이션을 개발하는 것은 어려운 일이며, 고려해야 할 사항이 많다. 이 책에서는 다양한 마이크로서비스 아키텍처 패턴을 소개하면서 각 패턴들이 어떠한 의미를 갖는지, 어떻게 구현할 수 있는지 샘플 코드로 쉽게 이해할 수 있게 제공한다. 이 책에서는 이벤트 기반 아키텍처에서 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 설립자
펼쳐보기
비닐다스 크리스투다스(Binildas Christudas)
IT 솔루션 관련 기술 아키텍처 컨설팅을 제공한다. 마이크로소프트와 오라클 기술 분야에서 20년 이상의 IT 경험이 있다. 자바와 C# 프로그래밍에 대한 광범위한 실무 경험이 있고, 주요 기술은 분산 컴퓨팅과 서비스 기반 통합이다. 잘 알려져 있고 인기가 높은 사고 리더로서 포춘 500대 기업을 비롯한 최고 수준의 여러 고객을 위해 확장성이 뛰어난 미들티어와 통합 솔루션을 설계하고 구축했다. 인포시스와 타타 컨설턴티 서비스(Tata Consultancy Services)를 비롯한 여러 IT 컨설팅 회사에서 근무했으며 현재 IBS 소프트웨어에서 수석 설계자로 일하는 중이다. VP와 기술 책임자로서 IBS 상품 포트폴리오의 기술과 아키텍처 전략을 이끌고 있다.
SCJP(Sun Certified Programmer), SCJD(Sun Certified Developer), SCBCD(Sun Certified Business Component Developer), SCEA(Sun Certified Enterprise Architect), MCP(Microsoft Certified Professional), Open Group(TOGAF8) Certified Enterprise Architecture Practitioner다. 또한 SOA의 LZA(Licensed Zapthink Architect)이기도 하다. B.Tech를 보유하고 있다. 트리반드룸(CET) 공과 대학에서 기계 공학을 전공했고 케랄라(Kerala) 경영 연구소(IMK)에서 시스템 MBA를 취득했다. 케랄라 대학교 역도 팀의 주장이었으며 대학 시절 전국 챔피언이었다. IBS는 ‘서비스의 다중 테넌시를 촉진하기 위한 방법과 시스템’이라는 제목의 제안을 USPTO에 특허로 신청했다.

옮긴이 황주필
IT 기업에서 개발자로 시작해 BEA Systems, 오라클, Pivotal, Vmware 등에서 소프트웨어 아키텍트, 엔지니어로 일했다. 수많은 기업에서 기업용 소프트웨어에 대한 지원과 비즈니스 적용을 도왔다. 컨테이너(Container)에 관심이 많아 쿠버네티스(Kubernetes) 생태계에 참여하고 있고 클라우드 네이티브 애플리케이션(Cloud Native Application)의 개발과 운영을 도왔으며, 이벤트 기반 아키텍처(Event Driven Architecture)를 기업에 도입하는 데 도움을 주고 있다. 현재 Confluent에서 솔루션 엔지니어로 일하며 수많은 고객이 EDA 기반의 애플리케이션이나 실시간 데이터 파이프라인을 성공적으로 구축할 수 있도록 돕는 중이다. 주요 번역서로는 『코틀린 마이크로서비스 개발』(에이콘, 2019), 『쿠버네티스로 만나는 손안의 마이크로서비스』(에이콘, 2020), 『쿠버네티스 인 액션』(에이콘, 2020) 등이 있다.
펼쳐보기

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.
도서평점
내용
등록하기
0/2000자
교환/반품 방법
  • 마이페이지 > 주문관리 > 주문/배송조회 > 주문조회 후  [1:1상담신청]  또는 고객센터 (1544-9020)
  • ※ 오픈마켓, 해외배송 주문상품 문의 시 [1:1상담신청] 또는 고객센터 (1544-9020)
교환/반품 가능기간
  • 변심반품의 경우 수령 후 7일 이내
  • 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
교환/반품 비용
  • 단순변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 해외직배송 도서 구매 후 단순변심에 의한 취소 및 반품 시 도서판매가의 20% 수수료 부과
교환/반품 불가사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 예) 만화, 잡지, 수험서 및 문제집류
  • 복제가 가능한 상품 등의 포장을 훼손한 경우 예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
상품 품절
  • 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

더보기 >

    이 분야의 신간

    더보기 >
      맨위로가기

      영풍문고 로고

      • 회사명 : (주)영풍문고
      • 대표이사 : 김경환
      • 소재지 : 서울특별시 종로구 청계천로 41 (우)03188
      • 사업자 등록번호 : 773-86-01800 ㅣ 통신판매업 신고번호 : 2023-서울종로-0130 [ 사업자정보확인 ]
      • 개인정보관리 책임자 : 조순제 ㅣ customer@ypbooks.co.kr ㅣ 대량주문 : webmaster@ypbooks.co.kr
      COPYRIGHT © YOUNGPOONG BOOKSTORE INC. ALL RIGHTS RESERVED.
      영풍문고 네이버블로그 영풍문고 인스타그램
      맨위로가기