Description
카프카를 창시한 사람들이 쓰고, 카프카 개발에 참여한 한국인 개발자가 옮긴 핵심 실무서
모든 엔터프라이즈 애플리케이션은 로그 메시지, 지표, 사용자 행동 혹은 외부로 발신되는 메시지에 이르는 다양한 데이터를 생성하며, 이 데이터를 이동시키는 방법은 데이터 그 자체만큼이나 중요하다. 애플리케이션 아키텍트, 개발자에서부터 카프카 스트리밍 플랫폼이 처음인 프로덕션 엔지니어에 이르기까지, 업데이트된 이 개정증보판(카프카의 AdminClient API, 트랜잭션, 새로 추가된 보안 기능 그리고 툴 관련 변경점을 다루는 장들이 새로 추가됨)을 통해 이동하는 데이터를 다루는 방법에 대해 배울 수 있다.
카프카의 개발을 담당했던 컨플루언트와 링크드인의 개발자들이 카프카 클러스터를 프로덕션 환경에 설치하는 방법, 신뢰성 있는 이벤트 주도 마이크로서비스를 개발하는 방법, 그리고 카프카를 플랫폼으로 사용해서 규모 가변적인 스트림 처리 애플리케이션을 개발하는 방법을 설명한다. 상세한 예제를 통해 카프카의 설계 원칙, 신뢰성 보장, 핵심 API 그리고 복제 프로토콜, 컨트롤러, 저장 레이어에 이르는 아키텍처의 상세한 부분까지 배울 수 있다.

■ 카프카 설정, 설치에 관한 모범 사례
■ 메시지를 쓰고 읽기 위해 카프카 프로듀서와 컨슈머를 사용하는 방법
■ 신뢰성 있게 데이터를 전달하기 위한 패턴과 활용 사례 요구 사항
■ 카프카를 사용해서 데이터 파이프라인과 애플리케이션을 개발하는 모범 방법론
■ 카프카를 프로덕션 환경에서 운영할 때 모니터링하고, 튜닝하고, 유지 관리하는 방법
■ 카프카를 운영하는 데 있어서 가장 중요한 성능 지표들
■ 스트림 처리 시스템에 있어 카프카에서 사용 가능한 전달 보장

저자

그웬샤피라,토드팔리노,라지니시바람,크리트페티

저자:그웬샤피라(GwenShapira)
컨플루언트의제품담당책임자이자아파치카프카프로젝트의PMC멤버다.아파치플룸(Flume)과의통합에공헌하였고,아파치스쿱(Sqoop)의커미터이기도하다.15년간의확장가능한데이터아키텍처구축경험이있으며,이전에는클라우데라(Cloudera)의소프트웨어엔지니어,Pythian의선임컨설턴트,오라클ACE이사,NoCOUG의임원을역임하였다.

저자:토드팔리노(ToddPalino)
링크드인의수석엔지니어이며,링크드인에대규모로구축된아파치카프카와주키퍼및삼자시스템의운영및유지관리를맡고있다.또한모니터링시스템의생성을포함해서아키텍처,시스템운영,도구개발책임도담당하고있으며,오픈소스프로젝트버로우와카프카컨슈머모니터링도구의개발자이기도하다.

저자:라지니시바람(RajiniSivaram)
컨플루언트의수석엔지니어로,카프카의클러스터간복제기능과컨플루언트플랫폼,컨플루언트클라우드의보안기능을설계하고개발한다.아파치카프카프로젝트의커미터이며PMC멤버이기도하다.

저자:크리트페티(KritPetty)
링크드인에서카프카사이트신뢰성엔지니어링조직을담당하고있다.관리자가되기전에는팀에서사이트신뢰성엔지니어로일하면서카프카가기존의한계를넘어확장될수있도록개선하는작업을했다.

역자:이동진
네이버에서사내카프카서비스를개발하고있으며,관련프로젝트의사내배포판작업역시담당하고있다.오랫동안빅데이터관련작업을해오면서그만큼많은관련프로젝트에다양한기여를해왔다.아파치카프카에서는압축관련기능,아파치스파크와의레코드헤더연동기능등을개발했다.

목차


옮긴이머리말xv
베타리더후기xvi
제2판추천사xviii
제1판추천사xx
시작하며xxiii

CHAPTER1카프카시작하기1
1.1발행/구독메시지전달2
1.2카프카입문4
1.3왜카프카인가?10
1.4데이터생태계12
1.5카프카의기원15
1.6카프카시작하기18

CHAPTER2카프카설치하기19
2.1환경설정19
2.2카프카브로커설치하기23
2.3브로커설정하기25
2.4하드웨어선택하기34
2.5클라우드에서카프카사용하기36
2.6카프카클러스터설정하기37
2.7프로덕션환경에서의고려사항44
2.8요약48

