아파치 카프카는 고성능 소프트웨어 버스로, 이벤트 스트리밍, 로깅, 분석 및 데이터 파이프라인 작업을 빠르게 처리하며, 아파치 카프카를 사용하면 운영 데이터 모니터링과 함께 대규모 이벤트 처리 애플리케이션을 쉽게 구축할 수 있다. 이 책은 실제 애플리케이션에서의 아파치 카프카 활용 방법과 예제를 통해 아파치 카프카의 주요 기능을 소개하며, 스트리밍 데이터 로깅, 관리와 같은 가장 일반적인 사용 사례도 다룬다. 자바 개발자와 데이터 엔지니어를 대상으로 하며, 아파치 카프카에 대한 사전 지식은 필요하지 않다.
Contents
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.3 AdminClient 패키지
2.4.4 ksqlDB
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.3 EmbeddedKafkaCluster를 사용한 테스트
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.1 AdminClient를 사용한 코드 관리
9.1.2 kcat
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.1 JMX 콘솔
9.6 추적 옵션
9.6.1 프로듀서 로직
9.6.2 컨슈머 로직
9.6.3 클라이언트 재정의
9.7 일반 모니터링 도구
요약
참고문헌
3부. 더 나아가기
10장. 카프카 보호
10.1 보안 기본 사항
10.1.1 SSL을 사용한 암호화
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.1 REST API
11.3.2 클라이언트 라이브러리
11.4 호환성 규칙
11.4.1 스키마 수정 유효성 검사
11.5 스키마 레지스트리의 대안
요약
참고문헌
12장. 카프카 스트림즈와 ksqlDB를 활용한 스트림 처리
12.1 카프카 스트림즈
12.1.1 KStreams API DSL
12.1.2 KTable API
12.1.3 GlobalKTable API
12.1.4 프로세서 API
12.1.5 카프카 스트림즈 설정
12.2 ksqlDB: 이벤트 스트리밍 데이터베이스
12.2.1 쿼리
12.2.2 로컬 개발
12.2.3 ksqlDB 아키텍처
12.3 더 나아가기
12.3.1 카프카 개선 제안(KIP)
12.3.2 탐색할 수 있는 카프카 프로젝트
12.3.3 커뮤니티 슬랙 채널
요약
참고문헌
부록 A. 설치
부록 B. 클라이언트 예제
Author
딜런 스콧,빅토르 가모프,데이브 클라인,최중연
자바와 펄 분야에서 10년 이상의 경력을 쌓은 소프트웨어 개발자다. 대규모 데이터 마이그레이션을 위한 메시징 시스템으로 카프카를 사용하기 시작한 후, 카프카와 스트림 처리의 세계에 대해 더 깊이 파고들기 시작했다. 뮬(Mule), 래빗MQ(RabbitMQ), MQSeries, 카프카 등 다양한 기술과 큐를 사용했다. 업계에서의 경험을 보여주는 PMP, ITIL, CSM, Sun Java SE 1.6, Oracle Web EE6, Neo4j, Jenkins Engineer 등의 다양한 자격증을 보유하고 있다.
자바와 펄 분야에서 10년 이상의 경력을 쌓은 소프트웨어 개발자다. 대규모 데이터 마이그레이션을 위한 메시징 시스템으로 카프카를 사용하기 시작한 후, 카프카와 스트림 처리의 세계에 대해 더 깊이 파고들기 시작했다. 뮬(Mule), 래빗MQ(RabbitMQ), MQSeries, 카프카 등 다양한 기술과 큐를 사용했다. 업계에서의 경험을 보여주는 PMP, ITIL, CSM, Sun Java SE 1.6, Oracle Web EE6, Neo4j, Jenkins Engineer 등의 다양한 자격증을 보유하고 있다.