장바구니 담기 close

장바구니에 상품을 담았습니다.

클라우드 네이티브 패턴

클라우드 네이티브 패턴

  • 코넬리아데이비스
  • |
  • 에이콘출판
  • |
  • 2020-01-28 출간
  • |
  • 512페이지
  • |
  • 188 X 235 X 24 mm
  • |
  • ISBN 9791161753805
판매가

40,000원

즉시할인가

36,000

카드할인

0원(즉시할인 0%)

적립금

2,000원 적립(5%적립)

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

추가혜택

네이버페이 무조건 1%적립+ 추가 1%적립

수량
+ -
총주문금액
36,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




★ 이 책에서 다루는 내용 ★

■ 클라우드 네이티브 앱의 생명 주기
■ 클라우드 규모의 설정 관리
■ 무중단 업그레이드, 버전화된 서비스, 병렬 배포
■ 서비스 탐색과 동적 라우팅
■ 재시도와 서킷 브레이커 등과 같은 서비스 간 상호 작용 관리

★ 이 책의 대상 독자 ★

‘클라우드’로 가는 것은 ‘애플리케이션을 어디에 배포하는가’보다 ‘애플리케이션을 어떻게 설계하는가’에 더 중점을 둔다. 이 책은 동적이고 분산된 가상화 클라우드 환경에서 성공할 수 있는 강력한 애플리케이션을 개발하기 위한 지침을 제시한다. 클라우드 네이티브 애플리케이션의 멘탈 모델과 함께 구축을 지원하는 패턴, 사례, 도구를 제시하며 앱, 데이터, 서비스, 라우팅 등을 다루는 실사례와 전문가의 조언이 들어있다.
이 책은 기본적으로 아키텍처를 다루며, 여기에 포함된 설계 관련 논의를 지원하는 코드 예제를 포함한다. 독자는 여기서 다루는 패턴과 과거에 적용했을 법한 방법의 차이를 언급한다는 점을 알게 될 것이다. 그러나 과거 패턴에 대한 경험이나 지식은 필요하지 않다. 패턴 자체뿐만 아니라 그 패턴에 대한 동기, 그리고 그것이 적용되는 맥락의 뉘앙스를 다루고 있으므로, 독자는 소프트웨어 업계에서 쌓은 경력과 상관없이 중요한 가치를 발견할 수 있다.
책 전반에 걸쳐 많은 코드 예제가 제시되지만 프로그래밍 책은 아니다. 또한 기본적인 사항을 모르더라도 프로그래밍하는 법을 가르쳐주지는 않는다. 코드 예시는 자바로 돼 있지만, 어떤 언어로든 자신의 경험을 통해 문제없이 따라갈 수 있을 것이다. 특히 HTTP를 통한 클라이언트/서비스 상호작용에 대한 기본 지식을 갖췄다면 도움이 되지만 반드시 필요하지는 않다.

★ 이 책의 구성 ★

이 책은 두 개의 부와 12개의 장으로 구성돼 있다.
첫 번째 부는 클라우드 네이티브 컨텍스트를 정의하고 소프트웨어가 배포되는 환경의 특징을 설명한다.
1장에서는 클라우드 네이티브를 정의하고 클라우드와 구분한다. 이로써 이후 설명할 패턴에 관해 구축 가능한 멘탈 모델을 제시한다. 이 모델의 엔티티(entity)는 앱/서비스, 서비스 간의 상호작용, 데이터다.
2장에서는 클라우드 네이티브 운영을 설명한다. 회피 불가능한 모든 장애 상황에서 클라우드 네이티브 소프트웨어를 프로덕션(production) 환경에서 실행하는 데 사용하는 패턴과 사례를 설명한다.
3장에서는 클라우드 네이티브 플랫폼을 소개한다. 이 플랫폼은 두 번째 부에 제시된 많은 패턴을 지원하고 구현을 제공하는 개발 및 실행 환경이다. 앞으로 설명할 모든 패턴을 이해하는 것은 중요하지만, 모든 패턴을 직접 구현할 필요는 없다.

