실무자 관점에서 다룬 마이크로서비스 아키텍처 (마이크로서비스 아키텍처 전략과 기술 | 2 판)

실무자 관점에서 다룬 마이크로서비스 아키텍처 (마이크로서비스 아키텍처 전략과 기술 | 2 판)

$35.89
Description
개발자와 아키텍트, 데브옵스, 관리자를 위한 마이크로서비스 완벽 가이드!
1부에서 마이크로서비스라는 용어를 정의하고, 마이크로서비스 아키텍처는 마이크로(micro) 아키텍처와 매크로(macro) 아키텍처라는 두개의 레벨로 구성돼 있음을 설명한다. 레거시 시스템을 마이크로서비스로 마이그레이션하는 방법을 설명한다. 2부에서는 마이크로서비스를 구축할 수 있는 스택을 설명한다. 마이크로서비스를 구현할 때 사용할 수 있는 기술, 도커, 프론트 엔드의 통합, ESI, 비동기 및 통신, 아파치 카프카, Atom, 넷플릭스 스택, 컨설(Consul)과 아파치 httpd 서버, 쿠버네티스, PaaS를 클라우드 파운드리를 설명한다. 3부에서는 마이크로서비스를 지탱할 수 있는 운영을 설명한다. 많은 마이크로서비스를 안전하게 운영할 수 있는 운영의 기본 원칙과 마이크로서비스 운영이 어려운 이유를 설명한다. 모니터링 및 프로메테우스(Prometheus), 로그 데이터 분석을 위한 일래스틱 스택, 마이크로서비스 간의 호출을 추적하는 집킨(Zipkin)을 사용한다. 서비스 메시 기술인 이스티오(Istio)를 설명한다. 마지막에 마이크로서비스의 전망을 살펴본다. 예시는 스프링 부트와 스프링 클라우드, 도커를 기반으로 설명한다.
저자

에버하르트볼프

아키텍트와컨설턴트로서15년이상의경력을쌓았다.비즈니스와기술의교차점을고민하는독일INNOQ의연구원이다.국제콘퍼런스에서발표했으며강연자로서저자로서마이크로서비스와지속적배포와관련된100개이상의기사와책을저술했다.최신아키텍처즉,클라우드,지속적배포,데브옵스,마이크로서비스에관심을두고있다.

목차

0장.소개

0.1이책의구성
0.2이책의대상독자
0.3사전지식
0.4빠른시작
0.5감사의말
0.6웹사이트

1장.마이크로서비스

1.1마이크로서비스:정의
1.2마이크로서비스를사용하는이유
1.3도전과제
1.4변형
1.5결론

2장.마이크로아키텍처와매크로아키텍처

2.1바운디드컨텍스트와전략적설계
2.2기술적마이크로와매크로아키텍처
2.3운영:마이크로아키텍처또는매크로아키텍처
2.4마이크로아키텍처를선호한다!
2.5조직측면
2.6독립시스템아키텍처원칙
2.7변형
2.7결론

3장.마이그레이션

3.1마이그레이션을수행하는이유
3.2일반적인마이그레이션전략
3.3대안전략
3.4빌드,운영,조직
3.5변형
3.6결론

4장.도커

4.1마이크로서비스에서도커를사용하는이유
4.2도커기본내용
4.3도커설치와도커커맨드
4.4도커머신으로도커호스트설치
4.5도커파일
4.6도커컴포즈
4.7변형
4.8결론

5장.기술관점의마이크로아키텍처

5.1요구사항
5.2리액티브
5.3스프링부트
5.4Go
5.5변형
5.6결론

6장.독립시스템

6.1독립시스템에대한근거
6.2정의
6.3예제
6.4SCS와마이크로서비스
6.5도전과제
6.6장점
6.7변형
6.8결론

7장.개념:프론트엔드통합

7.1프론트엔드:모놀리스또는모듈화
7.2옵션
7.3자원지향클라이언트아키텍처
7.4도전
7.5장점
7.6변형
7.7결론

8장.레시피:링크와클라이언트통합하기

8.1개요
8.2예시
8.3변형
8.4실험
8.5결론

9장.레시피:ESI를사용한서버측통합

9.1ESI:개념
9.2예시
9.3바니시
9.4레시피변형
9.5실험
9.6결론

10장.개념:비동기마이크로서비스

10.1정의
10.2이벤트
10.3도전과제
10.4장점
10.5변형
10.6결론

11장.레시피:메시징과카프카

11.1메시지지향미들웨어
11.2카프카의아키텍처
11.3카프카이벤트
11.4예시
11.5레시피변형
11.6실험
11.7결론

12장.레시피:Atom및REST로비동기통신

12.1Atom포맷
12.2예시
12.3레시피변형
12.4실험
12.5결론

