장바구니 담기 close

장바구니에 상품을 담았습니다.

Kafka Streams in Action

Kafka Streams in Action

  • 빌베젝
  • |
  • 에이콘출판
  • |
  • 2019-07-11 출간
  • |
  • 360페이지
  • |
  • 188 X 235 X 21 mm
  • |
  • ISBN 9791161753263
판매가

30,000원

즉시할인가

27,000

카드할인

0원(즉시할인 0%)

적립금

1,500원 적립(5%적립)

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

추가혜택

네이버페이 무조건 1%적립+ 추가 1%적립

수량
+ -
총주문금액
27,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




★ 이 책에서 다루는 내용 ★

■KStream API 사용하기
■데이터 필터링, 변환 및 분할
■프로세서 API로 작업
■외부 시스템 통합

★ 이 책의 대상 독자 ★

스트림 처리를 원하는 모든 개발자를 대상으로 하는 책이다. 분산 프로그래밍 지식과 카프카에 대한 지식은 필수는 아니지만 유용할 것이다. 숙련된 카프카 개발자뿐만 아니라 새 카프카 개발자도 카프카 스트림즈를 사용해 매력적인 스트림 처리 애플리케이션을 개발하는 방법을 배우게 될 것이다.

★ 이 책의 구성 ★

이 책은 9개의 장에 걸쳐 4개의 부로 나뉘어 있다. 1부에서는 카프카 스트림즈의 정신 모델을 소개해 어떻게 작동하는지 전체적으로 보여준다. 또한 카프카가 필요하거나 리뷰를 원하는 사람들을 위해 카프카의 기초를 제공한다.
■ 1장 ‘카프카 스트림즈 시작하기’에서는 실시간 데이터를 대규모로 처리하기 위해 스트림 처리가 필요한 이유와 방법론의 일부 이력을 제공한다. 또한 카프카 스트림즈의 정신 모델을 제시한다. 어떤 코드도 다루지 않고 카프카 스트림즈의 작동 방식을 설명한다.
■ 2장 ‘빠르게 살펴보는 카프카’ 이 책은 카프카를 처음 접하는 개발자를 위한 입문서다. 카프카에 대한 경험이 많은 사람은 이 장을 건너뛰고 카프카 스트림즈로 들어갈 수 있다.

2부는 카프카 스트림즈로 이동해서 API의 기초부터 시작해 더 복잡한 기능으로 계속 진행한다.
■ 3장 ‘카프카 스트림즈 개발’에서는 Hello World 애플리케이션을 제시하고 좀 더 현실적인 예제인 고급 기능을 포함하는 가상 소매 업체를 위한 애플리케이션 개발을 제시한다.
■ 4장 ’스트림과 상태’에서는 상태에 대해 설명하고 스트리밍 애플리케이션에 필요한 상황을 설명한다. 카프카 스트림즈에서 상태 저장소 구현 및 조인을 수행하는 방법에 대해 배울 것이다.
■ 5장 ‘KTable API’에서는 테이블과 스트림의 이중성을 살펴보고 새로운 개념인 KTable을 소개한다. KStream이 이벤트 스트림인 반면, KTable은 관련된 이벤트 스트림 또는 업데이트 스트림이다.
■ 6장 ‘프로세서 API’에서는 저수준의 프로세서 API에 관해 살펴본다. 지금까지 고수준 DSL로 작업해왔지만 여기서는 애플리케이션의 사용자 정의 부분을 작성해야 할 때 프로세서 API를 사용하는 방법을 배우게 될 것이다.

3부는 카프카 애플리케이션 개발에서 카프카 스트림 관리까지 이동한다.
■ 7장 ‘모니터링과 성능’에서는 카프카 스트림즈 애플리케이션을 테스트하는 방법을 설명한다. 전체 토폴로지를 테스트하고, 단일 프로세서를 유닛을 테스트하며, 통합 테스트에 내장된 카프카 브로커를 사용하는 방법을 배우게 될 것이다.
■ 8장 ‘카프카 스트림즈 애플리케이션 테스트’에서는 레코드를 처리하는 데 걸리는 시간을 확인하고 잠재적인 처리 병목 지점을 찾는 방법을 살펴보면서 카프카 스트림즈 애플리케이션을 모니터링하는 방법을 다룬다.