두 번째 부에서는 클라우드 네이티브 패턴 자체를 심도 있게 논의한다.
4장에서는 클라우드 네이티브 상호작용을 다루고 있으며, 데이터를 약간 추가해 친숙한 요청/응답 방식의 대안으로 이벤트 기반 통신을 소개한다. 이벤트 기반 통신은 오늘날 대부분의 소프트웨어에서 거의 보편화됐지만, 이벤트 기반 접근법은 고도로 분산된 클라우드 네이티브 소프트웨어에 상당한 이점을 제공하는 경우가 많으며, 독자는 이후에 나올 패턴을 공부할 때 두 프로토콜을 모두 고려하는 것이 중요하다.
5장에서는 클라우드 네이티브 앱/서비스와 데이터의 관계를 설명한다. 앱이 다중 인스턴스로 배포되거나 때로는 상당한 규모로 배포되는 방법, 앱을 상태 비저장(stateless)으로 만드는 이유와 방법, 특수한 상태 저장 서비스(stateful service)에 바인딩하는 방법을 다룬다.
6장에서는 클라우드 네이티브 앱/서비스를 살펴보며, 광범위하게 분산된 인프라에 많은 인스턴스가 배포될 때 애플리케이션 환경 설정을 일관되게 유지할 수 있는 방법을 다룬다. 또한 실행 중인 환경이 끊임없이 변경될 때 애플리케이션 환경 설정을 적절하게 적용하는 방법도 알아본다.
7장에서는 클라우드 네이티브 앱/서비스를 살펴보며, 애플리케이션 생명 주기와 롤링 업그레이드 및 블루/그린 업그레이드를 포함한 수많은 무중단 업그레이드 사례를 다룬다.
8장에서는 클라우드 네이티브 상호작용을 소개한다. 서비스가 끊임없이 이동하는 동안에도 앱이 필요한 서비스를 찾을 수 있는 방법(서비스 탐색), 그리고 요청이 궁극적으로 올바른 서비스로 가는 길을 찾는 방법(동적 라우팅, dynamic routing)에 초점을 맞춘다.
9장에서는 상호작용의 클라이언트 측면에 초점을 맞춘 클라우드 네이티브 상호작용을 살펴본다. 상호작용 다중화(interaction redundancy)가 필요한 이유를 설명하고 재시도(최초 요청이 실패할 경우 반복되는 요청)를 소개한 후, 재시도를 단순히 적용했을 때 발생할 수 있는 문제와 그 문제를 피하는 방법을 다룬다.
10장에서는 상호작용의 서비스 측면에 초점을 맞춘 클라우드 네이티브 상호작용을 살펴본다. 상호작용을 시작하는 클라이언트가 책임감 있게 동작하더라도, 서비스는 여전히 오용(misuse)되거나 과도한 트래픽에 압도당하지 않도록 보호해야 한다. 또한 API 게이트웨이와 서킷 브레이커도 다룬다.
11장에서는 앱과 상호작용 둘 다 살펴보며, 소프트웨어를 구성하는 분산 시스템의 동작과 성능을 관측하기 위한 방법을 다룬다.
12장에서는 데이터를 다루며, 클라우드 네이티브 소프트웨어를 구성하는 서비스간 상호작용에서의 중요한 시사점을 살펴본다. 기존의 모놀리식 데이터베이스(monolithic database)였던 것을 분산된 데이터 구조(fabric)로 분할하는 패턴을 다루며, 궁극적으로 이 책의 두 번째 부 앞부분에서 설명하는 이벤트 기반 패턴으로 되돌아간다.

★ 옮긴이의 말 ★

