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