Top

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

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

책 소개

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

요약

마이크로서비스는 더 이상 일부 전문가만을 위한 영역이 아니며, 작은 프로젝트를 위한 개념도 아니다. 주요 클라우드 서비스인 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장. 마이크로서비스를 왜 쓰는가

  • 2장. 첫 마이크로서비스 만들기

  • 3장. 첫 마이크로서비스 게시

  • 4장. 마이크로서비스 데이터 관리

  • 5장. 마이크로서비스 간의 통신

  • 6장. 운영 환경 구축

  • 7장. CD 파이프라인

  • 8장. 마이크로서비스의 자동 테스트

  • 9장. 플릭스튜브 탐색

  • 10장. 튼튼한 마이크로서비스

  • 11장. 확장성으로 가는 길

도서 오류 신고

도서 오류 신고

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

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

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