이 책의 저자인 코넬리아 데이비스를 알게 된 것은 ‘쿠베콘(KubeCon)’ 행사의 강연에 참석하게 되면서였다. 저자는 피보탈의 부사장으로서 이 책을 출간하기 직전에 강연했는데, 주제인 클라우드 네이티브 패턴은 소프트웨어 아키텍처를 십수 년간 현장에서 적용하고 검증하는 것이 본업인 나에게 흥미로운 주제이기에 앞서, 본업을 위한 밑천이 되는 주제였다. 기업용 애플리케이션을 설계하고 개발하는 IT인들 중에 클라우드 환경에서 소프트웨어를 현대화(modernization)하고자 하는 사람이라면, 이 책의 내용이 큰 자산이 될 것이다.
수많은 IT 번역서가 있지만, 내 경험상 번역서의 한계를 극복하지 못한 책이 많았다. 사내 출간물을 위해 간헐적이고 부분적으로 번역을 경험해보기는 했지만, 출간 도서의 번역은 이번이 처음이라 이 책이 어떤 평가를 받을지 못내 걱정스럽다. 지금껏 독자의 입장에서 번역서를 바라보다가 직접 번역을 해보니 그동안 오만했던 나 자신을 다시 돌아보고 많이 성장할 수 있는 기회를 갖게 됐다. 아무튼 이 책의 독자를 위해 여기서 몇 가지를 밝혀둔다.
1. 영어권 고유의 사고방식에서 비롯되는 문장 표현은 가급적 우리에게 맞도록 번역했으나, 뉘앙스나 작가의 의도를 명확히 전달하기에는 역부족인 부분도 있을 것이다. 번역 작업을 할 때 가장 어려웠던 점이다. 특히 저자 특유의 유머나 감탄사, 문화 특성에 따른 문장이 있어 어색할 수 있겠지만, 독자의 의견을 받아서 지속적으로 개선할 것을 약속한다.
2. 이 책은 중급자 이상의 전문 서적이다. 기본적으로 최소 3년 이상의 IT 개발 경험이 필요하며, 주석이 없는 용어는 따로 검색해 공부하지 않으면 이해하기 어려울 수 있다. 예를 들어 이 책에서는 리팩토링(refactoring), 배포(deployment) 등의 용어를 별도의 설명 없이 그대로 사용했다. 특히 클라우드나 컨테이너 환경의 경험도 필요하며, 필요한 시점에 수시로 타기술 관련 기초 서적이나 인터넷 자료를 활용하는 것을 권장한다.
3. 이 책에는 실습할 수 있는 소스 코드와 스크립트가 포함돼 있다. 다시 한 번 말하지만 이 책에서 다루는 내용을 충분히 이해하려면 중급 이상의 개발 역량이 필요하며, 특히 클라우드 또는 최신 개발 환경에 익숙하지 않은 개발자라면 원하는 대로 실습을 진행하기가 어려울 수 있다. 왜냐하면 당연하고 묵시적인 진행 과정은 세밀하게 언급하지 않고 생략했기 때문이다. 그러나 실습을 통해 굳이 결과를 확인하지 않고 이 책을 정독하며 내용을 따라가는 노력만으로도 충분한 가치를 얻을 수 있다. 따라서 코드를 실행하는 데만 몰두하기보다는 아키텍처 전반을 이해하는 데 더 집중하길 바란다.
수차례 검토와 수정을 거쳤음에도 100% 완벽한 책이라고 장담할 수 없다. 그러나 핵심은 명확하다. 이 책에서 언급한 클라우드 네이티브의 특징과 그것을 구현하기 위한 아키텍처 사례들을 거시적 관점에서 이해할 수 있다면 독자는 목적을 충분히 달성한 것이다.
수차례 검토와 수정을 거쳤음에도 100% 완벽한 책이라고 장담할 수 없다. 그러나 핵심은 명확하다. 이 책에서 언급한 클라우드 네이티브의 특징과 그것을 구현하기 위한 아키텍처 사례들을 거시적 관점에서 이해할 수 있다면 독자는 목적을 충분히 달성한 것이다.
- 최철원

함께 일하는 팀원인 공역자 최철원 님의 소개로 이 책의 원서를 읽어보게 됐다. 클라우드 네이티브는 최근 가장 관심을 받고 있는 주제이므로 이미 관련 책이 다수 출간돼 있지만, 이 책에서 클라우드 네이티브를 어떻게 풀어나갔는지가 궁금해서 읽기 시작했고 읽어 나갈수록 많은 것을 느낄 수 있었다. 왜 이 시점에 클라우드 네이티브를 이야기하는지, 여기에 필요한 기술과 방법은 무엇인지에 대해 저자는 마치 대화하는 것처럼 풀어나간다.
지나치기 쉬운 내용을 설명하고, 주제와 주제 사이를 자연스럽게 이어나간다. 이는 저자만 이 가진 장점이라 생각한다. 이 책을 읽으면서 저자에 관심이 생겨 코넬리아 데이비스의 여러 글을 접했는데, 이를 통해서도 저자가 IT에 대한 깊은 이해를 바탕으로 인사이트를 갖고 있음을 알게 됐다.
이런 좋은 책을 번역하게 돼서 스스로 깊은 자부심을 느끼며, 여러분에게도 강력히 추천한다. 다만, 흔히 쓰는 개념을 우리말로 옮기면서 다소 어색한 표현이 곳곳에 등장하는 것은 부정할 수 없다. 많은 번역서를 읽으면서 “왜?”라는 질문을 많이 했었는데, 직접 번역하는 입장이 되니 이해되는 점이 많았다. 또한 저자가 이야기하듯 책을 썼기 때문에 최대한 그 느낌을 살리고자 했으나 아무래도 자연스럽지 않은 부분이 남아있음을 고백한다. 이 점에 대해 널리 혜량해주길 바란다. 아마도 이 책의 독자는 우리와 같은 일을 하고 있는 업계의 동료일 것이다. 이 책을 동료에게 소개하고 추천하는 마음으로 번역에 임했으며, 최선을 다했다는 점을 알리고 싶다.
- 양준기