CHAPTER3카프카프로듀서:카프카에메시지쓰기49
3.1프로듀서개요50
3.2카프카프로듀서생성하기52
3.3카프카로메시지전달하기54
3.4프로듀서설정하기57
3.5시리얼라이저65
3.6파티션73
3.7헤더76
3.8인터셉터77
3.9쿼터,스로틀링79
3.10요약81

CHAPTER4카프카컨슈머:카프카에서데이터읽기83
4.1카프카컨슈머:개념83
4.2카프카컨슈머생성하기90
4.3토픽구독하기91
4.4폴링루프92
4.5컨슈머설정하기94
4.6커밋과오프셋102
4.7리밸런스리스너109
4.8특정오프셋의레코드읽어오기112
4.9폴링루프를벗어나는방법113
4.10디시리얼라이저115
4.11독립실행컨슈머:컨슈머그룹없이컨슈머를사용해야하는이유와방법121
4.12요약123

CHAPTER5프로그램내에서코드로카프카관리하기125
5.1AdminClient개요126
5.2AdminClient사용법:생성??설정??닫기128
5.3필수적인토픽관리기능130
5.4설정관리134
5.5컨슈머그룹관리136
5.6클러스터메타데이터140
5.7고급어드민작업141
5.8테스트하기145
5.9요약147

CHAPTER6카프카내부메커니즘149
6.1클러스터멤버십149
6.2컨트롤러150
6.3복제158
6.4요청처리161
6.5물리적저장소169
6.6요약181

CHAPTER7신뢰성있는데이터전달183
7.1신뢰성보장184
7.2복제185
7.3브로커설정186
7.4신뢰성있는시스템에서프로듀서사용하기192
7.5신뢰성있는시스템에서컨슈머사용하기195
7.6시스템신뢰성검증하기200
7.7요약204

CHAPTER8‘정확히한번’의미구조205
8.1멱등적프로듀서206
8.2트랜잭션210
8.3트랜잭션성능225
8.4요약225

CHAPTER9데이터파이프라인구축하기227
9.1데이터파이프라인구축시고려사항228
9.2카프카커넥트vs??프로듀서/컨슈머235
9.3카프카커넥트235
9.4카프카커넥트의대안257
9.5요약258

CHAPTER10클러스터간데이터미러링하기259
10.1클러스터간미러링활용사례260
10.2다중클러스터아키텍처261
10.3아파치카프카의미러메이커275
10.4기타클러스터간미러링솔루션288
10.5요약293

CHAPTER11보안295
11.1보안설정적용하기296
11.2보안프로토콜298
11.3인증301
11.4암호화324
11.5인가326
11.6감사333
11.7주키퍼보안335
11.8플랫폼보안338
11.9요약340

CHAPTER12카프카운영하기343
12.1토픽작업343
12.2컨슈머그룹350
12.3동적설정변경353
12.4쓰기작업과읽기작업358
12.5파티션관리364
12.6기타툴374
12.7안전하지않은작업375
12.8요약377

CHAPTER13카프카모니터링하기379
13.1지표기초379
13.2서비스수준목표383
13.3카프카브로커지표386
13.4클라이언트모니터링410
13.5랙모니터링417
13.6종단모니터링418
13.7요약419

CHAPTER14스트림처리421
14.1스트림처리란무엇인가?423
14.2스트림처리개념426
14.3스트림처리디자인패턴434
14.4예제로보는카프카스트림즈443
14.5카프카스트림즈:아키텍처개요452
14.6스트림처리활용사례459
14.7스트림처리프레임워크선택하기460
14.8요약462

APPENDEXA다른운영체제에카프카설치하기465
A.1윈도우시스템에설치하기465
A.2macOS에설치하기468

APPENDEXB추가적으로사용할수있는툴471
B.1통합플랫폼471
B.2클러스터설치및관리473
B.3모니터링및데이터탐색474
B.4클라이언트라이브러리476
B.5스트림처리476

찾아보기477

출판사 서평

카프카를창시한사람들이쓰고,카프카개발에참여한한국인개발자가옮긴핵심실무서

모든엔터프라이즈애플리케이션은로그메시지,지표,사용자행동혹은외부로발신되는메시지에이르는다양한데이터를생성하며,이데이터를이동시키는방법은데이터그자체만큼이나중요하다.애플리케이션아키텍트,개발자에서부터카프카스트리밍플랫폼이처음인프로덕션엔지니어에이르기까지,업데이트된이개정증보판(카프카의AdminClientAPI,트랜잭션,새로추가된보안기능그리고툴관련변경점을다루는장들이새로추가됨)을통해이동하는데이터를다루는방법에대해배울수있다.

