◈ 이 책에서 다루는 내용 ◈
◆ 카프카와 펍/섭 통신 패턴 학습
◆ 스트림 처리 애플리케이션 구축
◆ 윈도우 조인과 집계 등 복잡한 연산 수행
◆ 상태가 있는 처리의 내부 동작 이해
◆ ksqlDB의 데이터 통합 기능 학습
◆ ksqlDB의 여러 컬렉션 종류로 가져오기와 내보내기 쿼리 수행
◆ 카프카 스트림즈와 ksqlDB 애플리케이션 상용화 배치
◈ 이 책의 대상 독자 ◈
실시간으로 대용량 데이터를 움직이고 보강하며 변환하는 대규모의 스트림 처리 애플리케이션을 구축하는 방법을 배우고자 하는 데이터 엔지니어를 위한 것이다. 이런 기술들은 종종 비즈니스 인텔리전스 이니셔티브, 분석 파이프라인, 위협 탐지, 이벤트 처리 등을 지원해야 한다.
실시간 데이터 스트림을 분석해 자신의 기술력을 향상시키고자 하는 데이터 과학자와 분석가에게도 유용하다. 이는 데이터 처리 분야를 지배하고 있는 배치 처리 공간으로부터 벗어날 수 있는 새로운 출발점이 될 것이다. 아파치 카프카에 대한 사전 경험은 필수가 아니며, 자바 프로그래밍 언어가 어느 정도 친숙하다면 카프카 스트림즈 사용 지침을 좀 더 쉽게 따라갈 수 있다.
◈ 이 책의 구성 ◈
1장, "카프카 빠르게 소개하기’는 카프카 소개와 단일 노드 카프카 클러스터를 실행하는 사용 지침을 제공한다.
2장, ‘카프카 스트림즈 시작하기’는 카프카 스트림즈의 배경 지식과 아키텍처, 그리고 간단한 카프카 스트림즈 애플리케이션 실행을 다룬다.
3장과 4장에서는 카프카 스트림즈의 상위 수준 DSL(도메인 특화 언어)에 있는 상태가 없는 또는 상태가 있는 연산자를 살펴본다. 각 장은 비즈니스 문제를 풀 때 이 연산자를 어떻게 사용하는지 보여주는 사용 지침을 포함하고 있다.
5장, ‘윈도우와 시간’에서는 스트림 처리 애플리케이션에서 시간이 어떤 역할을 하는지 알아보고 윈도우 조인과 집계와 같은 고급스러운 연산인 상태가 있는 연산을 수행할 때의 윈도우 사용 방법을 다룬다.
6장, ‘고급 상태 관리’는 상태가 있는 처리가 내부적으로 어떻게 동작하는지 설명하고 상태가 있는 카프카 스트림즈 애플리케이션을 운영할 때 필요한 몇 가지 팁을 알려준다.
7장, ‘Processor API’는 카프카 스트림즈의 하위 수준 Processor API를 깊이 있게 다룬다. 이 API는 주기적인 함수 호출을 스케줄링할 때 사용할 수도 있고, 애플리케이션 상태와 레코드의 메타데이터를 좀 더 세분화된 단위로 접근하는 방법을 제공한다.
8장, ‘ksqlDB 시작하기’는 ksqlDB를 소개하고 이 기술의 역사와 아키텍처에 대해 알아본다. 8장의 튜토리얼은 ksqlDB 서버 인스턴스를 설치하고 실행하고 ksqlDB CLI로 작업하는 방법을 보여준다.
9장, ‘ksqlDB로 데이터 통합’은 ksqlDB의 데이터 통합 기능을 알아본다. 이 기능은 카프카 커넥트(Kafka Connect)의 도움을 받아 동작한다.
10장, 11장에서는 ksqlDB SQL을 자세히 알아보고, 여러 가지 컬렉션(Collection) 타입을 이용해 어떻게 작업을 하는지 보여준다. 또한 데이터 내보내기 쿼리(push query)와 데이터 가져오기 쿼리(pull query) 등을 수행한다.
12장, ‘테스트, 모니터링, 배포’에서는 카프카 스트림즈와 ksqlDB 애플리케이션을 상용 환경에 배포할 때 필요한 정보를 제공한다. 여기에는 모니터링, 테스트 그리고 애플리케이션을 컨테이너화하는 것을 포함한다.
**
◈ 옮긴이의 말 ◈
카프카 기반의 스트림 데이터 처리 애플리케이션을 개발하고 유지 보수한 지 어느덧 5년이 흘렀다. 처음 몇 개로 시작한 스트리밍 처리 애플리케이션은 그 증가 속도가 가파르게 빨라지고 있으며, 이 일을 함께하는 동료들도 많이 늘어났다. 스트리밍 처리 기술도 이 책의 카프카 스트림즈와 ksqlDB뿐만 아니라 아파치 플링크, 스파크 스트리밍 등 다양해지고 있다.
아마도 이 책을 선택한 독자들 중에는 이런 여러 스트리밍 데이터 처리 기술을 서로 비교해보고 싶은 분도 있을 수 있고, 스트리밍 데이터 처리 기술이 처음이라 익숙한 SQL이라는 단어에 이끌려 이 책을 선택한 분도 있을 수 있다. 이 책은 이런 두 목적을 가진 독자들을 모두 만족시킬 수 있는 내용으로 구성돼 있다.
1부에서는 스트리밍 데이터 처리의 기본 개념들과 카프카 스트림즈의 구현 원리를 상세히 설명하고 있다. 1부를 읽고 나면 여러분도 “스트림 데이터에서의 시간”, “윈도우”, “집계”, “상태가 있는 스트리밍 데이터 처리” 등 기본적인 스트림 데이터 처리에 관해 많은 지식을 쌓을 수 있다. 따라서 개발자가 아니더라도 스트림 데이터 처리에 대한 일반적인 지식이 필요한 독자라면 1부를 꼭 읽어 보길 바란다. 2부에서는 1부의 내용을 바탕으로 ksqlDB를 상세히 다루고, 3부는 상용화에 필요한 여러 준비 사항과 단계 등 실무적인 내용을 설명한다. 이 책을 모두 읽고 나면 스트리밍 데이터의 기초부터 고급까지 모두 익힐 수 있게 되며, 실습과 함께 연습하다 보면 바로 실무에 적용할 수 있는 수준까지 다다르리라 기대한다.
개인적으로 이 책을 번역하면서 아파치 플링크와 카프카 스트림즈와 ksqlDB의 차이점에 대해 비교할 수 있는 좋은 기회가 됐다. 두 기술 모두 대부분의 기본 개념은 비슷하나 구현 방법이나 데이터 추상화 개념, 상태 관리 등에서 차이가 있었다. 어느 것이 더 낫고 부족한지는 여러분의 요구 사항에 따라 다르며, 아파치 플링크와 카프카 스트림즈를 비교해보고 싶은 독자가 있다면 에이콘출판사의 『아파치 플링크로 하는 스트림 데이터 처리』(2020)를 참고하는 것도 좋다. 이 책에서는 전달 보증(Delivery Guarantee)과 같은 스트리밍 데이터를 처리할 때 매우 중요한 다른 개념들도 소개하고 있으므로 기회가 닿으면 꼭 읽어 보길 추천한다.
서비스를 사용하는 고객은 점점 더 빠르고 정확한 반응을 원하고 있으며, 일괄 처리로는 이런 요구를 반영할 수 없다. 빅데이터 처리 분야에서 스트리밍 데이터 처리는 이제 선택이 아닌 필수가 돼 가는 느낌이다. 이 책을 선택한 여러분도 이번 기회에 변화하는 기술에 뒤처지지 않고 스트리밍 처리 분야의 전문가가 되길 희망한다.