13장.개념:동기마이크로서비스

13.1정의
13.2장점
13.3도전과제
13.4변형
13.5결론

14장.레시피:넷플릭스스택기반의REST

14.1예시
14.2유레카:서비스탐색
14.3라우터:주울
14.4로드밸런싱:립본
14.5복원력:히스트릭스
14.6레시피변형
14.7실험
14.8결론

15장.레시피:컨설을이용한REST와아파치httpd서버

15.1예시
15.2서비스탐색:컨설
15.3라우팅:아파치httpd서버
15.4컨설템플릿
15.5컨설과스프링부트
15.6DNS와레지스트레이터
15.7레시피변형
15.8실험
15.9결론

16장.개념:마이크로서비스플랫폼

16.1정의
16.2변형
16.3결론

17장.레시피:쿠버네티스와도커컨테이너

17.1쿠버네티스
17.2쿠버네티스예시
17.3세부예시
17.4쿠버네티스의추가기능
17.5레시피변형
17.6변형
17.7결론

18장.레시피:클라우드파운드리의PaaS

18.1PaaS:정의
18.2클라우드파운드리
18.3클라우드파운드리예시
18.4레시피변형
18.5실험
18.6서버리스
18.7결론

19장.개념:운영

19.1운영이중요한이유
19.2마이크로서비스운영을위한접근방법
19.3살펴본기술의효과
19.4결론

20장.레시피:프로메테우스를이용한모니터링

20.1기본내용
20.2마이크로서비스의메트릭
20.3프로메테우스통계
20.4프로메테우스예시
20.5레시피변형
20.6실험
20.7결론

21장.레시피:일래스틱스택을활용한로그분석

21.1기본내용
21.2일래스틱스택을사용해로그저장하기
21.3예시
21.4레시피변형
21.5실험
21.6결론

22장.레시피:집킨으로추적하기

22.1기본사항
22.2집킨으로추적하기
22.3예시
22.4레시피변형
22.5결론

23장.레시피:서비스메시,이스티오

23.1서비스메시란?
23.2예시
23.3이스티오의동작방식
23.4프로메테우스와그라파나로모니터링하기
23.5재거로추적하기
23.6로깅
23.7복원력
23.8도전사항
23.9장점
23.10변형
23.11실험
23.12결론

24장.정리

부록A.환경설치
부록B.메이븐커맨드
부록C.도커와도커컴포즈커맨드

출판사 서평

★이책의대상독자★

마이크로서비스의기본원칙과기술적측면을설명해,다양한독자에게흥미를제공할것이다.

■개발자:적합한기술스택을선택할수있는가이드라인을제공하는2부가도움될것이다.예시로제공되는프로젝트는기술의기초를배우는토대역할을한다.예시프로젝트에포함된마이크로서비스는스프링프레임워크(SpringFramework)를사용해자바(Java)로작성한다.그러나예시에사용된기술은마이크로서비스를통합한다.따라서추가적인마이크로서비스는다른언어로작성될수있다.3부에서는개발자가앞으로더욱중요하게생각하는운영주제를포함했다.1부에서는아키텍처개념의기본원리를설명한다.

■아키텍트:1부는마이크로서비스에대한기본지식을제공한다.마이크로서비스아키텍처를구현하기위한실제레시피와기술을제시하는2부와3부가도움될것이다.마이크로서비스에대한주제를통해아키텍트에중점을두지만기술을자세히다루지않는점을참고하길바란다.

■데브옵스와운영전문가:3부의레시피는로그분석,모니터링,마이크로서비스추적과같은운영측면의기술적평가가가능한견고한토대를제공해유익할것이다.2부에서는도커,쿠버네티스,클라우드파운드리와같은배포기술을소개하고일부운영상의문제도해결하는방법을소개한다.1부에서는마이크로서비스아키텍처접근방법의배경에대해설명한다.

■관리자:마이크로서비스아키텍처접근법의장점과구체적인문제점에대한개요를부분적으로설명한다.기술적세부사항에관심이있다면2부와3부를읽는것이좋다.

독자가소프트웨어아키텍처와소프트웨어개발에대한기본지식이있다고가정한다.이책의예시대부분은사전지식없이실행할수있는방법으로문서화돼있다.그리고다른프로그래밍언어를사용하는마이크로서비스에사용할수있는기술에중점을둔다.그러나예시는스프링부트와스프링클라우드프레임워크를사용해자바로작성됐다.

★이책의구성★

1부-아키텍처기본내용
1부에서는마이크로서비스기반아키텍처의기본원리를소개한다.
■1장에서는마이크로서비스라는용어를정의한다.
■마이크로서비스아키텍처는마이크로(micro)아키텍처와매크로(macro)아키텍처라는두개의레벨을갖고있다.전역적인결정과지역적인결정을나타낸다.2장에서는이를설명한다.
■때로는레거시시스템은마이크로서비스로마이그레이션(migration)돼야한다.3장에서마이그레이션을다룰것이다.