카프카의개발을담당했던컨플루언트와링크드인의개발자들이카프카클러스터를프로덕션환경에설치하는방법,신뢰성있는이벤트주도마이크로서비스를개발하는방법,그리고카프카를플랫폼으로사용해서규모가변적인스트림처리애플리케이션을개발하는방법을설명한다.상세한예제를통해카프카의설계원칙,신뢰성보장,핵심API그리고복제프로토콜,컨트롤러,저장레이어에이르는아키텍처의상세한부분까지배울수있다.

카프카설정,설치에관한모범사례
메시지를쓰고읽기위해카프카프로듀서와컨슈머를사용하는방법
신뢰성있게데이터를전달하기위한패턴과활용사례요구사항
카프카를사용해서데이터파이프라인과애플리케이션을개발하는모범방법론
카프카를프로덕션환경에서운영할때모니터링하고,튜닝하고,유지관리하는방법
카프카를운영하는데있어서가장중요한성능지표들
스트림처리시스템에있어카프카에서사용가능한전달보장

책속에서

카프카는스트림처리(14장에서다룹니다)에등장하는‘이벤트스트림’의개념을닮았습니다.스트림처리애플리케이션이‘이벤트스트림’의‘현재상태’를조망하기위해‘상태저장소’를필요로하듯이,카프카와같은시스템을이해하기위해서는우선‘현재상태’를명료하게정리해줄수있는무엇인가가필수적입니다.이책은오랫동안카프카를개발해온분들이직접쓴카프카에대한안내서입니다.지금까지카프카를발전시켜온‘이벤트스트림’을만들어온사람들이만든‘상태저장소’라고할수있겠네요.꽤긴시간동안카프카프로젝트에기여해온저역시이책이한국독자들을위한좋은‘상태저장소’역할을할수있었으면좋겠다는생각을하면서이책을번역했습니다.
---「옮긴이머리말」중에서

아파치카프카는위에서설명한것과같은문제를해결하기위해고안된메시지발행/구독시스템이다.‘분산커밋로그’혹은‘분산스트리밍플랫폼’이라고불리기도한다.파일시스템이나데이터베이스커밋로그(commitlog)는모든트랜잭션기록을지속성있게보존함으로써시스템의상태를일관성있게복구할수있도록고안되었다.이와유사하게,카프카에저장된데이터는순서를유지한채로지속성있게보관되며결정적(deterministic)으로읽을수있다.또한,확장시성능을향상시키고실패가발생하더라도데이터사용에는문제가없도록시스템안에서데이터를분산시켜저장할수있다.
---p.4

카프카의이름이어디에서유래했는지,뭔가특별한기능을의미하는지묻곤하는사람들이있다.여기에대해서는제이크렙스가아래와같이언급한적이있다.저는카프카가쓰기에최적화된시스템이기때문에,작가의이름을사용하는것이맞다고생각했습니다.저는대학에서많은문학수업을들었고프란츠카프카(FranzKafka)의작품을좋아했습니다.게다가이이름은오픈소스프로젝트이름으로서멋지게들렸거든요.따라서카프카의이름과기능사이에는별관계가없다고할수있겠습니다.
---p.18

2019년부터아파치카프카커뮤니티는야심찬프로젝트를시작했다.바로주키퍼기반컨트롤러로부터탈피해서래프트(raft)기반컨트롤러쿼럼으로옮겨가는것이다.‘KRaft’라불리는새로운컨트롤러의프리뷰버전은아파치카프카2.8에포함되었으며,3.3부터는'실험적’이라는수식어를떼고정식으로프로덕션환경에서사용가능한기능이되었다.
---p.152

데이터파이프라인에있어서카프카가갖는주요한역할은데이터파이프라인의다양한단계사이사이에있어매우크고안정적인버퍼역할을해줄수있다는점이다.이것은실질적으로데이터파이프라인의데이터를쓰는쪽과읽는쪽을분리함으로써하나의원본에서가져온동일한데이터를서로다른적시성(timeliness)과가용성요구조건을가진여러대상애플리케이션이나시스템으로보낼수있게한다.이렇게데이터파이프라인의양쪽을분리할수있다는점은신뢰성,보안성,효율성과함께카프카가대부분의데이터파이프라인에적합한이유이기도하다.
---p.227

버전3.4.0인현재,카프카는자바8이후버전만을지원하고있다.하지만보안이중요시되는환경이라면,가능하면자바11을사용할것을권한다.본문에서는“카프카는기본적으로TLSv1.2와TLSv1.3이후의프로토콜만을지원한다.”라고되어있지만,TLSv1.3은자바11에서부터지원되기때문이다.카프카2.6.0부터는자바11이상버전을사용할경우자동으로TLSv1.3이활성화되는것으로기본값이바뀌었다.
---p.307