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

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

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

Gwen Shapira
컨플루언트의 엔지니어링 팀장으로서, 컨플루언트 클라우드를 위해 카프카를 더 유연하고, 규모 확장성 있고, 멀티테넌시 친화적으로 만드는 작업을 담당하는 클라우드 네이티브 카프카 팀을 이끌고 있다.

목차

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

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

CHAPTER 2 카프카 설치하기 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

CHAPTER 3 카프카 프로듀서: 카프카에 메시지 쓰기 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

CHAPTER 4 카프카 컨슈머: 카프카에서 데이터 읽기 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

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

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

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

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

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

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

CHAPTER 11 보안 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

CHAPTER 12 카프카 운영하기 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

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

CHAPTER 14 스트림 처리 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

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

APPENDEX B 추가적으로 사용할 수 있는 툴 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