4부는 카프카 스트림즈의 고급 애플리케이션 개발을 탐구하는 책의 핵심이다.
■ 9장 ‘카프카 스트림즈 고급 애플리케이션’에서는 카프카 커넥트를 사용해 기존 데이터 소스를 카프카 스트림에 통합하는 방법을 다룬다. 스트리밍 애플리케이션에 데이터베이스 테이블을 포함하는 방법을 배울 것이다. 그런 다음, 대화식 쿼리를 사용해 관계형 데이터베이스 없이 카프카 스트림즈를 통해 데이터가 흐르는 동안 시각화 및 대시보드 애플리케이션을 제공하는 방법을 살펴볼 것이다. 9장에서는 또한 KSQL를 소개한다. KSQL은 SQL을 사용해 코드를 작성하지 않고 카프카를 통해 연속 쿼리를 실행할 수 있다.

★ 옮긴이의 말 ★

불과 몇 년 전만 하더라도 주변에 카프카를 쓰는 곳은 많지 않았다. 분석할 데이터는 하둡 파일시스템에 넣고 맵리듀스 작업으로 배치 처리했다. 대용량의 데이터를 서버에 나눠 저장하고 더 빠른 처리가 필요하다면 서버를 더 늘리면 됐고 그것으로 충분할 것 같았다. 그러나 급속히 증가하는 데이터와 저장 및 처리에 드는 시간을 줄이려는 요구 때문에 실시간 또는 준 실시간 처리가 필요해졌다.
링크드인의 카프카 개발자도 하둡과 같은 대용량 데이터의 저장과 처리에 실시간성을 부여해야 했고 그 결과물이 카프카다. 발행/구독 메시지 큐를 제공하는 플랫폼으로서 카프카가 나온 이후 스트림 처리 플랫폼에 있어서 필수 요소로 자리 잡게 됐고, 카프카 사용 사례도 많아졌다. 카프카 스트림즈가 세상에 나오면서 이제는 실시간 스트림 처리가 별도의 스트림 플랫폼 없이도 가능해졌다.
이 책은 카프카 스트림즈로 실시간 애플리케이션을 만들 수 있도록 가상의 프로젝트 목표를 설정하고 단계별로 개선하는 방식으로 쓰여 있다. 운영 시, 겪게 될 다양한 이슈와 해결 방법 및 모니터링 방법도 포함하고 있어, 카프카 스트림즈를 시작하는 독자뿐만 아니라 이미 운영하는 독자에게도 도움이 될 것이다.


목차


1부. 카프카 스트림즈 시작하기

1장. 카프카 스트림즈에 오신 것을 환영합니다
1.1 빅 데이터로의 전환, 그로 인한 프로그래밍 환경의 변화
1.1.1 빅 데이터의 기원
1.1.2 맵리듀스의 중요 개념
1.1.3 배치 처리로는 충분하지 않다
1.2 스트림 처리 소개
1.2.1 스트림 처리를 사용해야 할 경우와 사용하지 말아야 할 경우
1.3 구매 거래 처리
1.3.1 스트림 처리 옵션 따져보기
1.3.2 요구사항을 그래프로 분해
1.4 구매 트랜잭션에 대한 관점 변경
1.4.1 소스 노드
1.4.2 신용카드 마스킹 노드
1.4.3 패턴 노드
1.4.4 보상 노드
1.4.5 스토리지 노드
1.5 처리 노드의 그래프인 카프카 스트림즈
1.6 카프카 스트림즈를 구매 거래 흐름에 적용하기
1.6.1 소스 정의하기
1.6.2 첫 번째 프로세서: 신용카드번호 마스킹
1.6.3 두 번째 프로세서: 구매 패턴
1.6.4 세 번째 프로세서: 고객 보상
1.6.5 네 번째 프로세서: 구매 레코드 기록하기
요약