목차


1부. 클라우드 네이티브 컨텍스트

1장. ‘클라우드 네이티브’로 정의한 단어 계속 사용하기
1.1 오늘날 애플리케이션 요구 사항
1.1.1 무중단
1.1.2 짧아진 피드백 주기
1.1.3 모바일과 멀티 디바이스 지원
1.1.4 사물 인터넷이라고 알려진 커넥티드 디바이스
1.1.5 데이터 기반
1.2 클라우드 네이티브 소프트웨어 소개
1.2.1 ‘클라우드 네이티브’의 정의
1.2.2 클라우드 네이티브 소프트웨어 멘탈 모델
1.2.3 클라우드 네이티브 소프트웨어의 작동
1.3 클라우드 네이티브와 세계 평화
1.3.1 클라우드와 클라우드 네이티브
1.3.2 클라우드 네이티브가 아닌 것은 무엇인가?
1.3.3 클라우드 네이티브는 훌륭히 동작한다
__요약

2장. 프로덕션 환경에서 클라우드 네이티브 애플리케이션 실행
2.1 장애물들
2.1.1 스노우플레이크
2.1.2 위험한 배포
2.1.3 변화는 예외다
2.1.4 프로덕션 설치성
2.2 조력자
2.2.1 지속적인 딜리버리
2.2.2 반복성
2.2.3 안전한 배포
2.2.4 변화는 비일비재하다
__요약

3장. 클라우드 네이티브 소프트웨어 플랫폼
3.1 클라우드(네이티브) 플랫폼 진화
3.1.1 클라우드로부터 시작됐다
3.1.2 클라우드 네이티브 발신음
3.2 클라우드 네이티브 플랫폼의 핵심 원리
3.2.1 먼저 컨테이너를 이야기해보자
3.2.2 ‘지속적인 변화’에 대한 지원
3.2.3 ‘고도로 분산’에 대한 지원
3.3 누가 무엇을 합니까?
3.4 추가적인 클라우드 네이티브 기능
3.4.1 SDLC 전체를 지원하는 플랫폼
3.4.2 보안, 변경 제어, 규정 준수(제어 기능)
3.4.3 컨테이너에 들어가는 내용 제어
3.4.4 업그레이드와 취약성 패치
3.4.5 변경 제어
__요약

2부. 클라우드 네이티브 패턴

4장. 이벤트 기반 마이크로서비스: 단순히 요청/응답만을 의미하지 않는다
4.1 우리는 (보통) 명령형 프로그래밍을 배운다
4.2 이벤트 기반 컴퓨팅 재도입
4.3 나의 글로벌 요리책
4.3.1 요청/응답
4.3.2 이벤트 기반
4.4 명령 쿼리 책임 분리(CQRS) 소개
4.5 다른 스타일, 유사한 도전 과제
요약

5장. 앱 다중화: 수평 확장과 상태 비저장
5.1 많은 인스턴스를 배포하는 클라우드 네이티브 앱
5.2 클라우드 환경에서의 상태 저장 앱
5.2.1 모놀리식 분해와 데이터베이스 바인딩
5.2.2 부적절한 세션 상태 처리
5.3 HTTP 세션과 스티키 세션
5.4 상태 저장 서비스와 상태 비저장 앱
5.4.1 상태 저장 서비스는 특별하다
5.4.2 앱을 상태 비저장으로 만들기
__요약

