Top

도커, 쿠버네티스, 테라폼으로 구현하는 마이크로서비스

  • 원서명Bootstrapping Microservices with Docker, Kubernetes, and Terraform (ISBN 9781617297212)
  • 지은이애슐리 데이비스(Ashley Davis)
  • 옮긴이최준
  • ISBN : 9791161756318
  • 40,000원
  • 2022년 03월 31일 펴냄
  • 페이퍼백 | 568쪽 | 188*235mm
  • 시리즈 : 소프트웨어 아키텍처

책 소개

2022년 세종도서 학술부문 선정도서

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

요약

마이크로서비스는 더 이상 일부 전문가만을 위한 영역이 아니며, 작은 프로젝트를 위한 개념도 아니다. 주요 클라우드 서비스인 AWS, 애저, 구글 모두 적극적으로 지원하는 소프트웨어와 인프라의 설계 방법이다. 어떠한 IT 프로젝트를 시작하더라도 마이크로서비스를 선택할 것을 고민해야 하고, 기존의 시스템도 마이크로서비스로 대체할 방법을 찾기도 한다. 이 과정에서 활용할 수 있는 마이크로서비스의 장점과 좀 더 일반적인 도구인 도커, 쿠버네티스, 테라폼을 사용한 구현 방법을 알아보자.

추천의 글

“마이크로서비스를 이해하고 구현하는 데 필요한 모든 도구를 소개하는 최고의 안내서다.”

― 크리스 바이너(Chris Viner), Forged Development

“모든 마이크로서비스 개발자를 위한 인프라 참고서의 결정판이다.”

― 줄리앙 포이(Julien Pohie), Thoughrworks

“마이크로서비스를 도커, 쿠버네티스, 테라폼을 사용한 클라우드 기반으로 개발하기 위한 확실한 도약을 보여주는 놀랍고도 실용적인 책이다.”

― 드루베시 파텔(Dhruvesh Patel), Cognizant Worldwide Limited

“마이크로서비스 구현을 위한 최신 클라우드 기술을 광범위하게 실용적으로 보여준다.”

― 알랭 쿠니오(Alain Couniot), Sopra Steria Benelux

이 책에서 다루는 내용

◆ 마이크로서비스 앱 개발과 테스트
◆ 클라우드 기업 서비스 사용
◆ 자동 테스트 적용
◆ 코드형 인프라 구현과 CD(continuous delivery) 파이프라인 구성
◆ 마이크로서비스 모니터링, 관리, 문제 해결

이 책의 대상 독자

마이크로서비스를 다루는 데 필요한 실용적인 내용을 배우고 싶은 독자를 대상으로 한다. 실제로 앱을 운영하기까지 필요한 도구를 어떻게 연계하는지 분명한 가이드가 필요한 독자에게 도움을 줄 수 있다. 코딩 기술을 설명하지는 않으므로 기본적인 코딩 기술을 알고 있어야 한다.

이 책의 구성

1장, ‘마이크로서비스를 왜 쓰는가’에서는 마이크로서비스를 소개하고 마이크로서비스를 왜 사용해야 하는지 설명한다.
2장, ‘첫 마이크로서비스 만들기’에서는 Node.js와 자바스크립트를 사용해 간단한 마이크로서비스를 제작해본다.
3장, ‘첫 마이크로서비스 게시’에서는 배포를 준비하기 위한 마이크로서비스의 패키징과 게시(publishing)에 사용하는 도커를 소개한다.
4장, ‘마이크로서비스 데이터 관리’에서는 다중 마이크로서비스의 스케일 업(scale up)과 함께 개발 환경에서 앱을 시뮬레이션하기 위한 도커 컴퍼스(Docker Compose)를 소개한다.
5장, ‘마이크로서비스 간의 통신’에서는 전체 앱의 라이브 리로드를 위한 개발 환경을 업그레이드한다.
6장, ‘운영 환경 구축’에서는 테라폼과 쿠버네티스를 소개한다.
7장, ‘CD 파이프라인’에서는 쿠버네티스 클러스터에 마이크로서비스를 배포하기 위해 테라폼을 사용한다.
8장, ‘마이크로서비스의 자동 테스트’에서는 여러 레벨에 걸쳐 마이크로서비스를 자동으로 테스트하는 방법을 살펴본다.
9장, ‘플릭스튜브 탐색’에서는 예제 앱을 간단하게 다루고 지금까지 배운 예제 앱을 배포하는 기술을 다시 살펴본다.
10장, ‘튼튼한 마이크로서비스’에서는 신뢰할 수 있고 내결함성(fault tolerant)을 갖춘 마이크로서비스를 만드는 방법을 알아보고, 앱이 잘 동작하도록 모니터하는 방법을 다룬다.
11장, ‘확장성으로 가는 길’에서는 자신의 마이크로서비스 앱을 사업이나 개발 팀의 규모가 커짐에 따라서 실제로 스케일을 조정하는 방법을 가지고 이 책에서 다룬 내용들을 정리한다.

