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

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

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

코넬리아데이비스

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

목차

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.1SDLC전체를지원하는플랫폼
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.3HTTP세션과스티키세션
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.2API게이트웨이
10.2.1클라우드네이티브소프트웨어에서API게이트웨이사례
10.2.2API게이트웨이토폴로지
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우리는그냥수박겉핥기중이다
__요약

출판사 서평

★이책에서다루는내용★

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

★이책의대상독자★

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

★이책의구성★

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

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

★옮긴이의말★

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

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