Description
아파치 카프카는 고성능 소프트웨어 버스로, 이벤트 스트리밍, 로깅, 분석 및 데이터 파이프라인 작업을 빠르게 처리하며, 아파치 카프카를 사용하면 운영 데이터 모니터링과 함께 대규모 이벤트 처리 애플리케이션을 쉽게 구축할 수 있다.
이 책은 실제 애플리케이션에서의 아파치 카프카 활용 방법과 예제를 통해 아파치 카프카의 주요 기능을 소개하며, 스트리밍 데이터 로깅, 관리와 같은 가장 일반적인 사용 사례도 다룬다. 자바 개발자와 데이터 엔지니어를 대상으로 하며, 아파치 카프카에 대한 사전 지식은 필요하지 않다.
저자

딜런스콧,빅토르가모프,데이브클라인

(DylanScott)
자바와펄분야에서10년이상의경력을쌓은소프트웨어개발자다.대규모데이터마이그레이션을위한메시징시스템으로카프카를사용하기시작한후,카프카와스트림처리의세계에대해더깊이파고들기시작했다.뮬(Mule),래빗MQ(RabbitMQ),MQSeries,카프카등다양한기술과큐를사용했다.
업계에서의경험을보여주는PMP,ITIL,CSM,SunJavaSE1.6,OracleWebEE6,Neo4j,JenkinsEngineer등의다양한자격증을보유하고있다.

목차

1부.시작하기
01장.카프카소개
1.1카프카의특징
1.2카프카사용
1.2.1개발자를위한카프카
1.2.2매니저에게카프카설명하기
1.3카프카에관한오해
1.3.1카프카는하둡과만함께작동한다
1.3.2카프카는다른메시지브로커와동일하다
1.4현실세계에서의카프카
1.4.1초기의사용사례
1.4.2이후의사용사례
1.4.3카프카가적합하지않을수있는경우
1.5시작하기위한온라인리소스
요약
참고문헌


02장.카프카알아보기
2.1메시지생산과소비
2.2브로커란무엇인가?
2.3카프카투어
2.3.1프로듀서와컨슈머
2.3.2토픽개요
2.3.3주키퍼의용도
2.3.4카프카의고가용성아키텍처
2.3.5커밋로그
2.4다양한소스코드패키지와역할
2.4.1카프카스트림즈
2.4.2카프카커넥트
2.4.3AdminClient패키지
2.4.4ksqlDB
2.5컨플루언트클라이언트
2.6스트림처리와용어
2.6.1스트림처리
2.6.2정확히한번의의미
요약
참고문헌


2부.카프카적용
03장.카프카프로젝트설계
3.1카프카프로젝트설계
3.1.1기존데이터아키텍처인수
3.1.2첫변경
3.1.3내장기능
3.1.4주문송장을위한데이터
3.2센서이벤트설계
3.2.1기존문제
3.2.2카프카가적합한이유
3.2.3우리설계에대한생각의시작점
3.2.4사용자데이터요구사항
3.2.5질문을적용하기위한상위수준계획
3.2.6청사진검토
3.3데이터형식
3.3.1데이터를위한계획
3.3.2의존성설정
요약
참고문헌


04장.프로듀서:데이터공급
4.1예제
4.1.1프로듀서노트
4.2프로듀서옵션
4.2.1브로커목록구성
4.2.2빨리가는방법(또는더안전하게가는방법)
4.2.3타임스탬프
4.3요구사항에대한코드생성
4.3.1클라이언트와브로커버전
요약
참고문헌


05장.컨슈머:데이터열기
5.1예제
5.1.1컨슈머옵션
5.1.2코디네이트이해
5.2컨슈머가상호작용하는방식
5.3추적
5.3.1그룹코디네이터
5.3.2파티션할당전략
5.4작업위치표시
5.5컴팩션된토픽에서읽기
5.6우리공장의요구사항에대한코드검색
5.6.1읽기옵션
5.6.2요구사항
요약
참고문헌


