이미 소장하고 있다면 판매해 보세요.
|
1장. 카프카 빠르게 소개하기
__통신 모델 __스트림은 어떻게 저장되는가? __토픽과 파티션 __이벤트 __카프카 클러스터와 브로커 __컨슈머 그룹 __카프카 설치 __안녕? 카프카 __요약 2장. 카프카 스트림즈 시작하기 __카프카 생태계 ____카프카 스트림즈 이전 ____카프카 스트림즈 이후 __한눈에 보는 카프카 스트림즈 특징 __운영 특성 ____확장성 ____신뢰성 ____유지 보수성 __다른 시스템과 비교 ____배치 모델 ____처리 모델 ____카파 아키텍처 __카프카 스트림즈 적용 사례들 __프로세서 토폴로지 ____서브 토폴로지 ____깊이 - 우선 처리 ____데이터 흐름 프로그래밍의 이점 ____태스크와 스트림 스레드 __상위 - 수준 DSL 대 하위 - 수준 Processor API __튜토리얼 소개: Hello, Streams ____프로젝트 설치 ____새 프로젝트 생성 ____카프카 스트림즈 의존 라이브러리 추가 ____DSL ____Processor API __스트림과 테이블 ____스트림/테이블 이중성 ____KStream, KTable, GlobalKTable __요약 3장. 상태가 없는 처리 __상태가 없는 처리 대 상태가 있는 처리 __튜토리얼 소개: 트위터 스트림 처리 __프로젝트 설치 __KStream 소스 프로세서 추가 __직렬화/역직렬화 ____커스텀 Serdes 만들기 ____데이터 클래스 정의 ____커스텀 Deserializer 구현 ____커스텀 Serializer 구현 ____트윗 Serdes 구현 __데이터 필터링 __데이터 가지치기 __트윗 번역 __스트림 병합 __트윗 보강 ____Avro 데이터 클래스 ____감정 분석 __Avro 데이터 직렬화 ____레지스트리 없는 Avro Serdes ____스키마 레지스트리-인식 Avro Serdes __싱크 프로세서 추가 __코드 실행 __실제 검증 __요약 4장. 상태가 있는 처리 __상태가 있는 처리의 이점 __상태가 있는 연산자 훑어보기 __상태 저장소 ____공통 특성 ____영구 저장소 대 인 - 메모리 저장소 __튜토리얼 소개: 비디오 게임 전광판 __프로젝트 설치 __데이터 모델 __소스 프로세서 추가 ____KStream ____KTable ____GlobalKTable __스트림즈와 테이블 등록 __조인 ____조인 연산자들 ____조인 종류 ____코-파티셔닝 ____ValueJoiner ____KStream을 KTable로 조인(players 조인) ____KStream을 GlobalKTable과 조인(products 조인) __레코드 그룹핑 ____스트림즈 그룹핑 ____테이블 그룹핑 __집계 ____스트림 집계 ____테이블 집계 __모두 합치기 __대화형 쿼리 ____저장소 물리화 ____읽기-전용 상태 저장소 접근 ____비윈도우 키-값 저장소 쿼리하기 ____로컬 쿼리 ____원격 쿼리 __요약 5장. 윈도우와 시간 __튜토리얼 소개: 환자 모니터링 애플리케이션 __프로젝트 설치 __데이터 모델 __시간 의미 __타임스탬프 추출자 ____내장 타임스탬프 추출자 ____커스텀 타임스탬프 추출자 ____타임스탬프 추출자와 함께 스트림 등록하기 __스트림 윈도윙 ____윈도우 종류 ____윈도우 선택 ____윈도우 집계 __윈도우 결과 내보내기 ____유예 기간 ____중간 결과 제거 __윈도우 KTable 필터링과 키 재생성 __윈도우 조인 __시간-기반 데이터 흐름 ____알림 싱크 ____윈도우 키-값 저장소 쿼리하기 __요약 6장. 고급 상태 관리 __영구적인 저장소 디스크 레이아웃 __내고장성 ____변경 로그 토픽 ____대기 복제본 __리밸런싱: 상태(저장소)의 적 __상태 이관 방지 ____StickyTaskAssignor ____고정 멤버십 __리밸런싱 영향 줄이기 ____점진적 협력 리밸런싱 ____상태 크기 제어 __레코드 캐시로 쓰기 중복 제거 __상태 저장소 모니터링 ____StateListener 추가 ____StateRestoreListener 추가 __내장 메트릭 __대화형 쿼리 __커스텀 상태 저장소 __요약 7장. Processor API __Processor API는 언제 사용해야 할까? __튜토리얼 소개: IoT 디지털 트윈 서비스 __프로젝트 설치 __데이터 모델 __소스 프로세서 추가 __상태가 없는 스트림 프로세서 추가 __상태가 없는 프로세서 생성 __상태가 있는 프로세서 생성 __구두점으로 주기적인 함수 호출 __레코드 메타데이터 접근 __싱크 프로세서 추가하기 __대화형 쿼리 __모두 조립하기 __Processor API와 DSL 결합 __프로세서와 트랜스포머 __모두 조립하기: 리팩토링 __요약 8장. ksqlDB 시작하기 __ksqlDB는 무엇인가? __언제 ksqlDB를 사용할까? __새로운 데이터베이스로 진화 ____카프카 스트림즈 통합 ____카프카 커넥트 통합 __ksqlDB와 전통적인 SQL 데이터베이스 비교 방법 ____유사점 ____차이점 __아키텍처 ____ksqlDB 서버 ____ksqlDB 클라이언트 __배치 모드 ____대화형 모드 ____헤드리스 모드 __튜토리얼 ____ksqlDB 설치 ____ksqlDB 서버 실행 ____토픽 사전 생성 ____ksqlDB CLI 사용하기 __요약 9장. ksqlDB로 데이터 통합 __카프카 커넥트 개요 __외부 모드와 임베디드 모드 ____외부 모드 ____임베디드 모드 __커넥트 워커 설정 ____컨버터와 직렬화 포맷 __튜토리얼 __커넥터 설치 ____커넥터 생성 ____커넥터 보기 ____커넥터 설명 ____커넥터 삭제 __소스 커넥터 검증 __카프카 커넥트 클러스터와 직접 상호 동작 __관리형 스키마 검사 __요약 10장. ksqlDB 스트림 처리 기초 __튜토리얼: 넷플릭스의 변경 내용 모니터링 __프로젝트 설정 __소스 토픽 __데이터 타입 ____커스텀 타입 __컬렉션 ____소스 컬렉션 생성 ____WITH 절 __스트림과 테이블로 작업하기 ____스트림과 테이블 보기 ____스트림과 테이블 설명 보기 ____스트림과 테이블 변경 ____스트림과 테이블 삭제 __기본 쿼리 ____값 삽입 ____간단한 셀렉트(일시적인 내보내기 쿼리) ____프로젝션 ____필터링 ____복합 구조체의 평평화/중첩 구조 해체 __조건식 ____COALESCE ____IFNULL ____CASE문 __카프카로 결과 쓰기(영구적인 쿼리) ____파생 컬렉션 생성 __모두 합치기 __요약 11장. ksqlDB 중급, 고급 스트림 처리 __프로젝트 설정 __SQL 파일로 환경 설정하기 __데이터 보강 ____조인 ____윈도우 조인 __집계 ____집계 기초 ____윈도우 집계 __물리화된 뷰 __클라이언트 __가져오기 쿼리 ____CURL __내보내기 쿼리 ____CURL로 내보내기 쿼리 실행 __함수와 연산자 ____연산자 ____함수 목록 보기 ____함수 설명 ____커스텀 함수 생성 ____추가 참고 자료 __요약 12장. 테스트, 모니터링, 배포 __테스트 ____ksqlDB 쿼리 테스트 ____카프카 스트림즈 테스트 ____행동 테스트 ____벤치마킹 ____카프카 클러스터 벤치마킹 ____테스트 자동화 __모니터링 ____모니터링 점검 목록 ____JMX 메트릭 추출 __배포 ____ksqlDB 컨테이너 ____카프카 스트림즈 컨테이너 ____컨테이너 오케스트레이션 __운영 ____카프카 스트림즈 재설정 ____애플리케이션 출력 속도 제한 ____카프카 스트림즈 업그레이드 __ksqlDB 업그레이드 __요약 부록 A 스트림즈 설정 부록 B ksqlDB 설정 |
Mitch Seymour
|
◈ 이 책에서 다루는 내용 ◈
◆ 카프카와 펍/섭 통신 패턴 학습 ◆ 스트림 처리 애플리케이션 구축 ◆ 윈도우 조인과 집계 등 복잡한 연산 수행 ◆ 상태가 있는 처리의 내부 동작 이해 ◆ 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 애플리케이션을 상용 환경에 배포할 때 필요한 정보를 제공한다. 여기에는 모니터링, 테스트 그리고 애플리케이션을 컨테이너화하는 것을 포함한다. ◈ 지은이의 말 ◈ 데이터 엔지니어와 데이터 과학자들에게 주목을 끄는 기술은 항상 넘쳐났다. 좋아하는 서브레딧(subreddit)을 찾아보고, 〈해커 뉴스(Hacker News)〉를 훑어보고, 기술 블로그를 읽거나 기술 콘퍼런스에 참석하는 등 과도하다고 느낄 정도로 무수한 기술들이 차고 넘쳤다. 그러나 집중할 수 있는 조용한 곳에서 모든 잡음을 제거하면 소음으로부터 패턴을 구분할 수 있다. 우리는 폭발적으로 증가하는 데이터 시대를 살고 있고, 대규모 데이터를 저장하고 처리하기 위해 많은 기술이 만들어졌다. 이런 최신 솔루션이 최신 문제를 해결할 수 있다고 하고 혁신적인 것인 양 ‘빅데이터’를 논하고 있지만 이야기의 절반은 데이터의 볼륨에 초점을 맞추고 있다. 데이터 볼륨 문제를 해결하는 기술들은 데이터를 처리할 때 배치 지향적(batch-oriented)인 경향이 있다. 여기에는 일정 기간 동안 쌓인 데이터를 대상으로 잡을 실행하는 것도 포함한다. 어떤 면에서 이는 바다의 모든 물을 한 번에 마시려고 시도하는 것과 같다. 최신 컴퓨팅 파워와 패러다임을 사용하는 몇몇 기술들은 긴 지연 시간을 희생함에도 불구하고 실제로 이를 달성하고자 시도하고 있다. 한편, 최신 데이터는 이 책에서 초점을 맞추고 있는 바와 또 다른 속성을 가지고 있다. 데이터는 네트워크를 통해 안정적이며 무한한 스트림으로 움직이고 있다. 카프카 스트림즈와 ksqlDB와 같은 기술들은 이런 지속적인 데이터 스트림을 실시간으로 처리하도록 특별히 설계돼 있으며, 배치 처리를 뛰어넘는 경쟁적 우위를 제공한다. 만약 데이터를 보강(enrich)하거나 변환(transform), 또는 데이터가 들어오는 순간 가능한 한 빨리 반응하고 싶다면 이 책이 쉽고 효과적으로 알려줄 것이다. 카프카 스트림즈와 ksqlDB를 학습하는 것은 스트림 처리에 포함된 좀 더 큰 개념을 배울 수 있는 좋은 계기가 되기도 한다. 여기에는 데이터를 여러 방식(스트림 또는 테이블)으로 모델링하고, 상태가 없는 데이터 변환, 고급 연산(조인, 집계)에 로컬 상태(local state) 사용, 시간 버킷(buckets)/윈도우(windows)로 데이터를 그룹핑할 때 사용하는 여러 시간 의미(semantics)와 방식에 대한 이해 등을 포함하고 있다. 다시 말해, 카프카 스트림즈와 ksqlDB에 대한 지식은 현존하는 또는 미래 혹은 언젠가 존재할 수 있는 여러 스트림 처리 솔루션을 비교 평가할 때 도움이 될 것이다. 나의 경력에 큰 영향을 미치고 내 자신의 능력 이상으로 기술적 업적에 도달할 수 있도록 도와준 이런 기술을 여러분에게 공유할 수 있게 돼 매우 흥분된다. 사실 여러분이 이 글을 읽을 때쯤 나의 카프카 스트림즈 애플리케이션 중 하나는 이미 9백만 개의 이벤트를 처리했을 것이다. 이 기술을 배우기 위해 많은 시간을 투자하지 않고도 실제 비즈니스에 어떤 가치를 줄 수 있다는 것을 알게 된다면, 앞으로 몇 년 동안 비즈니스 문제 해결에 이 기술을 사용하게 될 것이다. 또한 간결하고 표현력이 풍부한 스트림 데이터 처리 언어는 이런 처리를 노동보다는 예술처럼 느끼게 할 것이다. 인생을 바꾸는 노래 또는 아름다운 그림과 같은 여타 예술적 형식과 마찬가지로, 이를 공유하고자 하는 행위는 인간의 본성이다. 따라서 이 책은 여러분에게 즐거움을 제공하기 위해 스트림 처리 공간에서 내가 가장 좋아하는 것만 편집해 놓은 믹스 테이프라고 생각하기 바란다. ◈ 옮긴이의 말 ◈ 카프카 기반의 스트림 데이터 처리 애플리케이션을 개발하고 유지 보수한 지 어느덧 5년이 흘렀다. 처음 몇 개로 시작한 스트리밍 처리 애플리케이션은 그 증가 속도가 가파르게 빨라지고 있으며, 이 일을 함께하는 동료들도 많이 늘어났다. 스트리밍 처리 기술도 이 책의 카프카 스트림즈와 ksqlDB뿐만 아니라 아파치 플링크, 스파크 스트리밍 등 다양해지고 있다. 아마도 이 책을 선택한 독자들 중에는 이런 여러 스트리밍 데이터 처리 기술을 서로 비교해보고 싶은 분도 있을 수 있고, 스트리밍 데이터 처리 기술이 처음이라 익숙한 SQL이라는 단어에 이끌려 이 책을 선택한 분도 있을 수 있다. 이 책은 이런 두 목적을 가진 독자들을 모두 만족시킬 수 있는 내용으로 구성돼 있다. 1부에서는 스트리밍 데이터 처리의 기본 개념들과 카프카 스트림즈의 구현 원리를 상세히 설명하고 있다. 1부를 읽고 나면 여러분도 “스트림 데이터에서의 시간”, “윈도우”, “집계”, “상태가 있는 스트리밍 데이터 처리” 등 기본적인 스트림 데이터 처리에 관해 많은 지식을 쌓을 수 있다. 따라서 개발자가 아니더라도 스트림 데이터 처리에 대한 일반적인 지식이 필요한 독자라면 1부를 꼭 읽어 보길 바란다. 2부에서는 1부의 내용을 바탕으로 ksqlDB를 상세히 다루고, 3부는 상용화에 필요한 여러 준비 사항과 단계 등 실무적인 내용을 설명한다. 이 책을 모두 읽고 나면 스트리밍 데이터의 기초부터 고급까지 모두 익힐 수 있게 되며, 실습과 함께 연습하다 보면 바로 실무에 적용할 수 있는 수준까지 다다르리라 기대한다. 개인적으로 이 책을 번역하면서 아파치 플링크와 카프카 스트림즈와 ksqlDB의 차이점에 대해 비교할 수 있는 좋은 기회가 됐다. 두 기술 모두 대부분의 기본 개념은 비슷하나 구현 방법이나 데이터 추상화 개념, 상태 관리 등에서 차이가 있었다. 어느 것이 더 낫고 부족한지는 여러분의 요구 사항에 따라 다르며, 아파치 플링크와 카프카 스트림즈를 비교해보고 싶은 독자가 있다면 에이콘출판사의 『아파치 플링크로 하는 스트림 데이터 처리』(2020)를 참고하는 것도 좋다. 이 책에서는 전달 보증(Delivery Guarantee)과 같은 스트리밍 데이터를 처리할 때 매우 중요한 다른 개념들도 소개하고 있으므로 기회가 닿으면 꼭 읽어 보길 추천한다. 서비스를 사용하는 고객은 점점 더 빠르고 정확한 반응을 원하고 있으며, 일괄 처리로는 이런 요구를 반영할 수 없다. 빅데이터 처리 분야에서 스트리밍 데이터 처리는 이제 선택이 아닌 필수가 돼 가는 느낌이다. 이 책을 선택한 여러분도 이번 기회에 변화하는 기술에 뒤처지지 않고 스트리밍 처리 분야의 전문가가 되길 희망한다. |
|
“저자는 원리부터 시작해 최신 시스템까지 쉽게 설명한다. 이 책은 시스템의 핵심 개념을 살펴보고, 각 시스템의 미묘한 동작 방식 차이를 상세히 설명한다. 그리고 실제 세계 비즈니스에서 이런 시스템들을 어떻게 사용할 수 있는지 보여주는 실습 예제를 제공한다. 스트림 처리는 이제 필수 프로그래밍의 패러다임이 됐다. 이 책은 이를 성공적으로 이끌 수 있는 길을 밝혀줄 것이다.” - 제이 크렙스(Jay Kreps) (아파치 카프카 공동 창시자, 컨플루언트(Confluent) 공동 설립자이자 CEO)
|