2장. 빠르게 살펴보는 카프카
2.1 데이터 문제
2.2 카프카를 사용해 데이터 다루기
2.2.1 지마트의 오리지널 데이터 플랫폼
2.2.2 카프카 판매 거래 데이터 허브
2.3 카프카 아키텍처
2.3.1 카프카는 메시지 브로커다
2.3.2 카프카는 로그다
2.3.3 카프카에서 로그가 동작하는 방식
2.3.4 카프카와 파티션
2.3.5 키에 의한 그룹 데이터 분할
2.3.6 사용자 정의 파티셔너 작성하기
2.3.7 사용자 정의 파티셔너 지정하기
2.3.8 정확한 파티션 수 정하기
2.3.9 분산 로그
2.3.10 주키퍼: 리더, 팔로워, 복제
2.3.11 아파치 주키퍼
2.3.12 컨트롤러 선출
2.3.13 복제
2.3.14 컨트롤러의 책임
2.3.15 로그 관리
2.3.16 로그 삭제
2.3.17 로그 압축
2.4 프로듀서로 메시지 보내기
2.4.1 프로듀서 속성
2.4.2 파티션과 타임스탬프 지정
2.4.3 파티션 지정
2.4.4 카프카의 타임스탬프
2.5 컨슈머로 메시지 읽기
2.5.1 오프셋 관리
2.5.2 자동 오프셋 커밋
2.5.3 수동 오프셋 커밋
2.5.4 컨슈머 생성하기
2.5.5 컨슈머와 파티션
2.5.6 리밸런싱
2.5.7 더 세분화된 컨슈머 할당
2.5.8 컨슈머 예제
2.6 카프카 설치 및 실행
2.6.1 카프카 로컬 설정
2.6.2 카프카 실행하기
2.6.3 첫 번째 메시지 보내기
요약

2부. 카프카 스트림즈 개발

3장. 카프카 스트림즈 개발
3.1 스트림 프로세서 API
3.2 카프카 스트림즈를 위한 Hello World
3.2.1 Yelling App의 토폴로지 생성하기
3.2.2 카프카 스트림즈 설정
3.2.3 Serde 생성
3.3 사용자 데이터로 작업하기
3.3.1 토폴로지 구성하기
3.3.2 사용자 정의 Serde 생성하기
3.4 대화형 개발
3.5 다음 단계
3.5.1 새로운 요구사항
3.5.2 카프카 외부에 레코드 기록하기
요약

4장. 스트림과 상태
4.1 이벤트
4.1.1 스트림은 상태가 필요하다
4.2 카프카 스트림즈에 상태를 가진 작업 적용하기
4.2.1 transformValues 프로세서
4.2.2 고객 보상의 상태 유지
4.2.3 값 변환기 초기화
4.2.4 상태를 사용해 Purchase 객체를 RewardAccumulator에 매핑하기
4.2.5 보상 프로세서 업데이트
4.3 조회와 이전에 본 데이터에 상태 저장소 사용하기
4.3.1 데이터 지역성
4.3.2 실패 복구와 내결함성
4.3.3 카프카 스트림즈에서 상태 저장소 사용하기
4.3.4 추가적인 키/값 저장소 공급자
4.3.5 상태 저장소의 내결함성
4.3.6 변경로그 토픽 설정하기
4.4 추가적인 통찰을 위해 스트림 조인하기
4.4.1 데이터 설정
4.4.2 조인을 수행하기 위해 고객 ID를 포함한 키 생성하기
4.4.3 조인 구성하기
4.4.4 그 밖의 조인 옵션
4.5 카프카 스트림즈의 타임스탬프
4.5.1 제공된 TimestampExtractor 구현
4.5.2 WallclockTimestampExtractor
4.5.3 사용자 정의 TimestampExtractor
4.5.4 TimestampExtractor 명시하기
요약

