[도서내용]
현대컴퓨팅아키텍처의가장큰특징은'느슨한결합(looselycoupled)'으로이루어진컴퓨팅아키텍처라고할수있다.클라우드시대가본격적으로열리면서컴퓨팅리소스는더이상영속적이지않다.부지불식간에사라질수도있고,자동확장(auto-scale)에의해몇배또는몇십배이상갑자기늘어날수도있다.그렇기때문에서비스를이루는컴포넌트들은예전처럼'견고한결합(stronglycoupled)'으로연결될수없다.단적인예를하나들자면,현대컴퓨팅환경에서는기존의서버/클라이언트구조를고수해직접통신하게되면,통신을하던서버가언제든사라질수도있기때문에,근래의컴퓨팅통신은직접통신대신비동기메시징(AsynchronousMessaging)프레임워크를기반으로간접적으로데이터를주고받는형태를취한다.
또다른특징으로는기업내데이터의중앙화를들수있다.이전세대에서는회사의각서비스별로별도의데이터파이프라인(ETL:데이터추출Extract,변환Transform,로드Load)계층이나데이터분석용시스템을운영했기때문에회사전체의데이터가파편화되어총합적인데이터분석이매우어려웠다.이전시대의서비스에서는각서비스의데이터에만기반해분석해도어느정도사용자의만족을끌어낼수있었다.하지만서비스들이고도로연결되어있는오늘날에는여러상황이급변했다.예를들어,특정회사의메신저서비스를사용하는고객분석을하려면,고객의메신저서비스사용정보뿐만아니라그고객이같은회사에서이용하는블로깅,소셜네트워크,사진서비스등의사용데이터를가져와모두분석해야만사용자의만족을끌어내는고객서비스자료를얻어낼수있다.
과거에는많은서비스에서생성되는모든이벤트를모았을때이부하를견딜만한서비스버스시스템(ServiceBusSystem)이전혀없었기때문에어려운일이었지만,최근에는강력한메시지처리성능(HighThroughput)과빠른수평확장성(Scale-out),고장감내성(Fault-torelance)에기반한이벤트버스애플리케이션이기도한카프카의도입으로만족할만한수준의분석기술이가능해진것이다.따라서오늘날데이터분석을중점에둔대규모회사를중심으로카프카를전격도입해중앙데이터파이프라인으로매우중요하게사용하고있는회사들이속속늘어나고있다.
카프카는전통적인메시지시스템으로서메시징처리뿐만아니라,사용자의웹사이트활동추적파이프라인으로활용하고애플리케이션의통계를집계해모니터링데이터로사용한다.그리고예전에는데이터가필요하면,데이터를관장하는조직에요청하고기다리는작업을수없이반복함으로써데이터분석에걸리는시간이늘고효율도떨어졌지만,카프카를사용함으로써이벤트소싱과같이시간순으로발생하는이벤트를카프카라는데이터버스에저장해서,필요한조직이나인력이이데이터를필요한때에언제든즉시활용할수있도록데이터분석환경이빠르게바뀌고있다.
아파치카프카는이처럼비동기통신방식을매우큰규모로,아주빠르게처리할수있게개발된애플리케이션이다.2011년초세상에공개된이후,현재넷플릭스,링크드인,에어비앤비,마이크로소프트,우버,카카오,라인과같이사용자의데이터를심층적으로실시간분석해서사용해야하는수많은기업에서비동기전용프레임워크로도입해사용하고있다.
단순한메시징큐서비스를뛰어넘어기업내핵심플랫폼중하나로서카프카를도입하는회사가속속늘어나고있는이시점에서,카프카를이해하길원하고카프카를활용한비동기시스템구성과데이터파이프라인을만들고싶어하는분들에게이책이큰도움이되길바란다.
[이책의구성]
'1부,카프카를시작하며'
'1장,카프카소개'에서는카프카가탄생할당시링크드인의상황을통해데이터처리시스템의변화를알아보면서카프카의역사를살펴본다.또한,메시징시스템의기본적인동작방식과카프카의특징도자세히알아본다.
'2장,카프카설치'에서는대표적인분산애플리케이션인카프카를위한안정적인코디네이션애플리케이션인주키퍼에대해자세히알아보고주키퍼와카프카의관계를살펴본다.어느책에서도자세히다루지않아사용자들이가장어려워하는주키퍼설치과정을그림과코드와함께설명하고카프카를설치하고실행,상태확인하는과정까지단계별로자세히설명한다.
'2부,기본개념과운영가이드'
'3장,카프카디자인'에서는분산시스템,페이지캐시,배치처리로대표되는카프카의특징과함께고성능,고가용성으로대변되는카프카리플리케이션의개념,리더와팔로워의역할을다룬다.또한카프카에서사용하는필수용어를알아보고카프카에서사용하는주키퍼의지노드에대해알아본다.
'4장,카프카프로듀서'에서는프로듀서의주요옵션을알아보고,콘솔프로듀서,자바와파이썬언어를이용한프로듀서예제코드를실행해보고,메시지전송방법으로서동기전송과비동기전송방법에대해알아본다.그외에도프로듀서의옵션에따라손실없이메시지를전송하는방법도자세히살펴본다.
'5장,카프카컨슈머'에서는컨슈머의주요옵션을알아보고,간단한컨슈머를직접구현해보며파티션개수에따라메시지를가져올때의주의사항과자동커밋,수동커밋과오프셋에대한내용을다룬다.
'6장,카프카운영가이드'에서는카프카를운영하면서반드시알아둬야하는필수카프카명령어들과카프카모니터링방법에대해자세히살펴보고,카프카를좀더손쉽게관리할수있는GUI관리도구인카프카매니저의설치와활용방법도알아본다.카프카운영에대해자주묻는질문과답변도정리해실었다.
'3부,카프카의확장과응용'
'7장,카프카활용'에서는최근많이사용되고있는엘라스틱서치(Elasticsearch),키바나(Kibana),파일비트(Filebeat)등을활용해실제로메시지를보내고,가져오며,저장한후,확인하는방법까지실제예제를통해배워보며아파치나이파이(NiFi)를이용해데이터파이프라인을구성하는예제까지다룬다.
'8장카프카스트림즈API'에서는스트림프로세싱의개념을알아보고,스파크나스톰과같은별도의스트리밍엔진없이도카프카를이용해실시간분석을수행할수있는방법을실전예제와함께배워본다.또한,카프카스트림즈API를이용해파이프,행분리,단어빈도수세기프로그램도만들어본다.
'9장,KSQL을이용한스트리밍처리'에서는KSQL의등장배경과KSQL아키텍처에대해자세히알아보고,별도의앱을개발하지않고도KSQL의간단한쿼리문만으로도실시간스트리밍데이터로다양한분석이가능한,KSQL을이용한스트림분석방법을살펴본다.
'10장,그밖의클라우드기반메시징서비스'에서는카프카를사용하기어려운환경이나직접메시징서비스를운영하기어려운회사에서카프카의대안으로,클라우드기반의메시징서비스를활용해볼수있도록각서비스의개요,연동,사용방법등을알아본다.마지막으로,카프카와여타클라우드기반메시징서비스를비교해본다.
'부록,도커를이용한카프카설치'에서는카프카를서버에직접설치하지않고도사용할수있는방법으로,최근인기가높은도커(Docker)를이용한카프카설치방법을리눅스,맥,윈도우버전별로살펴본다.
[이책의독자대상]
-카프카를배우고자하는초보자부터카프카를직접운영하는관리자
-데이터표준화와실시간처리에대해고민하는개발자
-이벤트소싱을활용한데이터처리를활용하려는개발자
-효율적으로데이터를수집하고처리,분석하기를원하는개발자
-실시간데이터파이프라인을구축하고애플리케이션을개발하는아키텍트와개발자
-이벤트기반방식의비동기시스템개발업무를맡은모든개발자
[이책의내용과특징]
-카프카의탄생배경과동작원리
-주키퍼와카프카설치및클러스터구성에대한자세한설명
-자바와파이썬을이용한카프카프로듀서와컨슈머의예제코드와활용
-카프카운영에필요한주요명령어설명
-주키퍼와카프카의노드추가와스케일아웃가이드
-편리한GUI도구인카프카매니저의설치와활용
-이해하기쉽게그림으로설명하는주요카프카아키텍처
-카프카를활용한실시간스트림분석완벽가이드
-엘라스틱서치와아파치나이파이등을활용한데이터파이프라인구성예제