저자/역자 소개

지은이의 말

오랜 시간 기술을 검증해온 경험으로 배움을 늘려왔고, 하는 일에서 시행착오를 겪으면서 더 빨리 배웠다. 이런 나의 노력을 부어서 만든 소프트웨어는 성능 기준에 맞고 유연성, 신뢰성, 확장성을 갖고 있으며, 지금까지도 여전히 잘 동작하고 있다. 이러한 시간을 겪으면서 이 책을 쓰고자 하는 바람이 생겼고, 결국 행동으로 옮기게 됐다.
나의 새로운 목표는 독자들이 마이크로서비스에 쉽게 접근할 수 있도록 돕는 것이다. 내가 원했지만 갖지 못했던 책을 써 보고자 이 책을 쓰기 시작했다. 실용서로 만들 이 책이 내가 도울 수 있는 최선의 방법이다. 마이크로서비스가 반드시 어렵거나 복잡할 필요가 없다는 것을 보여줄 것이다.

지은이 소개

애슐리 데이비스(Ashley Davis)

코딩에서 팀 관리와 회사 설립까지 20년의 경험을 가진 소프트웨어 제작자이자 기업가, 그리고 저자다. 아주 작은 스타트업과 거대한 글로벌 기업까지 다양한 회사에서 근무했다. 이러한 과정에서 글과 오픈 소스 코딩을 통해 커뮤니티에 기여해왔다.
머신러닝의 마법으로 디지털 자산을 자동 분류하는 제품인 Sortal의 CTO다. 자바스크립트와 타입스크립트(TypeScript)를 사용한 탐험적 코딩과 데이터 시각화를 위한 노트북 스타일의 데스크탑 앱인 Data-Forge 노트북을 만들었다. 또한 알고리듬 기반의 거래를 좋아하는데, 정량적 트래이딩(trading) 소프트웨어를 적극적으로 개발하고 거래한다.

옮긴이의 말

