공용준
지은이:고승범
현재카카오에재직중인시스템엔지니어로서카카오와관련된여러서비스를지원하며전사공용카프카와래빗엠큐를운영하고있다.새로운것에호기심이많은편이며열심히노력하는엔지니어다.팝잇(Popit.kr)사이트의저자로활동중이며카프카관련연재글을연재하고있다.
지은이:공용준
국내최대메신저회사에서클라우드서비스개발리딩을맡고있으며,데이터센터자동화,프라이빗/퍼블릭클라우드서비스와그에필요한기술을연구,개발해서실제서비스에적용하고있다.2015년에는캐나다밴쿠버에서열린오픈스택서밋에서국내개발자중최초로'SDNwithoutSDN'이라는제목으로발표했고,2016년(도쿄)과2017년(몬트리얼)Netdev컨퍼런스에서역시국내최초로확장가능한컨테이너네트워크에대해발표했다.한국데이터베이스진흥원자문위원,클라우드컴퓨팅조합에서멘토로도활동중이다.
1부카프카를시작하며
1장카프카란무엇인가
1.1카프카의탄생배경
1.2카프카의동작방식과원리
1.3카프카의특징
1.4카프카의확장과발전
1.5정리
2장카프카와주키퍼설치
2.1카프카관리를위한주키퍼
2.2주키퍼설치
__2.2.1주키퍼다운로드
__2.2.2주키퍼실행
2.3카프카설치
__2.3.1카프카다운로드
__2.3.2카프카환경설정
__2.3.3카프카실행
2.4카프카상태확인
__2.4.1TCP포트확인
__2.4.2주키퍼지노드를이용한카프카정보확인
__2.4.3카프카로그확인
2.5카프카시작하기
2.6정리
2부기본개념과운영가이드
3장카프카디자인
3.1카프카디자인의특징
__3.1.1분산시스템
__3.1.2페이지캐시
__3.1.3배치처리
3.2카프카데이터모델
__3.2.1토픽의이해
__3.2.2파티션의이해
__3.2.3오프셋과메시지순서
3.3카프카의고가용성과리플리케이션
__3.3.1리플리케이션팩터와리더,팔로워의역할
__3.3.2리더와팔로워의관리
3.4모든브로커가다운된다면
3.5카프카에서사용하는주키퍼지노드역할
3.6정리
4장카프카프로듀서
4.1콘솔프로듀서로메시지보내기
4.2자바와파이썬을이용한프로듀서
__4.2.1메시지를보내고확인하지않기
__4.2.2동기전송
__4.2.3비동기전송
4.3프로듀서활용예제
4.4프로듀서주요옵션
4.5메시지전송방법
__4.5.1메시지손실가능성이높지만빠른전송이필요한경우
__4.5.1메시지손실가능성이적고,적당한속도의전송이필요한경우
__4.5.2전송속도는느리지만,메시지손실이없어야하는경우
4.6정리
5장카프카컨슈머
5.1컨슈머주요옵션
5.2콘솔컨슈머로메시지가져오기
5.3자바와파이썬을이용한컨슈머
5.4파티션과메시지순서
__5.4.1파티션3개로구성한peter-01토픽과메시지순서
__5.4.2파티션1개로구성한peter-02토픽과메시지순서
5.5컨슈머그룹
5.6커밋과오프셋
__5.6.1자동커밋
__5.6.2수동커밋
__5.6.3특정파티션할당
__5.6.4특정오프셋부터메시지가져오기
5.7정리
6장카프카운영가이드
6.1필수카프카명령어
__6.1.1토픽생성
__6.1.2토픽리스트확인
__6.1.3토픽상세보기
__6.1.4토픽설정변경
__6.1.5토픽의파티션수변경
__6.1.6토픽의리플리케이션팩터변경
__6.1.7컨슈머그룹리스트확인
__6.1.8컨슈머상태와오프셋확인
6.2주키퍼스케일아웃
6.3카프카스케일아웃
6.4카프카모니터링
__6.4.1카프카JMX설정방법
__6.4.2JMX모니터링지표
6.5카프카매니저
__6.5.1카프카매니저설치
__6.5.2카프카클러스터등록
__6.5.3카프카매니저메뉴설명
6.6카프카운영에대한Q&A
6.7정리
3부카프카의확장과응용
7장카프카를활용한데이터파이프라인구축
7.1카프카를활용한데이터흐름도
7.2파일비트를이용한메시지전송
__7.2.1파일비트설치
__7.2.2파일비트설정
__7.2.3카프카토픽의메시지유입확인
7.3나이파이를이용해메시지가져오기
__7.3.1나이파이설치
__7.3.2나이파이설정
__7.3.3나이파이를이용한컨슈머설정
7.4실시간분석을위해엘라스틱서치에메시지저장
__7.4.1엘라스틱서치설치
__7.4.2엘라스틱서치설정
__7.4.3나이파이를이용해엘라스틱서치로데이터전송
7.5키바나를이용해엘라스틱서치에저장된데이터확인
__7.5.1키바나설치
__7.5.2키바나설정
7.6현재의토픽을이용해새로운토픽으로메시지재생산
__7.6.1나이파이를이용한카프카컨슈머추가
__7.6.2나이파이를이용한토픽별라우팅작업
7.7정리
8장카프카스트림즈API
8.1스트림프로세싱기초
__8.1.1스트림프로세싱과배치프로세싱
__8.1.2상태기반과무상태스트림처리
8.2카프카스트림즈
__8.2.1카프카스트림즈의특징과개념
__8.2.2카프카스트림즈아키텍처
8.3카프카스트림즈를위한환경설정
8.4파이프예제프로그램만들기
8.5행분리예제프로그램만들기
8.6단어빈도수세기예제프로그램만들기
8.7정리
9장카프카SQL을이용한스트리밍처리
9.1KSQL의등장배경
9.2KSQL과카파아키텍처
9.3KSQL아키텍처
__9.3.1KSQL서버
__9.3.2KSQL클라이언트
9.4도커를이용한KSQL클러스터설치
9.5KSQL을이용한스트림분석
__9.5.1데이터준비
__9.5.2기본스트림과테이블생성
__9.5.3쿼리를이용한새로운스트림과테이블생성
9.6정리
10장그밖의클라우드기반메시징서비스
10.1구글의펍/섭서비스소개
10.2구글의펍/섭서비스연동
__10.2.1구글SDK설치
__10.2.2구글펍/섭CLI로토픽사용
10.3펍/섭파이썬SDK사용하기
__10.3.1펍/섭파이썬라이브러리설치
__10.3.2구글서비스계정인증정보생성
__10.3.3파이썬SDK사용하기
10.4아마존키네시스서비스소개
10.5아마존키네시스연동
__10.5.1아마존CLI설치
__10.5.2아마존CLI로키네시스사용하기
10.6아마존키네시스자바SDK사용하기
__10.6.1컨슈머코드예제
__10.6.2프로듀서코드예제
10.7카프카와클라우드서비스와의비교
10.8정리
부록도커를이용한카프카설치
A.1도커설치
__A.1.1리눅스버전도커설치
__A.1.2맥버전도커설치
__A.1.3윈도우버전도커설치
A.2도커버전카프카설치
데이터플랫폼의핵심컴포넌트로각광받고있는,이벤트기반비동기아키텍처를위한고가용성실시간분산스트리밍솔루션카프카(Kafka)의모든것!
국내최대모바일플랫폼회사인카카오에서'전사공용카프카'서비스를운영하고,데이터파이프라인과빅데이터플랫폼을구축한저자들의풍부한지식,생생한실전경험,노하우가가득담긴책!
카프카사용자는물론이고아직카프카를도입하지않은기업이나담당자들을대상으로,카프카를손쉽게설치하고구성하는방법,비동기메시지처리법과함께프로그램개발방법도차근차근익혀본다.또한,손쉽게메시징시스템을도입할수있도록카프카의내부디자인과프로듀서/컨슈머의특징을심도있게다뤘다.아울러,카프카를데이터버스로활용해서실시간데이터를분석하는방법을여러방면의예를들어자세히설명하고,카프카기반의실시간데이터분석시스템을개발하는과정을자세한설명과함께샘플코드도제공하고있어서실시간/배치분석업무를수행하는빅데이터분석가나데이터엔지니어,이벤트기반방식의비동기시스템개발업무를맡은모든개발자에게도움이될것이다.
[도서내용]
현대컴퓨팅아키텍처의가장큰특징은'느슨한결합(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도구인카프카매니저의설치와활용
-이해하기쉽게그림으로설명하는주요카프카아키텍처
-카프카를활용한실시간스트림분석완벽가이드
-엘라스틱서치와아파치나이파이등을활용한데이터파이프라인구성예제