06장.브로커
6.1브로커소개
6.2주키퍼의역할
6.3브로커수준의옵션
6.3.1카프카의다른로그:애플리케이션로그
6.3.2서버로그
6.3.3상태관리
6.4파티션리더레플리카와그역할
6.4.1데이터손실
6.5카프카엿보기
6.5.1클러스터유지관리
6.5.2브로커추가
6.5.3클러스터업그레이드
6.5.4클라이언트업그레이드
6.5.5백업
6.6상태저장시스템에대한참고사항
6.7실습
요약
참고문헌


07장.토픽과파티션
7.1토픽
7.1.1토픽생성옵션
7.1.2복제팩터
7.2파티션
7.2.1파티션위치
7.2.2로그보기
7.3EmbeddedKafkaCluster를사용한테스트
7.3.1카프카Testcontainers사용
7.4토픽컴팩션
요약
참고문헌


08장.카프카스토리지
8.1데이터저장기간
8.2데이터이동
8.2.1원본이벤트유지
8.2.2배치사고방식에서벗어나기
8.3도구
8.3.1아파치플룸
8.3.2레드햇데베지움
8.3.3보안
8.3.4데이터저장을위한사용사례의예
8.4카프카로데이터를다시가져오기
8.4.1계층화된스토리지
8.5카프카를사용한아키텍처
8.5.1람다아키텍처
8.5.2카파아키텍처
8.6다중클러스터설정
8.6.1클러스터추가를통한확장
8.7클라우드및컨테이너기반스토리지옵션
8.7.1쿠버네티스클러스터
요약
참고문헌


09장.관리:도구와로깅
9.1관리클라이언트
9.1.1AdminClient를사용한코드관리
9.1.2kcat
9.1.3컨플루언트REST프록시API
9.2카프카를systemd서비스로실행하기
9.3로깅
9.3.1카프카애플리케이션로그
9.3.2주키퍼로그
9.4방화벽
9.4.1애드버타이즈드리스너
9.5메트릭
9.5.1JMX콘솔
9.6추적옵션
9.6.1프로듀서로직
9.6.2컨슈머로직
9.6.3클라이언트재정의
9.7일반모니터링도구
요약
참고문헌


3부.더나아가기
10장.카프카보호
10.1보안기본사항
10.1.1SSL을사용한암호화
10.1.2브로커와클라이언트간의SSL
10.1.3브로커간SSL
10.2커버로스및SASL
10.3카프카에서의권한부여
10.3.1접근제어목록(ACL)
10.3.2역할기반접근제어(RBAC)
10.4주키퍼
10.4.1커버로스설정
10.5할당량
10.5.1네트워크대역폭할당량
10.5.2요청속도할당량
10.6저장된데이터
10.6.1관리형옵션
요약
참고문헌


11장.스키마레지스트리
11.1제안된카프카성숙도모델
11.1.1레벨0
11.1.2레벨1
11.1.3레벨2
11.1.4레벨3
11.2스키마레지스트리
11.2.1컨플루언트스키마레지스트리설치
11.2.2레지스트리구성
11.3스키마기능
11.3.1RESTAPI
11.3.2클라이언트라이브러리
11.4호환성규칙
11.4.1스키마수정유효성검사
11.5스키마레지스트리의대안
요약
참고문헌


12장.카프카스트림즈와ksqlDB를활용한스트림처리
12.1카프카스트림즈
12.1.1KStreamsAPIDSL
12.1.2KTableAPI
12.1.3GlobalKTableAPI
12.1.4프로세서API
12.1.5카프카스트림즈설정
12.2ksqlDB:이벤트스트리밍데이터베이스
12.2.1쿼리
12.2.2로컬개발
12.2.3ksqlDB아키텍처
12.3더나아가기
12.3.1카프카개선제안(KIP)
12.3.2탐색할수있는카프카프로젝트
12.3.3커뮤니티슬랙채널
요약
참고문헌


부록A.설치
부록B.클라이언트예제

출판사 서평

◈이책에서다루는내용◈

