이책에서다루는내용
이스티오리소스에대한포괄적인설명
서비스메시기능을시연하는실용적인예제
웹어셈블리를활용한이스티오확장
트래픽라우팅과관찰가능성
가상머신의메시통합
이책의대상독자
사용자대상웹애플리케이션,API,백엔드서비스같은분산서비스를운영중이거나운영할계획이있는개발자,아키텍트,서비스운영자를대상으로한다.최종사용자에게고가용성서비스를제공할때이책이도움이될것이다.혹은조직내많은개발팀에게인프라와로그관리,모니터링,컨테이너오케스트레이션등의지원요소를제공하는플랫폼엔지니어링팀의일원이라면,이책은앱을복원력있고안전하고관찰가능하게만들수있으면서새로운기능을출시하는데따르는위험을줄일수있는도구를사용자에게제공하는방법을보여준다.
이스티오를테스트또는스테이징환경에서사용하고있지만작동원리에대해많이알지못한다면,이책은이스티오의구성요소를명확히이해하는데도움이될것이다.특히후반부에서는조직에서서비스메시를어떻게확장하는지,동작이예상과다를때어떻게트러블슈팅하는지,어떻게회사의필요에맞게커스터마이징하는지를보여준다.
지난3년간현장에서쌓은경험을이책에녹여내기위해심혈을기울였기때문에이스티오전문가인독자도이책을유용하게활용할수있을것이다.컨테이너구축이처음이거나쿠버네티스
디플로이먼트(deployment),파드,서비스가무엇인지잘모른다면,이책이아직적합하지않을수있다.다행히처음시작하는데도움이되는자료가많이있다.여기서는마르코룩샤(MarkoLuksa)의『쿠버네티스인액션』(에이콘,2020)을강력히추천한다.이책은쿠버네티스에대한빈틈없는입문서일뿐아니라흥미로운내용을담고있다.쿠버네티스의기초와관련리소스,쿠버네티스컨트롤러의동작방식까지이해하고나면이책으로다시돌아와이스티오서비스메시를깊이파고들수있을것이다.
뿐만아니라네트워킹에대한기본적인이해도필요하다.여기서‘기본적인이해’란말그대로기초적인수준의지식을말한다.OSI모델의네트워크계층(3계층)과전송계층(4계층)에친숙하고이계층들이애플리케이션계층(7계층)과무엇이다른지잘알고있다면,이책을읽을준비가된것이다.
이책의구성
총4개부,14개장으로구성돼있다.1부는서비스메시의개념을소개하고,이스티오가서비스메시를어떻게구현하는지설명한다.1부에속하는3개장에서는이스티오의아키텍처를알아보고,엔보이가그안에서어떤역할을하고이스티오를사용했을때조직이어떤이점을얻을수있는지알아본다.
1장에서는이스티오의장점과서비스메시도입이조직에가져다줄수있는가치를소개한다.
2장은쿠버네티스클러스터에이스티오를설치하는실습튜토리얼을보여준다.첫번째애플리케이션을배포하고메시에통합한후,이를이스티오의커스텀리소스로설정해본다.또한데모애플리케이션을사용해이스티오의기본기능을개괄적으로설명하고트래픽관리,관찰가능성,보안을다룬다.
3장은엔보이를집중해살펴본다.엔보이가어떻게등장했는지,어떤문제를해결하는지,서비스메시아키텍처에서어떤역할을하는지등을설명한다.
2부에서는이스티오를깊이있게다룬다.실용적인예제로초점을맞춰‘클러스터로들어오는트래픽을보호하는방법은무엇인가?’,‘서비스를더복원력있게만드는방법은무엇인가?’,‘서비스프록시가생성하는텔레메트리를사용해시스템을관찰가능하게만드는방법은무엇인가?’등의주요운영관련질문에답해본다.2부는6개장으로구성돼있다.
4장은이스티오인그레스게이트웨이를사용해퍼블릭네트워크에서서비스로트래픽을안전하게라우팅하는방법을설명한다(일명north-south트래픽).
5장은트래픽을클러스터에허용한이후의과정을다루며,VirtualService와DestinationRule을사용해트래픽을세밀하게라우팅하는방법을보여준다.세밀한트래픽라우팅덕분에새소프트웨어를릴리스할때위험을줄여주는복잡한배포패턴을사용할수있다.
6장에서는애플리케이션팀에게이스티오가어떤이점이있는지살펴본다.재시도,회로차단,리전(region)간로드밸런싱,지역성인식로드밸런싱기능을서비스메시에서구현해서비스를견고하게만드는방법을설명한다.
7장에서는이스티오가메트릭,트레이싱,로그를생성해서비스를관찰가능하게만드는방법을설명한다.여기서는서비스프록시가생성하는메트릭,메트릭이기록하는정보,기록하는정보를커스터마이징하는방법을자세히살펴본다.
8장에서는수집된데이터를이해하는데도움이되는텔레메트리시각화도구의사용법을다룬다.이를위해메트릭을프로메테우스(Prometheus)로수집하고그라파나(Grafana)로시각화한다.또한서비스들을거치는요청의트레이스를예거(Jaeger)로연결하고,키알리(Kiali)가이정보들을어떻게결합해메시안의서비스문제해결을간편하게만드는지보여준다.
9장에서는이스티오가서비스간트래픽을어떻게보호하는지,서비스가어떻게자신의ID를부여받는지,그ID를어떻게사용해접근제어를구현하고잠재적인공격범위를줄이는지를자세히설명한다.
3부는서비스를운영하는단계에초점을맞췄다.따라서데이터플레인에서발생하는문제를해결하고컨트롤플레인의안정성과성능을유지하는방법을주로다룬다.이부분을마무리하면,이스티오의내부구조를충분히이해하게돼서문제를스스로발견하고해결하는능력을갖추게될것이다.
10장에서는Istioctl,키알리등의도구와수집돼시각화된텔레메트리를사용해데이터플레인의문제를해결하는방법을보여준다.
11장에서는이스티오의성능에영향을미치는요소들을다루며,이스티오를어떻게설정해야컨트롤플레인의성능을높일수있는지보여준다.이는견고한서비스메시의토대가된다.
마지막으로4부에서는이스티오를커스터마이징하는방법을소개한다.기업들은서로다른클러스터,서로다른네트워크또는클라우드네이티브워크로드와레거시워크로드의혼합과같이다양한환경에서서비스를운영하고있다.4부를마치고나면,워크로드를단일메시로통합하고웹어셈블리를활용해자신만의요구사항에맞게메시의동작을커스터마이징하는방법을알게될것이다.
12장은서로다른쿠버네티스클러스터에서실행중인워크로드를연결하는방법을보여준다.이를테면다른클라우드제공자,온프레미스(on-premise),또는하이브리드클라우드에서실행되는클러스터를연결하는방법이다.
13장에서는가상머신에서실행되는레거시워크로드를메시에통합하고메시의복원력과고가용성기능을해당워크로드에확장하는방법을보여준다.
14장에서는기존엔보이기능이나루아스크립트및웹어셈블리코드를사용해이스티오의기능을확장하고커스터마이징하는방법을설명한다.
지은이의말
소프트웨어개발은어렵다.네트워크를통해서로다른서비스를연결하는것은더욱까다롭다.네트워크로패킷,메시지,요청을보낼때는그결과를보장할수없다.요청이도착할까?얼마나걸릴까?통신이실패한다면누군가알아챌수있을까?
도커와쿠버네티스는마이크로서비스같은분산형서비스아키텍처를지원하는데많은역할을했지만,기존의통신문제를악화시키기도했다.서비스하나가문제를일으키면모든것이멈출수있다.
마이크로서비스를도입하려는전세계조직과함께일하면서,팀들이이런통신문제를지속적으로고민하고해결하는것이무척어려운일이라는사실을알게됐다.통신문제에는다음과같은많은질문거리가있다.서비스디스커버리는어떻게할까?타임아웃은?재시도는?회로차단은?트레이싱은?인증은?넷플릭스,트위터,구글과같은대형클라우드기업은초기의마이크로서비스아키텍처를성공적으로개척했다.이회사들은통신과관련된문제를해결하기위해많은개발자도구와인프라를직접만들어야했는데,다행히도상당부분을오픈소스로공개했다.다른조직에서도NetflixOSS스택이나트위터피네이글(Finagle)을사용할수있을까?물론사용할수있고,누군가는그렇게했다.하지만그후악몽같은운영문제가시작됐다.
예를들어NetflixOSS스택은주로자바개발자를위해작성됐다.그럼NodeJS,Go,파이썬개발팀은어떻게해야할까?이팀들은라이브러리를직접만들거나인터넷에서여러조각을그러모아기능을구현해야했으며,이‘네트워킹’코드를자신의비즈니스로직에섞어넣어야했다.이런접근법은전이적종속성을추가하고코드를어지럽히며,수정하기어렵게만들었다.이렇게애플리케이션네트워킹라이브러리가포함된서비스아키텍처를운영하고업그레이드하고패치하는것은,특히이를다양한프로그래밍언어에일관되게수행하는것은극히복잡하고오류가발생하기쉬운일이었다.
서비스메시는이런애플리케이션-네트워킹문제를더깔끔하게해결하는방법이다.서비스메시를이용하면애플리케이션-네트워킹로직을전용인프라로추상화해언어에상관없이모든서비스에적용할수있다.이스티오는확장성있고성숙하며강력한서비스메시구현체로,IBM과구글의프로젝트에서시작됐다.나는2017년1월에이스티오팀을소개받은이후아주초기부터프로젝트에참여했다.2018년말에는서비스메시기술에전념하고애플리케이션네트워킹의발전에힘쓰고자스타트업인Solo.io에글로벌필드CTO로합류했다.
스타트업을밑바닥부터성장시키는것,기술의경계를넓히는것과이주제에대해깊이있는책을저술하는작업을병행하는것은쉬운일이아니었다.그래서집필작업을진전시키는데도움을줄헌신적이고열정적인사람이필요했다.원고를절반가량집필했을무렵매닝출판사편집팀과나는라이너말로쿠를이책의공동저자로초대했다.우리는커뮤니티에서활동하고Solo.io에서고객(그중일부는전세계에서이스티오운영규모가가장크다)과함께일하면서많은시간을보냈기때문에,현실의경험을바탕으로이스티오에대한훌륭한자료를엮어낼수있었다.이책이여러분에게이스티오의가치와강력함을보여줄뿐아니라다른사례들처럼프로덕션에이스티오를채택하는과정에서편안함을느끼게해주길기대한다.
옮긴이의말
최근몇년간서비스메시에대한필요성이크게증가하고있습니다.마이크로서비스와클라우드네이티브애플리케이션시대가도래하면서분산시스템은더욱복잡해지고있으며,동시에급변하는고객의요구에빠르게대응하기위해애자일방법론의중요성도날로커지고있습니다.이러한두흐름이맞물리면서개발자의부담을줄이고효과적으로시스템을관리할수있는방법에대한요구가증가하고있으며,그해결책으로서서비스메시의중요성이대두됐습니다.
서비스메시란무엇이며,왜필요할까요?마이크로서비스아키텍처에서는수많은서비스가서로통신해야합니다.이과정에서보안,로드밸런싱,모니터링등의과제가생기게되는데,서비스메시는이러한과제를해결하는기술입니다.특히서비스메시를사용하면각서비스간의통신을일관되게관리하고제어할수있어시스템의복잡성을크게줄일수있습니다.
그렇다면왜여러서비스메시중에서이스티오를선택해야할까요?이스티오는서비스메시기술의사실상표준으로자리잡고있습니다.오픈소스기술을채택할때커뮤니티의생명력은매우중요한요소인데,커뮤니티의활동이멈추면오픈소스로서의강점을상실하기때문입니다.이스티오는커뮤니티가대단히활발하며,IT최전선에있는기업들,예를들어카카오,토스,크래프톤등이채택하고있어신뢰할만한기술임을증명하고있습니다.
이책의매력은무엇일까요?이스티오에대한정보의원천으로공식문서가있지만,대부분의문서가개별적인기능만을다루기때문에체계적인학습에는한계가있습니다.게다가이러한