Top

클라우드 네이티브 패턴 [변화에 잘 견디는 소프트웨어 개발]

  • 원서명Cloud Native Patterns: Designing change-tolerant software (ISBN 9781617294297)
  • 지은이코넬리아 데이비스(Cornelia Davis)
  • 옮긴이최철원, 양준기, 이현재, 권병섭
  • ISBN : 9791161753805
  • 40,000원
  • 2020년 01월 28일 펴냄
  • 페이퍼백 | 512쪽 | 188*235mm
  • 시리즈 : 소프트웨어 아키텍처

책 소개

요약

현대 소프트웨어를 설계하고 개발, 운영할 때 반드시 이해해야 하는 클라우드 네이티브 패턴의 전반적인 개념과 사례를 다룬다. 고도로 분산되고 가상화된 클라우드 환경에서는 변화와 변경에 잘 대응하는 소프트웨어를 설계하고 개발해야 한다. 이 책은 이러한 현대의 기술 환경 요구사항에 맞춰 클라우드 네이티브 애플리케이션의 멘탈 모델과 함께 구축을 지원하는 패턴, 사례 및 도구를 제시하고 있으며 앱, 데이터, 서비스, 라우팅 등을 다루는 실사례와 전문가의 조언이 포함돼 있다. 이 책을 끝마칠 즘 현대 소프트웨어가 갖춰야 하는 기본 특성을 이해할 수 있고, 독자의 경험은 이에 적합한 아키텍처를 설계하는 데 큰 밑바탕이 될 것이다.

추천의 글

이 책은 이론과 실습 간의 차이를 줄여주는데, 사실 소수의 사람들만 이런 책을 쓸 수 있다고 생각한다. 코넬리아 데이비스는 박사 과정 학생으로서 수년 동안 프로그래밍 언어를 공부했고, 함수형 프로그래밍(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)/ 연구자이자 『The Phoenix Project』(IT Revolution Press, 2018), 『데브옵스 핸드북』(에이콘, 2018), 『ACCELERATE』(IT Revolution Press, 2018)의 공동 저자

이 책에서 다루는 내용

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

이 책의 대상 독자

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

상세 이미지

저자/역자 소개

지은이의 말

이 책은 클라우드 네이티브 애플리케이션의 패턴을 알려준다. 많은 ‘공식(formula)’을 보여줄 것이다. 그러나 공식보다는 컨텍스트, 즉 언제 그리고 무슨 이유로 이 패턴을 적용하는지에 더 많은 페이지를 할애하고 있다. 사실 패턴은 일반적으로 그렇게 어렵지 않다. 예를 들어 9장에서 다룬 요청 재시도는 구현하기 쉬운 간단한 개념이다. 하지만 언제 패턴을 적용할 것인지, 그리고 정확히 어떻게 적용할 것인지를 선택하는 것은 까다로울 수 있다. 이러한 패턴을 적용할 컨텍스트에 대해 이해해야 할 것이 너무 많고, 솔직히 말해서 그 컨텍스트는 복잡할 수 있다.
그럼 컨텍스트는 무엇인가? 이는 근본적으로 분산된 시스템 중 하나다. 내가 30여년 이상 경력을 쌓았을 때, 분산 시스템에서 일하는 사람을 많이 알지 못했고, 대학에서도 분산 시스템 수업을 듣지 않았다. 그렇다. 사람들은 이 분야에서 일하고 있었지만, 이 분야는 꽤나 틈새 영역이었다.
오늘날 대부분의 소프트웨어는 분산 시스템이다. 소프트웨어의 일부는 브라우저에서 실행되고 다른 일부는 서버에서 실행되며, 나아가 모든 서버에서 실행된다고도 말할 수 있다. 이러한 서버는 기업 데이터 센터에서 실행 중이거나 오리건주 프리네빌의 다크 데이터 센터(dark data center)에서 실행되며, 혹은 두 곳 모두에서 실행될 수 있다. 그리고 이 모든 것은 아마도 인터넷으로 통신하고 있으며, 소프트웨어의 데이터도 널리 흩어져 있을 것이다. 간단히 말해, 클라우드 네이티브 소프트웨어는 분산 시스템이다. 또한 많은 것이 계속해서 변화하고 있다. 관리하는 서버는 계속해서 바뀌고, 네트워크는 자주 중단되고, 스토리지 장치는 경고 없이 중단될 수 있다. 하지만 그럼에도 소프트웨어는 계속 실행돼야 한다.
이것은 꽤 어려운 컨텍스트다. 하지만 다루기는 매우 쉽다! 이 책의 목표는 이러한 컨텍스트를 이해하고 클라우드 네이티브 소프트웨어의 설계자와 개발자가 되기 위한 도구를 제공하는 것이다.
지금처럼 지적으로 자극을 많이 받은 적은 없었다. 많은 기술 환경이 상당히 변화하고 있으며 클라우드 네이티브가 그 핵심이기 때문이다. 내가 하는 일을 절대적으로 사랑하며, 모든 사람들, 특히 독자들도 나만큼 소프트웨어 개발을 즐기길 원한다. 이것이 이 책을 저술한 이유다. 이 업계에서 일하면서 마주치는 대단히 멋진 문제들을 여러분과 나누고 싶고, 이런 문제들을 해결해나가는 독자 여러분의 여정을 돕고 싶다. 클라우드로 향해 가는 비행에서 작은 역할이라도 할 수 있는 기회를 갖게 돼 영광이다.