정보기술도 기존의 농업, 제조업 분야와 마찬가지로 오랜 세월의 기술이 축적된 필수적인 산업이다. 정보기술이 모든 산업에 영향을 주고 있지만, 다른 분야에서 혁명을 가져온 방법들을 정보기술에 적용하기도 한다. 그중 하나인 마이크로서비스는 특히 생산성에 관한 혁명이다. 이 책에서는 하나의 거대하고 복잡한 시스템이 정말 더 효율적인지 시스템을 설계, 개발, 테스트, 배포, 운영하는 모든 과정에서 독자에게 질문을 던지고 있다.
지금은 정보기술과 무관한 기업을 찾기는 어렵고, 30년 전에 개발한 프로그램과 설계 기술을 사용하고 있는 기업을 찾기는 쉽다. 큰 기업일수록 정보 인프라 안에 다양한 시대가 공존한다. 지난 세기를 대표하는 IBM 메인프레임 앱과 90년대 후반부터 흔했던 클라이언트 서버 기반 앱, 최근의 클라우드 기반의 앱까지 다양한 유행에 따른 시간이 공존한다. 한 가지 흥미로운 것은 과거 메인프레임 개발자라면 오히려 마이크로서비스의 설계, 개발, 배포의 과정과 개념이 전혀 낯설지 않다는 점이다. 긴 세월을 지나 유행이 다시 돌아온 것이 신기하면서도 반갑다. 하지만 이 느낌을 몰라도 상관없다. 여기서 마이크로서비스 때문에 등장하는 용어와 개념에 클라우드의 뛰어난 유연성과 확장성을 더해서 새롭게 배워 나가면 된다.
기존의 정보 시스템에 익숙한 전문가도 새로운 변화를 이해하고 도전하려면 많은 노력이 필요하다. 예를 들어 실제 윈도우 서버를 사용하는 경우에 HTTP 요청이 들어오면, 서버 운영체제의 커널 드라이버가 바로 처리해 응답을 반환하고 끝낼 수도 있다. 반면에 이 책 예제에서 HTTP 요청은 운영체제를 거쳐 가상 컴퓨터 관리자에 전달되고, 다시 가상 운영체제가 받아 Node.js에게 전달하면, HTTP 처리기가 결국 HTTP 응답을 반환한다. 그것도 모자라 다른 마이크로서비스와 통신을 위해 위 과정을 DNS부터 다시 밟아 나가기도 한다. 심지어 이미 읽은 파일의 메모리 캐시나, 프로세서가 실행할 수 있도록 컴파일해둔 스크립트 템플릿의 재사용에 대한 고민도 없이 가용성을 위해 재시작하기도 한다. 이해하기 힘든 것보다는 용서하기 힘든 구조를 받아들이는 노력이 필요해 보인다.
하지만 이런 불편함이나 오해는 공부할 대상의 정체가 무엇인지 끝까지 살펴보게 만드는 추진력이 될 수 있어 오히려 좋은 출발점이다. 새로운 개념이나 기술의 도입도 결국은 기존의 시스템을 잘 이해하는 사람들이 주도할 수 있다. 이상은 마이크로서비스 빼고는 이미 알만큼 아는 독자를 향한 응원이다.
“항만 노동자, 조타수, 사람이 살 수 있는 행성을 만드는 방법으로 미세한 기능 지원 사업 시작하기” - 이 책의 영문 제목(Bootstrapping Microservices with Docker, Kubernetes, and Terraform)을 각 단어 본래의 일반적인 의미로 번역해봤다. 실제 의미를 전달하지 못하니 무의미하지만, 한편으로는 일상에서 사용하는 단어에 의미를 부여해서 사용하는 언어권에서는 조금 더 기술적인 이해가 쉽겠다는 생각이 든다. 번역은 다른 언어권에서 사용하는 의미를 최대한 잘 옮기려는 노력이다. 번역하면서 적당한 우리말 단어의 선택에 많은 고민이 있었고, 의미를 정확하게 전달할 수 있거나 실제로 이 분야에서 사용하는 단어를 우선적으로 선택하려고 노력했다. 결과적으로 최선의 선택이 아닌 표현이 있더라도 독자의 양해를 구하고 싶다.

옮긴이 소개

최준

기계공학을 전공했던 학창시절에 누구에게나 매력 덩어리였던 컴퓨터로 기계의 데이터를 처리하고 동작을 제어하는 과정에서 흥미를 갖게 돼 정보기술 분야에 뛰어들었다. 2001년부터 마이크로소프트 한국, 싱가폴 지사에서 근무하고 아시아 지역 200여 개의 글로벌 기업 현장에서 기술 지원을 수행하면서 다양한 기업용 IT 솔루션의 문제를 이해하고, 해결 방안을 찾는 소중한 경험을 갖게 됐다. 이후에는 여러 프로젝트에서 .NET 기반의 C# 개발자로서 상용 프로그램을 공급하는 즐거움도 누릴 수 있었다. 현재는 캐나다에 IT 컨설팅 회사를 설립하고, 기업 고객에게 필요한 소프트웨어 개발과 컨설팅 서비스를 제공하고 있다.

목차

