이미 소장하고 있다면 판매해 보세요.
|
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 우리는 그냥 수박 겉핥기 중이다 __요약 |
Cornelia Davis
최철원의 다른 상품
양준기의 다른 상품
권병섭의 다른 상품
|
이 책은 이론과 실습 간의 차이를 줄여주는데, 사실 소수의 사람들만 이런 책을 쓸 수 있다고 생각한다. 코넬리아 데이비스는 박사 과정 학생으로서 수년 동안 프로그래밍 언어를 공부했고, 함수형 프로그래밍(functional programming)과 불변성(immutability)에 대한 열정을 보여줬으며, 대형 소프트웨어 시스템에서 수십 년간 일했고 대규모 소프트웨어 조직이 위대한 성과를 거두는 데 도움을 줬다.
지난 5년 동안 종종 CQRS와 이벤트 소싱(event sourcing), LISP와 클로저(Clojure), 명령형 프로그래밍(imperative programming)과 상태(state) 처리의 위험성, 심지어 재귀(recursion)와 같은 간단한 주제에 관해 그에게 도움을 요청하고 조언을 구했다. 이 책을 읽는 것이 아주 보람 있는 이유는 코넬리아가 패턴으로만 이야기를 시작하지 않기 때문이다. 처음에는 원칙으로 시작해서 논쟁, 때로는 논리, 때로는 플로차트를 이용해 타당성을 증명한다. 코넬리아는 이론에 만족하지 않고 자바(Java)와 스프링(Spring)으로 이런 패턴을 구현하고 거듭 반복해서 학습한 내용을 통합한다. 나는 이 책이 재미있고 교육적이라는 점을 알게 됐고, 이전에는 단순히 대략적으로만 이해했던 주제에 대해 엄청나게 많은 것을 배웠다. 이제 이 지식을 실행에 옮길 수 있다는 것을 증명하고 싶어서 클로저로 그의 예제를 구현하고자 노력하고 있다. 여러분이 기뻐하면서 어쩌면 깜짝 놀랄 만한 개념들을 발견할 수 있을 것이라 생각한다. 내게 중요한 개념 중 하나는 교차 관심사(cross-cutting concern)를 중앙화할 필요가 있다는 것이었는데, 이는 관점지향 프로그래밍(aspect-oriented programming), 쿠버네티스 사이드카(Kubernetes sidecar), 스프링 재시도 주입(Spring Retry injection)의 활용 여부였다. 이 책을 읽는 독자들도 나만큼 보람을 느끼길 바란다! - 진 킴(Gene Kim) 이 책의 대상 독자 클라우드’로 가는 것은 ‘애플리케이션을 어디에 배포하는가’보다 ‘애플리케이션을 어떻게 설계하는가’에 더 중점을 둔다. 이 책은 동적이고 분산된 가상화 클라우드 환경에서 성공할 수 있는 강력한 애플리케이션을 개발하기 위한 지침을 제시한다. 클라우드 네이티브 애플리케이션의 멘탈 모델과 함께 구축을 지원하는 패턴, 사례, 도구를 제시하며 앱, 데이터, 서비스, 라우팅 등을 다루는 실사례와 전문가의 조언이 들어있다. 이 책은 기본적으로 아키텍처를 다루며, 여기에 포함된 설계 관련 논의를 지원하는 코드 예제를 포함한다. 독자는 여기서 다루는 패턴과 과거에 적용했을 법한 방법의 차이를 언급한다는 점을 알게 될 것이다. 그러나 과거 패턴에 대한 경험이나 지식은 필요하지 않다. 패턴 자체뿐만 아니라 그 패턴에 대한 동기, 그리고 그것이 적용되는 맥락의 뉘앙스를 다루고 있으므로, 독자는 소프트웨어 업계에서 쌓은 경력과 상관없이 중요한 가치를 발견할 수 있다. 책 전반에 걸쳐 많은 코드 예제가 제시되지만 프로그래밍 책은 아니다. 또한 기본적인 사항을 모르더라도 프로그래밍하는 법을 가르쳐주지는 않는다. 코드 예시는 자바로 돼 있지만, 어떤 언어로든 자신의 경험을 통해 문제없이 따라갈 수 있을 것이다. 특히 HTTP를 통한 클라이언트/서비스 상호작용에 대한 기본 지식을 갖췄다면 도움이 되지만 반드시 필요하지는 않다. 이 책에서 다루는 내용 ■ 클라우드 네이티브 앱의 생명 주기 ■ 클라우드 규모의 설정 관리 ■ 무중단 업그레이드, 버전화된 서비스, 병렬 배포 ■ 서비스 탐색과 동적 라우팅 ■ 재시도와 서킷 브레이커 등과 같은 서비스 간 상호 작용 관리 |
|
옮긴이의 말
책의 저자인 코넬리아 데이비스를 알게 된 것은 ‘쿠베콘(KubeCon)’ 행사의 강연에 참석하게 되면서였다. 저자는 피보탈의 부사장으로서 이 책을 출간하기 직전에 강연했는데, 주제인 클라우드 네이티브 패턴은 소프트웨어 아키텍처를 십수 년간 현장에서 적용하고 검증하는 것이 본업인 나에게 흥미로운 주제이기에 앞서, 본업을 위한 밑천이 되는 주제였다. 기업용 애플리케이션을 설계하고 개발하는 IT인들 중에 클라우드 환경에서 소프트웨어를 현대화(modernization)하고자 하는 사람이라면, 이 책의 내용이 큰 자산이 될 것이다. 수많은 IT 번역서가 있지만, 내 경험상 번역서의 한계를 극복하지 못한 책이 많았다. 사내 출간물을 위해 간헐적이고 부분적으로 번역을 경험해보기는 했지만, 출간 도서의 번역은 이번이 처음이라 이 책이 어떤 평가를 받을지 못내 걱정스럽다. 지금껏 독자의 입장에서 번역서를 바라보다가 직접 번역을 해보니 그동안 오만했던 나 자신을 다시 돌아보고 많이 성장할 수 있는 기회를 갖게 됐다. 아무튼 이 책의 독자를 위해 여기서 몇 가지를 밝혀둔다. 1. 영어권 고유의 사고방식에서 비롯되는 문장 표현은 가급적 우리에게 맞도록 번역했으나, 뉘앙스나 작가의 의도를 명확히 전달하기에는 역부족인 부분도 있을 것이다. 번역 작업을 할 때 가장 어려웠던 점이다. 특히 저자 특유의 유머나 감탄사, 문화 특성에 따른 문장이 있어 어색할 수 있겠지만, 독자의 의견을 받아서 지속적으로 개선할 것을 약속한다. 2. 이 책은 중급자 이상의 전문 서적이다. 기본적으로 최소 3년 이상의 IT 개발 경험이 필요하며, 주석이 없는 용어는 따로 검색해 공부하지 않으면 이해하기 어려울 수 있다. 예를 들어 이 책에서는 리팩토링(refactoring), 배포(deployment) 등의 용어를 별도의 설명 없이 그대로 사용했다. 특히 클라우드나 컨테이너 환경의 경험도 필요하며, 필요한 시점에 수시로 타기술 관련 기초 서적이나 인터넷 자료를 활용하는 것을 권장한다. 3. 이 책에는 실습할 수 있는 소스 코드와 스크립트가 포함돼 있다. 다시 한 번 말하지만 이 책에서 다루는 내용을 충분히 이해하려면 중급 이상의 개발 역량이 필요하며, 특히 클라우드 또는 최신 개발 환경에 익숙하지 않은 개발자라면 원하는 대로 실습을 진행하기가 어려울 수 있다. 왜냐하면 당연하고 묵시적인 진행 과정은 세밀하게 언급하지 않고 생략했기 때문이다. 그러나 실습을 통해 굳이 결과를 확인하지 않고 이 책을 정독하며 내용을 따라가는 노력만으로도 충분한 가치를 얻을 수 있다. 따라서 코드를 실행하는 데만 몰두하기보다는 아키텍처 전반을 이해하는 데 더 집중하길 바란다. 수차례 검토와 수정을 거쳤음에도 100% 완벽한 책이라고 장담할 수 없다. 그러나 핵심은 명확하다. 이 책에서 언급한 클라우드 네이티브의 특징과 그것을 구현하기 위한 아키텍처 사례들을 거시적 관점에서 이해할 수 있다면 독자는 목적을 충분히 달성한 것이다. 수차례 검토와 수정을 거쳤음에도 100% 완벽한 책이라고 장담할 수 없다. 그러나 핵심은 명확하다. 이 책에서 언급한 클라우드 네이티브의 특징과 그것을 구현하기 위한 아키텍처 사례들을 거시적 관점에서 이해할 수 있다면 독자는 목적을 충분히 달성한 것이다. -최철원- 함께 일하는 팀원인 공역자 최철원 님의 소개로 이 책의 원서를 읽어보게 됐다. 클라우드 네이티브는 최근 가장 관심을 받고 있는 주제이므로 이미 관련 책이 다수 출간돼 있지만, 이 책에서 클라우드 네이티브를 어떻게 풀어나갔는지가 궁금해서 읽기 시작했고 읽어 나갈수록 많은 것을 느낄 수 있었다. 왜 이 시점에 클라우드 네이티브를 이야기하는지, 여기에 필요한 기술과 방법은 무엇인지에 대해 저자는 마치 대화하는 것처럼 풀어나간다. 지나치기 쉬운 내용을 설명하고, 주제와 주제 사이를 자연스럽게 이어나간다. 이는 저자만 이 가진 장점이라 생각한다. 이 책을 읽으면서 저자에 관심이 생겨 코넬리아 데이비스의 여러 글을 접했는데, 이를 통해서도 저자가 IT에 대한 깊은 이해를 바탕으로 인사이트를 갖고 있음을 알게 됐다. 이런 좋은 책을 번역하게 돼서 스스로 깊은 자부심을 느끼며, 여러분에게도 강력히 추천한다. 다만, 흔히 쓰는 개념을 우리말로 옮기면서 다소 어색한 표현이 곳곳에 등장하는 것은 부정할 수 없다. 많은 번역서를 읽으면서 “왜?”라는 질문을 많이 했었는데, 직접 번역하는 입장이 되니 이해되는 점이 많았다. 또한 저자가 이야기하듯 책을 썼기 때문에 최대한 그 느낌을 살리고자 했으나 아무래도 자연스럽지 않은 부분이 남아있음을 고백한다. 이 점에 대해 널리 혜량해주길 바란다. 아마도 이 책의 독자는 우리와 같은 일을 하고 있는 업계의 동료일 것이다. 이 책을 동료에게 소개하고 추천하는 마음으로 번역에 임했으며, 최선을 다했다는 점을 알리고 싶다. -양준기- |