지은이 소개

코넬리아 데이비스(Cornelia Davis)

피보탈의 기술 부사장이며 피보탈과 피보탈 고객을 위한 기술 전략 관련 업무를 맡고 있다. 현재는 IT 조직이 최고 수준에서 기능할 수 있도록 IaaS(Infrastructure as a Service), AaaS(Application as a Service), CaaS(Container as a Service), FaaS(Function as a Service)의 다양한 클라우드 컴퓨팅 모델을 포괄적으로 오퍼링(offering)하는 데 주력하고 있다.
거의 30년간 이미지 처리, 과학 시각화, 분산 시스템 및 웹 애플리케이션 아키텍처, 클라우드 네이티브 플랫폼에서 경험을 쌓은 업계의 베테랑이다. 캘리포니아 주립 대학교 노스리지(Northridge) 캠퍼스에서 컴퓨터과학 학사 및 석사 학위를 취득했으며, 인디애나 대학교에서 컴퓨터 및 프로그래밍 언어 이론을 연구했다.
마음속으로는 늘 선생님의 자세로, 더 나은 소프트웨어와 더 나은 소프트웨어 개발자들을 육성하는 데 지난 30년을 보냈다. 일을 하지 않을 때는 주로 요가 매트나 부엌에서 시간을 보낸다.

옮긴이의 말

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

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

옮긴이 소개

최철원

삼성SDS에 신입으로 입사해 10년간 몸담았고, 현재는 SK주식회사 C&C에서 소프트웨어 아키텍트로 13년째 기업용 애플리케이션 개발과 관련된 업무를 하고 있다. 과거에는 자바 프레임워크, 물리 보안 관제 솔루션을 직접 개발했으며, 최근에는 컨테이너 기반 프라이빗 클라우드 플랫폼 구축의 외부 아키텍처(Outer Architecture) 영역에 참여했다. 오픈소스 기술을 활용해 데이터베이스부터 UI까지 전 영역에 걸쳐 최적화된 아키텍처를 구현하는 데 매진하고 있다.

양준기

15년 이상의 아키텍트로서 많은 대규모 IT 시스템을 경험했으며, 현재는 SK주식회사 C&C에서 핵심적인 디지털 플랫폼을 구축하려는 기술적 노력을 이끌고 있다. 쿠버네티스 기반의 프라이빗 클라우드 플랫폼 구축을 수행했으며, 현재는 기존의 시스템을 클라우드로 전환하는 사업에서 클라우드 아키텍트로 활약하고 있다. 특히 클라우드 네이티브 애플리케이션(Cloud Native Application) 개발과 이를 위한 플랫폼에 관심이 많다.

이현재

2005년 프레임워크 개발을 시작으로 10여 년간 애플리케이션 개발과 공공 및 금융 부문의 대형 프로젝트에서 애플리케이션 아키텍트와 테크니컬 아키텍트로 업무를 수행했다. 2016년부터 데브옵스(DevOps)와 클라우드 관련 업무를 맡았고, 최근에는 쿠버네티스와 관련 생태계 기술에 관심이 많다. 현재는 SK주식회사 C&C에서 그룹사의 프라이빗 클라우드(PaaS) 구축을 수행하고 있다.

권병섭

지난 15년간 삼성전자, SK주식회사에서 소프트웨어 엔지니어로 일하며 모바일 핸드셋, USIM/RFID, VR, 비즈니스 애플리케이션 등 다양한 분야의 소프트웨어를 개발했다. 2018년부터는 엔터프라이즈 프라이빗 클라우드를 구축하며 애플리케이션 아키텍트로서 클라우드 네이티브 여정을 주도했다. 현재는 글로벌 스타트업에서 RPA + AI 확산에 관심을 갖고, 디지털 전환(Digital Transformation)을 수행하고 있다.

목차

목차
  • 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 우리는 그냥 수박 겉핥기 중이다
    • 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안