1장,‘모놀리식vs마이크로서비스’는모놀리식대마이크로서비스기반애플리케이션에대한상위수준의개요를제공한다.
2장,‘클라우드네이티브애플리케이션’에서는독립적으로확장할수있는서비스로빌드되는애플리케이션을개발하기위해컨테이너기반환경의클라우드네이티브애플리케이션을빌드하는방법에대한개요를제공한다.이장에서는컨테이너화를통해폴리글랏앱을사용한Development(Dev)의용이성과서비스분리로인한Operations(Ops)의추가적인책임부여에대해설명한다.
3장,‘서비스메시아키텍처’에서는서비스메시라는용어의발전과기원을다룬다.Dev(프로바이더)와Ops(소비자)간의분리에이전트로서서비스메시에대한개요를제공하고스마트엔드포인트를통한기본/고급서비스통신과마이크로서비스간의트러스트를설명한다.
4장,‘서비스메시프로바이더’에서는Istio,Linkerd,Consul의세가지오픈소스서비스메시프로바이더의개요를제공한다.
5장,‘서비스메시인터페이스와SPIFFE’에서는진화하는서비스메시인터페이스스펙을소개한다.
6장,‘나만의쿠버네티스환경만들기’에서는책전체에서다루는세가지프로바이더와서비스메시를배우기위해필수적인개발환경을갖추는방법을설명한다.이장에서는예제를실습할수있도록단일노드쿠버네티스환경을구축하는간단한방법을제공한다.
7장,‘Istio서비스메시이해’에서는Istio컨트롤플레인아키텍처의특징과기능을보여준다.
8장,‘데모애플리케이션설치’에서는Istio용데모애플리케이션을설치하는방법을보여준다.
9장,‘Istio설치’에서는서비스메시의최종목표에맞게각각다른프로필을사용해Istio를설치하는다양한방법을보여준다.
10장,‘Istio트래픽관리살펴보기’에서는카나리아테스트,A/B테스트,트래픽분할,셰이핑(shaping),조건부라우팅의관점에서Istio의트래픽라우팅기능을보여준다.
11장,‘Istio보안기능살펴보기’에서는mTLS,보안게이트웨이및Istio시타델(Citadel)을인증기관으로사용해서비스간통신을보호하는방법을살펴본다.
12장,‘Istio정책제어활성화’에서는애플리케이션을변경하지않고도네트워크제어,속도제한,쿼터적용을활성화하는방법을살펴본다.
13장,‘Istio텔레메트리기능살펴보기’에서는Prometheus,Grafana,Kiali의관찰기능을사용해수집한지표와서비스간통신을표시하는방법을살펴본다.
14장,‘Linkerd서비스메시이해’에서는컨트롤플레인관점에서Linkerd의아키텍처를보여주며,특징과기능을살펴본다.
15장,‘Linkerd설치’에서는쿠버네티스에Linkerd를설치하는방법,Linkerd데모이모지애플리케이션을설정하는방법및사이드카프록시를주입하는방법을살펴본다.
16장,‘Linkerd의신뢰성기능살펴보기’에서는Linkerd트래픽신뢰성기능을알아보고로드밸런싱,재시도,트래픽분할,타임아웃서킷브레이크,동적요청라우팅을다룬다.
17장,‘Linkerd의보안기능살펴보기’에서는기본적인구성없이mTLS를설정하고인증서생성프로세스와관련해점진적으로설치하는프로세스를설명한다.
18장,‘Linkerd의관찰성기능살펴보기’에서는Linkerd대시보드와CLI에대해자세히설명한다.
19장,‘Consul서비스메시이해’에서는컨트롤플레인관점에서Consul의아키텍처를보여주며,그특징과기능을살펴본다.
20장,‘Consul설치’에서는쿠버네티스와VM/베어메탈머신에Consul을설치하는방법을알아본다.
21장,‘Consul의서비스디스커버리기능살펴보기’에서는Consul서비스디스커버리,키-값저장소,ACL,인텐션,모니터링/메트릭수집을설명하는데모애플리케이션을보여준다.쿠버네티스가아닌환경에서실행되는외부서비스의통합프로세스를설명한다.
22장,‘Consul의트래픽관리기능살펴보기’에서는오픈소스프로젝트Ambassador를사용해Consul을통합하는방법을보여준다.속도제한,셀프서비스라우팅,테스트,엔보이사이드카프록시사용을통한엔드투엔드TLS활성화와같은트래픽관리기능을보여준다.
◈옮긴이의말◈
클라우드는이제새로운기술이아니다.시스템을설계하거나서비스를개발할때당연히클라우드를먼저고려한다.아니,클라우드에서설계하거나개발하지못하는이유를설명하는시대가됐다.
최근몇년간단순히클라우드에서서비스를하는것을넘어클라우드의특성을잘살려서사용할수있는클라우드네이티브에관심이많아지고있다.클라우드네이티브는기술기반에따라인프라스트럭처,플랫폼,애플리케이션으로구분된다.개발자중상당수가클라우드네이티브애플리케이션에관심이있으며,이는결국마이크로서비스아키텍처에대한관심으로귀결된다.아마존과넷플릭스에서적용해기업의혁신을이끌어냈다고회자되면서많은사람들의주목을받았고지금도현재진행형이다.
마이크로서비스아키텍처는비즈니스민첩성과빠른배포를위해많은기업에서앞다투어적용하려고한다.다만서비스를작게만들어개발하고운영하는것그이상을생각해야한다.이를위해많은플랫폼과오픈소스가필요하며,때로는마이크로서비스패턴을자신의코드안에넣어야할지도모른다.이런어려움을다해결해주진못하지만상당부분도움을주는기술이서비스메시다.서비스메시는마이크로서비스아키텍처의적용을넘어장점을더잘드러나게하는기술이다.
마이크로서비스와더불어비즈니스민첩성과빠른배포를위한IT조직의문화와프로세스,시스템의혁신을강조하는데브옵스에서도서비스메시가재능을발휘할수있다.개발자는서비스개발에초점을맞추고,운영자는운영에초점을맞춰야하는것은당연함에도,운영에필요한코드가서비스개발에들어가있는경우는흔히볼수있다.서비스메시는운영에필요한코드를분리해냄으로써이를완벽하게지원한다.
쿠버네티스는마이크로서비스아키텍처와잘어울리는플랫폼으로서국내에서많은사례와개발자운영자를보유하고있다.대표적인서비스메시기술인Istio는개발초기부터쿠버네티스와의결합을염두에두고시작했기때문에,쉽게적용할수있다.
쿠버네티스가훌륭한플랫폼임에도능숙하게활용하기에는시간이걸리듯서비스메시기술도능숙하게적용하기에는쉽지않다.이책은그런고민에훌륭한해답을제시한다.다만대표적인세가지서비스메시기술을모두담기에는부족한지면과서비스메시가빠르게변화하고진화한다는점은이책의한계다.저자가이책을쓴당시와지금은많이다른측면이있다.버전도많이올라가있으며,대표적인세가지서비스메시기술도초기와는다르게서로비슷하게발전해나가고있다.그럼에도저자는업데이트된버전을온라인으로지속해서제시하고있으므로독자에게는다행이라할수있다.
아직까지도서비스메시와관련된책이많지않은상황에서,이책으로서비스메시아키텍처를조금더잘이해하고,더나은시스템을만들기를기대한다.
이책은서비스메시로마이크로서비스플랫폼을조금더나은플랫폼으로진화시키고자노력하는사람을대상으로하며,쿠버네티스와같은플랫폼에대해기본적으로이해가있는독자를대상으로하는만큼어려울수있다.모르는내용이있을경우관련책을읽거나교육을받기를권한다.이책을읽고AWS와Azure,GCP와같은PublicCloud에서서비스메시를실습하고테스트하는것은아주좋은방법이다.특히각공급자마다특성이있기때문에이를잘비교해선택한다면서비스메시는여러분의일을많이도와줄것이다.
양준기
현재많은기업이기존모놀리식아키텍처의한계를극복하고클라우드환경에서의시스템운영이점을극대화하고자마이크로서비스아키텍처를채택하고있다.그러나마이크로서비스아키텍처는서비스간복잡한연결구조때문에장애추적이어렵고,장애가발생한서비스로인한장애전파현상이나타나게된다.이러한서비스간통신을추상화해서안전하고빠르고신뢰할수있게하기위한마이크로서비스간커뮤니케이션인프라가바로서비스메시아키텍처다.
기존의서비스아키텍처에서의호출이직접호출방식이었다면,서비스메시에서의호출은자체인프라계층의프록시로이루어지게된다.이는서비스의트래픽을네트워크단에서통제할수있게한다.서비스메시없이동작하는마이크로서비스는서비스간커뮤니케이션을통제하는로직으로코딩해야하기때문에개발자들이비즈니스로직에집중하지못하게된다.그러나서비스메시를활용하면개발자들이비즈니스가치를추구하는일에좀더집중할수있고,가시적인인프라계층을제공하므로문제를손쉽게인식하고진단할수있다.
클라우드에관심이많은사람으로서이책은서비스메시의개념을이해하고,대표적인서비스메시기술을접할수있는좋은책이라고생각한다.이미마이크로서비스에대한지식을기본적으로갖춘사람이라면실습을통해이책을충분히이해하고따라갈수있을것이다.독자들이서비스메시를더잘이해하고즐겁게사용할수있기를바란다.
지은정