6장. 애플리케이션 설정: 그저 환경 변수만을 의미하지 않는다
6.1 왜 설정까지 이야기해야 할까?
6.1.1 앱 인스턴스의 수를 증가시키거나 감소시키는 동적 스케일링
6.1.2 인프라 변경으로 인한 설정 변경
6.1.3 다운타임 없이 애플리케이션 설정 업데이트하기
6.2 앱의 설정 계층
6.3 시스템/환경 값 주입하기
6.3.1 설정을 위해 환경 변수를 사용하는 방법을 자세히 알아보기
6.4 애플리케이션 설정 주입
6.4.1 구성 서버 소개
6.4.2 보안은 더 많은 요구 사항을 추가
6.4.3 동작 보기: 구성 서버를 사용한 애플리케이션 설정
__요약

7장. 애플리케이션 생명 주기: 지속적인 변경에 대한 설명
7.1 운영에 대한 공감대 형성
7.2 단일 애플리케이션 생명 주기, 다중 인스턴스 생명 주기
7.2.1 블루/그린 배포
7.2.2 롤링 업그레이드
7.2.3 병렬 배포
7.3 서로 다른 앱 생명 주기 전반에서 조율
7.4 실행해보기: 자격 증명 변경과 앱 생명 주기
7.5 생명 주기가 짧은 런타임 환경 처리
7.6 앱 생명 주기 상태 가시성
7.6.1 실행해보기: 헬스 엔드포인트와 프로브
7.7 서버리스
__요약

8장. 앱에 접근하기: 서비스, 라우팅, 서비스 탐색
8.1 서비스 추상화
8.1.1 서비스 사례: 구글링
8.1.2 서비스 사례: 블로그 수집기
8.2 동적 라우팅
8.2.1 서버 측 로드 밸런싱
8.2.2 클라이언트 측 로드 밸런싱
8.2.3 라우팅 최신화
8.3 서비스 탐색
8.3.1 웹에서의 서비스 탐색
8.3.2 클라이언트 측 로드 밸런싱을 이용한 서비스 탐색
8.3.3 쿠버네티스에서 서비스 탐색
8.3.4 실제로 구현해보기: 서비스 탐색 활용
__요약

9장. 상호작용 이중화: 재시도와 기타 제어 루프
9.1 재시도 요청
9.1.1 기본 요청 재시도
9.1.2 실행해보기: 단순 재시도
9.1.3 재시도: 무엇이 잘못될 수 있는가?
9.1.4 재시도 폭풍 생성
9.1.5 실행해보기: 재시도 폭풍 생성
9.1.6 재시도 폭풍 방지: 친절한 클라이언트
9.1.7 실행해보기: 친절한 클라이언트 되기
9.1.8 재시도하지 않을 때
9.2 폴백 로직
9.2.1 실행해보기: 폴백 로직 구현
9.3 제어 루프
9.3.1 제어 루프의 유형 이해
9.3.2 제어 루프 제어
__요약

10장. 프론트 서비스: 서킷 브레이커와 API 게이트웨이
10.1 서킷 브레이커
10.1.1 소프트웨어 서킷 브레이커
10.1.2 서킷 브레이커의 구현
10.2 API 게이트웨이
10.2.1 클라우드 네이티브 소프트웨어에서 API 게이트웨이 사례
10.2.2 API 게이트웨이 토폴로지
10.3 서비스 메시
10.3.1 사이드카
10.3.2 컨트롤 플레인
__요약

11장. 트러블슈팅: 건초 더미에서 바늘 찾기
11.1 애플리케이션 로깅
11.2 애플리케이션 메트릭
11.2.1 클라우드 네이티브 애플리케이션에서 메트릭 가져오기
11.2.2 클라우드 네이티브 애플리케이션에서 메트릭 밀어 넣기
11.3 분산 추적
11.3.1 트레이서 출력
11.3.2 집킨으로 추적 조합하기
11.3.3 구현 상세 내용
__요약

12장. 클라우드 네이티브 데이터: 모놀리식 데이터 쪼개기
12.1 모든 마이크로서비스는 캐시가 필요하다
12.2 요청/응답에서 이벤트 기반으로 이동하기
12.3 이벤트 로그
12.3.1 실행으로 확인하자: 이벤트 기반 마이크로서비스 구현
12.3.2 토픽과 큐의 새로운 점은?
12.3.3 이벤트 페이로드
12.3.4 멱등성
12.4 이벤트 소싱
12.4.1 지금까지의 여행
12.4.2 진본
12.4.3 이벤트 소싱의 구현
12.5 우리는 그냥 수박 겉핥기 중이다
__요약

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.