2부-기술스택
2부의중점내용은기술스택이다.
■도커는많은마이크로서비스아키텍처의기반기술이다.또한소프트웨어롤아웃(roll-out)과서비스운영을용이하게한다.이는4장에서설명한다.
■5장은마이크로서비스를구현할때사용할수있는기술을설명한다.
■6장은마이크로서비스를위한특히유용한접근법으로서독립시스템(SCS)을설명한다.SCS는UI뿐만아니라로직을포함하는마이크로서비스에중점을둔다.
■SCS에서통합을통해얻을수있는가능성은웹프론트엔드의통합이다.프론트엔드통합은마이크로서비스간의결합도를낮추고고도의유연성을제공한다.자세한내용은7장을살펴보자.
■8장에서소개할웹프론트엔드통합레시피는다이내믹콘텐츠로딩에대한링크와자바스크립트를이용한다.해당통합방법은구현하기쉽고잘설계된웹기술을사용한다.
■서버는ESI(EdgeSideIncludes)를사용해통합할수있다.ESI는시스템이고성능과신뢰성을달성할수있도록웹캐시에서구현된다.이는9장에서설명한다.
■비동기통신개념은10장에서다룬다.비동기통신은안정성을향상시키고시스템의결합도를낮춘다.
■11장에서는아파치카프카(ApacheKafka)를소개한다.아파치카프카는메시지를보내는비동기기술의한예다.카프카는메시지를영구적으로저장할수있고비동기처리에대한다양한접근방법을제공한다.
■12장에서는비동기통신의대안으로Atom을설명한다.Atom은REST인프라를사용하고구현과운영이매우쉽다.
■13장에서는동기마이크로서비스의개념을구현하는방법을설명한다.동기통신방법이응답시간과신뢰성과관련해어려움을제기할수있지만마이크로서비스간의동기통신이실제로사용되는경우가많다.
■14장에서소개할넷플릭스스택(NetflixStack)은서비스탐색이가능한유레카(Eureka)를제공할뿐만아니라로드밸런싱을위한립본(Ribbon),복원력을위한히스트릭스(Hystrix),라우팅을위한주울(Zuul)을제공한다.넷플릭스스택은특히자바커뮤니티에서널리사용하고있다.
■15장에서소개할컨설(Consul)은서비스탐색(ServiceDiscovery)대안가운데하나다.컨설은다양한기능을포함하고있고다양한기술과함께사용할수있다.
■16장은마이크로서비스의운영과통신을지원하는마이크로서비스플랫폼개념을설명한다.
■17장에서소개할쿠버네티스는도커컨테이너를실행할수있는마이크로서비스플랫폼이면서서비스탐색과로드밸런싱을위한솔루션도제공한다.마이크로서비스는쿠버네티스와독립적이다.
■18장의PaaS(PlatformasaService)는또다른마이크로서비스플랫폼이다.클라우드파운드리(CloudFoundry)를예시로들어설명한다.클라우드파운드리는매우유연하며퍼블릭클라우드뿐만아니라회사내부컴퓨팅센터에서도실행할수있다.

3부-운영
굉장히많은마이크로서비스를안전하게운영하는것은큰도전과제다.3부에서는이문제를해결할수있는방법을논의한다.
■19장에서는운영의기본원칙과마이크로서비스운영이왜어려운지설명한다.
■20장에서는모니터링을다루고프로메테우스(Prometheus)툴을소개한다.프로메테우스는다차원데이터구조를지원하며수많은마이크로서비스인스턴스의메트릭을분석할수있다.
■21장은로그데이터분석에중점을둔다.데이터분석툴로일래스틱스택을설명한다.일래스틱스택은매우인기가있으며많은양의로그데이터를분석하기위한좋은토대가된다.
■22장에서는추적기술을통해마이크로서비스간의호출을추적하는집킨(Zipkin)을사용한다.집킨은다양한플랫폼을지원하고추적분야에서사실상표준이다.
■서비스메시기술은마이크로서비스간의네트워크트래픽에프록시를추가한다.프록시는모니터링,로그분석,추적,기타탄력성,보안과같은기능을지원한다.23장에서는서비스메시의예시로이스티오(Istio)를설명한다.

결론과부록
마지막장인24장에서마이크로서비스의전망을살펴본다.
부록A에서는소프트웨어설치,부록B에서는빌드툴인메이븐(Maven),부록C에서는도커와도커컴포즈(DockerCompose)를사용해예시환경을실행하는방법을설명한다.

★옮긴이의말★

