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 ksqlDB2.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 kcat9.1.3 컨플루언트 REST 프록시 API9.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 브로커와 클라이언트 간의 SSL10.1.3 브로커 간 SSL10.2 커버로스 및 SASL10.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 레벨 011.1.2 레벨 111.1.3 레벨 211.1.4 레벨 311.2 스키마 레지스트리11.2.1 컨플루언트 스키마 레지스트리 설치11.2.2 레지스트리 구성11.3 스키마 기능11.3.1 REST API11.3.2 클라이언트 라이브러리11.4 호환성 규칙11.4.1 스키마 수정 유효성 검사11.5 스키마 레지스트리의 대안요약 참고문헌 12장. 카프카 스트림즈와 ksqlDB를 활용한 스트림 처리12.1 카프카 스트림즈12.1.1 KStreams API DSL12.1.2 KTable API12.1.3 GlobalKTable API12.1.4 프로세서 API12.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. 클라이언트 예제