5장. KTable API
5.1 스트림과 테이블의 관계
5.1.1 레코드 스트림
5.1.2 레코드 및 변경로그 업데이트
5.1.3 이벤트 스트림과 업데이트 스트림 비교
5.2 레코드 업데이트와 KTable 구성
5.2.1 캐시 버퍼 크기 설정하기
5.2.2 커밋 주기 설정하기
5.3 집계와 윈도 작업
5.3.1 업계별 거래량 집계
5.3.2 윈도 연산
5.3.3 KStream과 KTable 조인하기
5.3.4 GlobalKTable
5.3.5 쿼리 가능한 상태
요약

6장. 프로세서 API
6.1 더 높은 수준의 추상화와 더 많은 제어 사이의 트레이드 오프
6.2 토폴로지를 만들기 위해 소스, 프로세서, 싱크와 함께 작업하기
6.2.1 소스 노드 추가
6.2.2 프로세서 노드 추가
6.2.3 싱크 노드 추가
6.3 주식 분석 프로세서로 프로세서 API 자세히 살펴보기
6.3.1 주식 성과 프로세서 애플리케이션
6.3.2 process() 메소드
6.3.3 펑추에이터 실행
6.4 코그룹 프로세서
6.4.1 코그룹 프로세서 작성
6.5 프로세서 API와 카프카 스트림즈 API 통합하기
요약

3부. 카프카 스트림즈 관리

7장. 모니터링과 성능
7.1 기본적인 카프카 모니터링
7.1.1 컨슈머와 프로듀서 성능 측정
7.1.2 컨슈머 지연 확인하기
7.1.3 프로듀서와 컨슈머 가로채기
7.2 애플리케이션 메트릭
7.2.1 메트릭 구성
7.2.2 수집한 메트릭 확인 방법
7.2.3 JMX 사용
7.2.4 메트릭 조회
7.3 추가적인 카프카 스트림즈 디버깅 기술
7.3.1 애플리케이션 구조 조회
7.3.2 다양한 애플리케이션 상태 알림 받기
7.3.3 StateListener 사용
7.3.4 상태 리스토어 리스너
7.3.5 uncaught 예외 핸들러
요약

8장. 카프카 스트림즈 애플리케이션 테스트
8.1 토폴로지 테스트
8.1.1 테스트 만들기
8.1.2 토폴로지에서 상태 저장소 테스트
8.1.3 프로세서와 트랜스포머 테스트
8.2 통합 테스트
8.2.1 통합 테스트 구축
요약


4부. 카프카 스트림즈 고급 개념

9장. 카프카 스트림즈 고급 애플리케이션

9.1 카프카와 다른 데이터 소스 통합
9.1.1 카프카 커넥트로 데이터 통합하기
9.1.2 카프카 커넥트 셋업
9.1.3 데이터 변환
9.2 데이터베이스 제약 걷어내기
9.2.1 대화식 쿼리 작동 방법
9.2.2 분산 상태 저장소
9.2.3 분산 상태 저장소 설정 및 검색
9.2.4 대화식 쿼리 작성
9.2.5 쿼리 서버의 내부
9.3 KSQL
9.3.1 KSQL 스트림과 테이블
9.3.2 KSQL 구조
9.3.3 KSQL 설치 및 실행
9.3.4 KSQL 스트림 만들기
9.3.5 KSQL 쿼리 작성
9.3.6 KSQL 테이블 생성
9.3.7 KSQL 설정
요약

부록 A. 추가적인 구성 정보
__시작 시 리밸런싱 수 제한하기
__브로커 중단에 대한 회복력
__역직렬화 오류 처리
__애플리케이션 스케일업
__록스DB 설정
__미리 토픽 리파티셔닝 만들기
__내부 토픽 설정
__카프카 스트리밍 애플리케이션 재설정
__로컬 상태 클린업

부록 B. 정확히 한 번의 시맨틱

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.