저는처음근무했던알티캐스트에서셋톱박스미들웨어개발에참여했습니다.미들웨어는운영체제또는하드웨어벤더의인터페이스를연동하는포팅레이어,JVM,애플리케이션관리레이어,통신레이어,서비스정보관리레이어등다양한모듈을하나의바이너리로생성한다음하드웨어플래시롬에저장해셋톱박스에자바애플리케이션을돌아가도록했습니다.모놀리스(Monolith)구조였고모듈별강한응집도,낮은결합도를목표로하고모듈별담당자를둬서생산성을높였습니다.단점이라면하나의문제만으로도전체적인품질을떨어뜨릴수있다는것이었습니다.
이후에근무하던NHN시절에는네이버와한게임플랫폼을각각마이크로서비스아키텍처(MSA)와비슷한상태로실험및개발,운영했습니다.또한쓰리프트(thrift)와같은자체IDL을서비스에사용하기도했습니다.그리고서비스마다API서버를구축해유기적인결합상태로운영했습니다.저도여기에동참해동료들과함께공통모듈을개발하기도했습니다.
하지만너무많은서버노드로인해패킷이손실되기도하고어디서문제가생기는지추적하는것이어려워졌습니다.점차인원이줄어들면서모듈또는서비스운영이힘들어졌고,스프링을적용한모놀리스아키텍처를선호하기도했습니다.독립시스템의통신비용,비교적낮은성능,복잡한프로토콜,이유를알수없는패킷손실,유지보수인력등의부족으로더욱모놀리스아키텍처를추구하게됐습니다.
모놀리스아키텍처에서사용하는언어는하나이고코드저장소를함께사용합니다.그래서문제파악이쉽고통신비용이거의없습니다.내부모듈간의통신은호출로사용하고외부통신에만프로토콜을사용하니간결하고효율성이높습니다.따라서문제해결이더욱쉽기에개발인력이적어도운영할수있는구조가됩니다.그러나개발자의자유도는떨어지고점차높아지는코드의복잡성(모듈의결합도가느슨해짐)으로인해코드유지보수시간과배포시간이길어지는단점이있습니다.
요즘에는SOA(ServiceOrientedArchitecture),애자일,DDD(DomainDrivenDesign),함수형언어의부흥,클라우드,아파치카프카,폴리그랏(Polyglot),데브옵스,도커기술(쿠버네티스,이스티오)이트렌드에맞게마이크로서비스아키텍처가다시부흥하고있습니다.
마이크로서비스아키텍처의단점을이겨낼수있는도커,비동기통신기술,서킷브레이커,추적,서비스탐색,서비스메시등수많은기능들이생기고데브옵스툴이계속오픈소스로나오면서개발과운영이쉬워지고있습니다.이제는넷플릭스와아마존처럼복잡한비즈니스를마이크로서비스아키텍처로개발및운영하는것이성공사례가되고있습니다.
한편세그먼트사의사례와같이마이크로서비스아키텍처의단점이너무많아모놀리스아키텍처로되돌아간사례도있습니다(http://www.ciokorea.com/news/39258).서비스가너무많아어느코드저장소에어느프로젝트가있는지모르는경우,마이크로서비스에서사용된언어가달라동일한코드를각각구현하다보니비슷한코드들이산재된경우,비슷한코드를라이브러리버전업을할때관련된많은서비스의라이브러리를완벽하게처리하지못하는경우등다양한단점이발생할수있습니다.
이책을번역하면서소프트웨어의본질에대해다시돌아보게됐습니다.또한모놀리스아키텍처든마이크로서비스아키텍처든모듈,사람,정책과관련된전략이중요하다는것을알게됐습니다.모놀리스아키텍처에서마이크로서비스아키텍처로변경하려는작업은시스템아키텍처를완전히바꾸기때문에신중할필요가있고반드시전략이필요합니다.이책은마이크로서비스에대한전략과기술을잘설명하고있습니다.잘들여다보면각개발팀은지방분권체제를가진국가처럼지방자치단체장의리더십으로서의적절한권한,책임을가집니다.따라서리더십을전혀생각하지않고마이크로서비스를단순히개발팀이원하는언어를사용해마음대로개발하는것은이원칙에맞지않습니다.국가수장의리더십을존중하듯이마이크로서비스아키텍처에대한정책을개발팀이존중하고따라야합니다.
이책은마이크로서비스아키텍처와다양한기술만나열하지않습니다.소프트웨어의모듈이무엇인지,마이크로서비스아키텍처에서중요한부분이무엇인지강조합니다.그리고스프링프레임워크와도커,도커컴포즈(dockercompose)기반의예시로위에소개한툴을설명합니다.
이책은개발자,아키텍트,데브옵스,관리자모두에게도움이되는좋은책입니다.역자가최근에사용해본좋은기술과고민을이책에서잘소개하고있으니많은도움이될것입니다.