◆이벤트스트리밍플랫폼으로서의카프카
◆자바애플리케이션에서의카프카프로듀서및컨슈머
◆대규모데이터프로젝트의일부로서의카프카


◈이책의대상독자◈

스트림처리를배우고자하는모든개발자를위한책이다.카프카에대한사전지식은필요하지않지만,기본적인명령줄/터미널지식이있으면도움이된다.카프카에는우리가사용할강력한명령줄도구가있으며,사용자는최소한명령줄프롬프트에서탐색할수있어야한다.
약간의자바언어기술이나모든언어의프로그래밍개념을인식할수있는능력이있으면이책을최대한활용하는데도움이될수있다.주로자바11(및자바8)코딩스타일로제시된코드예제를이해하는데도움이될것이다.필수는아니지만분산애플리케이션아키텍처에대한일반적인지식도있으면도움이된다.예를들어,사용자가복제및장애에대해더많이알고있을수록카프카가레플리카를사용하는방법을더쉽게배울수있다.


◈이책의구성◈

1부에서는카프카의멘탈모델을소개하고실제세계에서카프카를사용하는이유에대해이야기한다.
1장,‘카프카소개’에서는카프카를소개하며,몇가지오해에대한반박및실제사용사례를설명한다.
2장,‘카프카알아보기’에서는상위수준의카프카아키텍처와주요용어를살펴본다.
2부에서는카프카의핵심적인부분으로이동한다.여기에는클러스터자체뿐만아니라클라이언트도포함된다.
3장,‘카프카프로젝트설계’에서는카프카가프로젝트에적합한경우와새프로젝트설계에접근하는방법을살펴본다.또한스키마의필요성을카프카프로젝트를시작할때의고려해야할사항으로논의한다.
4장,‘프로듀서:데이터공급’에서는프로듀서클라이언트를생성하는방법과데이터가카프카클러스터에들어가는방식에영향을주기위해사용할수있는옵션을자세히살펴본다.
5장,‘컨슈머:데이터열기’에서는컨슈머클라이언트를사용해카프카에서데이터를가져오는방법을살펴본다.보존된메시지의저장측면을활용할수있기때문에오프셋과데이터재처리라는개념을소개한다.
6장,‘브로커’에서는클러스터에서브로커의역할과브로커가클라이언트와상호작용하는방식을살펴본다.컨트롤러와레플리카같은다양한구성요소를살펴본다.
7장,‘토픽과파티션’에서는토픽과파티션의개념을살펴본다.여기에는토픽이컴팩션되는방식과파티션이저장되는방식이포함된다.
8장,‘카프카스토리지’에서는보존하거나재처리해야하는데이터를처리하기위한옵션인도구와아키텍처에대해설명한다.수개월또는수년간데이터를보존해야하는경우클러스터외부의스토리지옵션을평가해야할수도있다.
9장,‘관리:도구와로깅’에서는클러스터를정상적으로유지하는데필요한로그,메트릭,관리업무를검토하면서2부를마무리한다.
3부에서는카프카의핵심적인부분을살펴보고,실행중인클러스터를개선하기위한옵션으로넘어간다.
10장,‘카프카보호’에서는SSL,ACL,할당량같은기능을사용해카프카클러스터를강화하는옵션을소개한다.
11장,‘스키마레지스트리’에서는스키마레지스트리와스키마레지스트리를사용해데이터의이전버전및향후버전데이터셋과의호환성을유지하면서데이터를발전시키는방법을자세히살펴본다.이기능은엔터프라이즈급애플리케이션에서가장많이사용되는기능으로알려져있지만,시간이지남에따라진화하는모든데이터에유용할수있다.
12장,‘카프카스트림즈와ksqlDB를활용한스트림처리’에서는카프카스트림과ksqlDB를소개한다.이러한제품들은2부에서학습한핵심을기반으로구축된더높은수준의추상화다.카프카스트림즈와ksqlDB는방대한주제이므로,여기서는이러한카프카옵션에대한자세한내용을스스로학습하는데도움이될정도의세부정보만제공한다.