목차
  • 1장. 마이크로서비스를 왜 쓰는가
  • 1.1 이 책은 실용서다
  • 1.2 무엇을 배울까?
  • 1.3 미리 알아야 할 지식
  • 1.4 복잡성 관리
  • 1.5 마이크로서비스란 무엇인가
  • 1.6 마이크로서비스 앱이란 무엇인가
  • 1.7 모놀리스의 문제점
  • 1.8 왜 마이크로서비스를 많이 사용할까?
  • 1.9 마이크로서비스의 장점
  • 1.10 마이크로서비스의 단점
  • 1.11 마이크로서비스 최신 도구 사용
  • 1.12 마이크로서비스 앱의 설계
  • 1.13 예제 응용프로그램
  • 요약

  • 2장. 첫 마이크로서비스 만들기
  • 2.1 새로운 도구
  • 2.2 코드 가져오기
  • 2.3 Node.js를 사용하는 이유
  • 2.4 개발 원칙
  • 2.5 단일 서비스 개발 환경 구성
  • 2.5.1 깃 설치
  • 2.5.2 코드 복제
  • 2.5.3 비주얼 스튜디오 코드 받기
  • 2.5.4 Node.js 설치
  • 2.6 비디오 스트리밍용 HTTP 서버 만들기
  • 2.6.1 Node.js 프로젝트 만들기
  • 2.6.2 익스프레스 설치
  • 2.6.3 익스프레스 설치
  • 2.6.4 간단한 웹서버 시작하기
  • 2.6.5 스트리밍 비디오 추가
  • 2.6.6 마이크로서비스 설정
  • 2.6.7 운영 환경 설치
  • 2.6.8 빠른 반복을 위한 라이브 리로딩
  • 2.6.9 2장의 완성된 코드 실행
  • 2.7 Node.js 검토
  • 2.8 배움을 이어 가기
  • 요약

  • 3장. 첫 마이크로서비스 게시
  • 3.1 새로운 도구
  • 3.2 코드 받기
  • 3.3 컨테이너의 개념
  • 3.4 이미지의 개념
  • 3.5 도커를 사용하는 이유
  • 3.6 도커로 수행할 작업
  • 3.7 도커로 개발 환경 확장하기
  • 3.7.1 도커 설치
  • 3.7.2 도커 설치 확인
  • 3.8 마이크로서비스 패키징
  • 3.8.1 도커 파일 만들기
  • 3.8.2 도커 이미지 패키징과 검사
  • 3.8.3 컨테이너에서 마이크로서비스 부팅하기
  • 3.9 마이크로서비스 게시하기
  • 3.9.1 프라이빗 컨테이너 레지스트리 생성하기
  • 3.9.2 마이크로서비스를 레지스트리에 푸시하기
  • 3.9.3 레지스트리에서 마이크로서비스 부팅하기
  • 3.10 도커 정리하기
  • 3.11 배움을 이어 가기
  • 요약

  • 4장. 마이크로서비스 데이터 관리
  • 4.1 새로운 도구
  • 4.2 코드 다운받기
  • 4.3 도커 컴포즈로 마이크로서비스 개발하기
  • 4.3.1 도커 컴포즈를 사용하는 이유
  • 4.3.2 도커 컴포즈 설치
  • 4.3.3 도커 컴포즈 파일 만들기
  • 4.3.4 마이크로서비스 앱 부팅
  • 4.3.5 앱 실행
  • 4.3.6 앱 종료
  • 4.3.7 도커 컴포즈를 운영 환경에 사용한다면?
  • 4.4 앱에 파일 저장소 추가
  • 4.4.1 애저 저장소 사용하기
  • 4.4.2 비디오 스트리밍 마이크로서비스 업데이트
  • 4.4.3 새로운 마이크로서비스를 도커 컴포즈 파일에 추가하기
  • 4.4.4 업데이트한 앱 테스트하기
  • 4.4.5 클라우드 저장소와 클러스터 저장소의 비교
  • 4.4.6 우리가 해낸 것
  • 4.5 데이터베이스를 앱에 추가하기
  • 4.5.1 MongoDB를 사용하는 이유
  • 4.5.2 개발 환경에 데이터베이스 서버 추가하기
  • 4.5.3 운영 환경에 데이터베이스 서버 추가
  • 4.5.4 마이크로서비스-데이터베이스 또는 앱-데이터베이스
  • 4.5.5 우리가 해낸 것
  • 4.6 도커 컴포즈 다시 보기
  • 4.7 배움을 이어 가기
  • 요약

  • 5장. 마이크로서비스 간의 통신
  • 5.1 새로운 도구와 익숙한 도구 소개
  • 5.2 코드 다운받기
  • 5.3 마이크로서비스 간의 대화
  • 5.4 히스토리 마이크로서비스 소개
  • 5.5 빠른 개발 주기를 위한 라이브 리로드
  • 5.5.1 히스토리 마이크로서비스의 보조 기능
  • 5.5.2 마이크로서비스에 라이브 리로드 추가
  • 5.5.3 개발과 운영 환경의 도커파일 구분
  • 5.5.4 라이브 리로드를 위한 도커 컴포즈 파일 업데이트
  • 5.5.5 라이브 리로드 테스트하기
  • 5.5.6 개발 환경에서 운영 모드 테스트하기
  • 5.5.7 우리가 해낸 것
  • 5.6 마이크로서비스의 통신 방법들
  • 5.6.1 직접 메시징
  • 5.6.2 간접 메시징
  • 5.7 HTTP를 사용한 직접 메시징
  • 5.7.1 HTTP를 사용하는 이유
  • 5.7.2 특정 마이크로서비스에 직접 메시지 전달하기
  • 5.7.3 HTTP POST 메시지 보내기
  • 5.7.4 HTTP POST 메시지 수신하기
  • 5.7.5 업데이트한 앱 테스트
  • 5.7.6 순차적 직접 메시지
  • 5.7.7 우리가 해낸 것
  • 5.8 래빗MQ를 사용한 간접 메시징
  • 5.8.1 래빗MQ를 사용하는 이유
  • 5.8.2 간접 메시지의 대상 마이크로서비스 찾기
  • 5.8.3 래빗MQ 서버 만들기
  • 5.8.5 래빗MQ 대시보드 살펴보기
  • 5.8.5 마이크로서비스의 메시지 큐 연결
  • 5.8.6 단일 수신자를 위한 간접 메시징
  • 5.8.7 다중 수신 메시지
  • 5.8.8 간접 메시징 제어
  • 5.8.9 우리가 해낸 것
  • 5.9 마이크로서비스 통신 다시 보기
  • 5.10 배움을 이어 가기
  • 요약

  • 6장. 운영 환경 구축
  • 6.1 새로운 도구
  • 6.2 코드 다운로드
  • 6.3 운영 환경 구축
  • 6.4 코드형 인프라
  • 6.5 쿠버네티스에 마이크로서비스 호스팅하기
  • 6.5.1 쿠버네티스를 사용하는 이유
  • 6.6.2 쿠버네티스 동작 원리
  • 6.6 애저 CLI 사용하기
  • 6.6.1 애저 CLI 설치
  • 6.6.2 애저 인증
  • 6.6.3 쿠버네티스 버전
  • 6.6.4 우리가 해낸 것
  • 6.7 테라폼으로 인프라 만들기
  • 6.7.1 테라폼을 사용하는 이유
  • 6.7.2 테라폼 설치
  • 6.7.3 테라폼 프로젝트 설치
  • 6.8 애저 리소스 그룹 만들기
  • 6.8.1 테라폼을 사용해 진화하는 설계
  • 6.8.2 인프라 생성 스크립트
  • 6.8.3 테라폼 초기화
  • 6.8.4 테라폼 초기화의 부산물
  • 6.8.6 플러그인 버전
  • 6.8.6 인프라 구성하기
  • 6.8.7 테라폼 상태의 이해
  • 6.8.8 인프라 제거와 재생성
  • 6.8.9 우리가 해낸 것
  • 6.9 컨테이너 레지스트리 생성
  • 6.9.1 인프라의 지속적인 개선
  • 6.9.2 컨테이너 레지스트리 생성
  • 6.9.3 테라폼 OUTPUT
  • 6.9.4 우리가 해낸 것
  • 6.10 설정 데이터 공유를 위한 리펙토링
  • 6.10.1 지속적인 인프라 개선
  • 6.10.2 테라폼 변수 소개
  • 6.11 쿠버네티스 클러스터 만들기
  • 6.11.1 클러스터 생성 스크립트
  • 6.11.2 애저의 클러스터 인증
  • 6.11.3 클러스터 구성하기
  • 6.11.4 우리가 해낸 것
  • 6.12 쿠버네티스로 작업하기
  • 6.12.1 쿠버네티스 인증
  • 6.12.2 쿠버네티스 CLI
  • 6.12.3 쿠버네티스 대시보드
  • 6.12.4 우리가 해낸 것
  • 6.13 테라폼 다시 보기
  • 6.14 배움을 이어 가기
  • 요약

  • 7장. CD 파이프라인
  • 7.1 새로운 도구와 익숙한 도구
  • 7.2 코드 다운받기
  • 7.3 지속적인 인프라 개선
  • 7.4 지속적인 서비스 제공과 배포
  • 7.5 테라폼으로 컨테이너 배포하기
  • 7.5.1 쿠버네티스 제공자 설정하기
  • 7.5.2 데이터베이스 배포
  • 7.5.3 CD 준비 작업
  • 7.5.4 새 데이터베이스 서버 테스트하기
  • 7.5.5 래빗MQ 배포와 테스트
  • 7.5.6 보안의 강화
  • 7.5 테라폼으로 첫 마이크로서비스 배포하기
  • 7.6.1 지역변수를 사용한 동작 설정
  • 7.6.2 도커 이미지 빌드와 게시
  • 7.6.3 컨테이너 레지스트리 인증
  • 7.6.4 video - streaming 마이크로서비스 배포
  • 7.6.5 마이크로서비스 테스트하기
  • 7.6.6 우리가 해낸 것
  • 7.7 비트버킷 파이프라인을 사용한 CD
  • 7.7.1 비트버킷 파이프라인을 사용하는 이유
  • 7.7.2 비트버킷에서 예제 코드 가져오기
  • 7.7.3 배포 쉘 스크립트 만들기
  • 7.7.4 테라폼 상태 정보 관리
  • 7.7.5 비트버킷 파이프라인 스크립트
  • 7.7.6 환경변수 설정하기
  • 7.7.7 배포 파이프라인 테스트
  • 7.7.8 배포 파이프라인 디버깅
  • 7.7.9 우리가 해낸 것
  • 7.8 배움을 이어 가기
  • 요약

  • 8장. 마이크로서비스의 자동 테스트
  • 8.1 새로운 도구
  • 8.2 코드 다운받기
  • 8.3 마이크로서비스 테스트
  • 8.4 자동 테스트
  • 8.5 제스트를 사용한 테스트
  • 8.5.1 제스트를 쓰는 이유
  • 8.5.2 제스트 설치
  • 8.5.3 math 라이브러리 테스트
  • 8.5.4 첫 번째 제스트 테스트
  • 8.5.5 테스트의 첫 실행
  • 8.5.6 제스트를 사용한 라이브 리로드
  • 8.5.7 테스트 실패 해석하기
  • 8.5.8 npm을 사용한 제스트 호출
  • 8.5.9 테스트 세트의 활용
  • 8.5.10 제스트를 사용한 모형 만들기
  • 8.5.11 지금까지 해낸 일
  • 8.6 단위 테스트
  • 8.6.1 메타데이터 마이크로서비스
  • 8.6.2 제스트로 단위 테스트 만들기
  • 8.6.3 테스트 실행
  • 8.6.4 지금까지 완료한 것
  • 8.7 통합 테스트
  • 8.7.1 테스트 코드
  • 8.7.2 MongoDB 데이터베이스 실행
  • 8.7.3 데이터베이스 초기 데이터 가져오기
  • 8.7.4 제스트로 통합 테스트 만들기
  • 8.7.5 테스트 실행
  • 8.7.6 지금까지 완료한 것
  • 8.8 E2E 테스트
  • 8.8.1 싸이프러스 소개
  • 8.8.2 싸이프러스 설치
  • 8.8.3 싸이프러스 사용자 인터페이스 시작
  • 8.8.4 초기 데이터 설정
  • 8.8.5 앱 부팅하기
  • 8.8.6 싸이프러스로 E2E 테스트 만들기
  • 8.8.7 싸이프러스를 npm으로 호출하기
  • 8.8.8 지금까지 완료한 것
  • 8.9 CD 파이프라인 자동 테스트
  • 8.10 테스트 검토
  • 8.11 배움을 이어 가기
  • 요약

  • 9장. 플릭스튜브 탐색
  • 9.1 새로운 도구는 없다
  • 9.2 코드 다운로드
  • 9.3 필수 기술 점검
  • 9.4 플릭스튜브 개요
  • 9.4.1 플릭스튜브 마이크로서비스
  • 9.4.2 마이크로서비스 프로젝트 구조
  • 9.4.3 플릭스튜브 프로젝트 구조
  • 9.5 개발 환경에서 플릭스튜브 실행하기
  • 9.5.1 마이크로서비스 부팅하기
  • 9.5.2 앱 부팅하기
  • 9.6 개발 환경에서 플릭스튜브 테스트하기
  • 9.6.1 제스트로 마이크로서비스 테스트하기
  • 9.6.2 싸이프러스로 앱 테스트하기
  • 9.7 플릭스튜브 심층 분석
  • 9.7.1 초기 데이터
  • 9.7.2 스토리지 모형화
  • 9.7.3 게이트웨이
  • 9.7.4 사용자 인터페이스
  • 9.7.5 비디오 스트리밍
  • 9.7.6 비디오 업로드
  • 9.8 테라폼으로 운영 환경에 플릭스튜브를 수동으로 배포하기
  • 9.8.1 테라폼 스크립트 구조
  • 9.8.2 사전 준비 사항
  • 9.8.3 애저 인증
  • 9.8.4 스토리지 설정
  • 9.8.5 앱의 배포
  • 9.8.6 정상 동작 확인하기
  • 9.8.7 해체 작업
  • 9.8.8 테라폼 모듈
  • 9.9 운영 환경 지속적 배포
  • 9.9.1 사전 준비 사항
  • 9.9.2 코드 리포지터리 구성
  • 9.9.3 백엔드 준비하기
  • 9.9.4 배포 쉘 스크립트
  • 9.9.5 플릭스튜브 CD 설정
  • 9.9.6 CD 파이프라인 테스트
  • 9.9.7 자동 테스트 추가
  • 9.10 다시 보기
  • 9.11 미래의 플릭스튜브
  • 9.12 배움을 이어 가기
  • 요약

  • 10장. 튼튼한 마이크로서비스
  • 10.1 튼튼한 마이크로서비스 유지하기
  • 10.2 마이크로서비스 모니터링
  • 10.2.1 개발 환경의 로깅
  • 10.2.2 오류 처리
  • 10.2.3 도커 컴포즈로 로깅하기
  • 10.2.4 쿠버네티스의 기본 로깅
  • 10.2.5 쿠버네티스에 대한 자신만의 로그 수집
  • 10.2.6 기업용 로깅, 모니터링과 알림
  • 10.2.7 쿠버네티스 헬스 체크를 사용한 자동 재시작
  • 10.2.8 여러 개의 마이크로서비스 추적하기
  • 10.3 마이크로서비스 디버깅
  • 10.3.1 디버깅 프로세스
  • 10.3.2 운영 환경 마이크로서비스 디버깅
  • 10.4 신뢰성과 복원
  • 10.4.1 방어적 프로그래밍 실행
  • 10.4.2 방어적 테스트 실행
  • 10.4.3 데이터 보호
  • 10.4.4 복제와 다중화
  • 10.4.5 문제 격리와 원활한 기능 축소
  • 10.4.6 내결함성을 위한 간단한 기술
  • 10.4.7 내결함성을 위한 고급 기술
  • 10.5 배움을 이어 가기
  • 요약

  • 11장. 확장성으로 가는 길
  • 11.1 확장성은 미래다
  • 11.2 개발 프로세스 확장
  • 11.2.1 여러 팀
  • 11.2.2 독립적인 마이크로서비스
  • 11.2.3 코드 리포지터리 분리
  • 11.2.4 CD 파이프라인 분리
  • 11.2.5 메타리포
  • 11.2.6 다중 환경 만들기
  • 11.2.7 운영 워크플로
  • 11.3 성능 확장성
  • 11.3.1 클러스터의 수직 확장
  • 11.3.2 클러스터의 수평 확장
  • 11.3.3 개별 마이크로서비스의 수직 확장
  • 11.3.4 클러스터의 탄력적인 확장
  • 11.3.5 개별 마이크로서비스를 탄력적으로 확장하기
  • 11.3.6 데이터베이스 확장
  • 11.3.7 인프라 변경 관리
  • 11.4 보안
  • 11.4.1 신뢰 모델
  • 11.4.2 민감한 설정
  • 11.5 마이크로서비스 리팩토링
  • 11.6 마이크로서비스 예산
  • 11.7 단순하게 출발하기
  • 11.8 배움을 이어 가기
  • 요약

  • 부록 A 베이그런트를 사용한 개발 환경 만들기
  • 부록 B 마이크로서비스 치트키

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[p.88 : 7행]
chapter-2example-3\index.js:7
->
chapter-2\example-3\index.js:7

[p.164]
set STORAGEACCESSKEY
->
set STORAGEACCOUTNAME

[p.202 : 예제 5.4]
package.jsob
->
package.json

[p.286 : 그림]
SHH 터널
->
SSH 터널