아파치 카프카로 데이터 스트리밍 애플리케이션 제작 [기업용 메시징 대기열 시스템의 설계와 구축 방법]
- 원서명Building Data Streaming Applications with Apache Kafka: Design, develop and streamline applications using Apache Kafka, Storm, Heron and Spark (ISBN 9781787283985)
- 지은이매니시 쿠마(Manish Kumar), 찬찰 싱(Chanchal Singh)
- 옮긴이최준
- ISBN : 9791161751320
- 30,000원
- 2018년 04월 30일 펴냄
- 페이퍼백 | 336쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 오픈소스 프로그래밍
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
사람 사이에 이메일 같은 메시지 교환이 있다면, 서로 다른 시스템 사이에도 다양한 메시지 교환이 있다. 오늘날 정보 기술의 발전과 함께 더욱 다양한 형태의 메시지가 대량으로 처리되고 있다. 기업은 통합된 메시지 운영과 고가용성, 성능, 보안 등의 요구 사항을 만족시킬 수 있는 메시징 플랫폼 ‘카프카’가 필요하다. 이 책은 개발자 관점에서 카프카의 기초부터 스파크, 스톰, 하둡 같은 확장된 프레임워크까지 활용하는 법을 실용적 예제와 함께 다루고 있다.
이 책에서 다루는 내용
█ 아파치 카프카의 기초 개념
█ 스트리밍 애플리케이션의 기본 구성
█ 스파크, 스톰, 헤론을 사용한 효과적인 카프카 스트리밍 애플리케이션 설계
█ 메시징 시스템에 대한 빠른 처리 속도와 고성능, 고가용성 지원의 중요성 이해
█ 카프카 애플리케이션 구축 과정에서 필요한 효과적인 용량 계획 수립
█ 모범적인 보안 적용 사례에 대한 이해와 구현
이 책의 대상 독자
카프카 환경에서 가장 쉽고 가능한 방법으로 아파치 카프카의 다양한 도구를 사용하는 방법을 배우려는 독자를 위한 책이다. 약간의 자바 프로그래밍 경험이 있으면 이 책을 이해하기 더 쉽다.
이 책의 구성
1장, ‘메시징 시스템 소개’에서는 메시징 시스템의 개념을 비롯한 전반적인 사항과 기업의 관련 요구 사항을 설명한다. 지점 간(point to point) 또는 게시 및 구독(publish/subscribe) 형태의 메시징 시스템을 활용하는 여러 방법을 알아본다. AMQP(Advanced Message Queuing Protocol)도 다룬다.
2장, ‘카프카 소개’에서는 분산 메시징 플랫폼으로서의 카프카를 소개한다. 카프카 구조와 내부 구성 요소를 다룬다. 그리고 카프카 구성 요소의 역할, 중요성 등과 함께 카프카 메시징 시스템 안에서 각각의 구성 요소가 응답시간, 신뢰성, 확장성을 어떻게 지원하는지 알아본다.
3장, ‘카프카 프로듀서(Kafka Producers)’에서는 카프카 시스템에 메시지를 게시하는 방법을 설명한다. 카프카 프로듀서 API와 사용법을 더 자세하게 알아본다. 자바와 스칼라(Scala) 프로그램 언어로 카프카 프로듀서 API를 사용하는 예를 살펴본다. 카프카 토픽(Kafka Topic)으로 메시지를 공급하기 위한 프로듀서의 메시지 흐름과 몇 가지 일반적인 유형을 깊이 있게 다룬다. 또한 카프카 프로듀서의 성능을 최적화하기 위한 기술을 살펴본다.
4장, ‘카프카 컨슈머(Kafka Consumers)’에서는 카프카 시스템에서 메시지를 사용하는 방법을 다루고, 카프카 컨슈머 API와 활용법을 설명한다. 자바와 스칼라 프로그램 언어로 카프카 컨슈머 API를 사용하는 예를 살펴본다. 카프카 토픽으로 메시지를 사용하기 위한 컨슈머의 메시지 흐름과 몇 가지 일반적인 유형을 깊이 있게 다룬다. 또한 카프카 컨슈머의 성능을 최적화하기 위한 기술을 살펴본다.
5장, ‘카프카 스파크 스트리밍 애플리케이션 개발’에서는 아파치 스파크(Spark) 같이 널리 사용되는 분산처리엔진을 사용해 카프카와 통합하는 방법을 다룬다. 스파크를 사용한 카프카의 통합을 위한 여러 접근 방법과 장단점에 대한 전반적 사항을 설명한다. 실제 범례를 통한 자바와 스칼라의 예제를 보여준다.
6장, ‘카프카 스톰(Storm) 애플리케이션 개발’에서는 아파치 스톰처럼 널리 쓰이는 실시간 처리엔진으로 카프카를 통합하는 방법을 다룬다. 또한 아파치 스톰과 아파치 헤론(Heron)에 대한 전반적인 사항을 설명한다. 아파치 스톰과 카프카를 사용해 이벤트 처리가 보장되는 방법을 포함한 여러 가지 이벤트 처리 예제를 보여준다.
7장, ‘컨플루언트(Confluent) 플랫폼에서의 카프카 활용’에서는 컨플루언트라는 새로운 스트리밍 플랫폼, 즉 여러 부가 기능을 사용해 효과적으로 카프카를 사용하도록 지원하는 방법을 예제와 함께 다룬다.
8장, ‘카프카를 활용한 ETL 파이프라인 제작’에서는 카프카 커넥트(Kafka Connect), 카프카를 포함하는 ETL(extract, transform, load) 파이프라인을 만들기 위한 공통 구성 요소를 다룬다. ETL 파이프라인에서 카프카 커넥트를 어떻게 활용하는지 살펴보고, 관련된 기술적 개념을 깊이 있게 논의한다.
9장, ‘카프카 스트림을 활용한 스트리밍 애플리케이션 개발’에서는 카프카 0.10 릴리즈에 포함된 카프카 스트림(Kafka Stream)을 사용해 스트리밍 애플리케이션을 제작하는 방법을 다룬다. 카프카 스트림을 사용하는 예제와 빠르고 신뢰할 수 있는 스트리밍 애플리케이션을 만드는 과정을 살펴본다.
10장, ‘카프카 클러스터 구축’에서는 기업용 운영 시스템 수준에서의 카프카 클러스터(cluster) 구축을 집중해서 다룬다. 카프카 클러스터에 관련된 용량 계획, 단일 또는 다중 클러스터 구축 등의 깊이 있는 주제를 설명한다. 또한 멀티테넌트(multi-tenant) 환경에서 카프카를 관리하는 방법을 다룬다. 카프카 데이터 마이그레이션(migration) 과정에 포함돼야 할 여러 단계를 살펴본다.
11장, ‘빅데이터 애플리케이션을 위한 카프카 활용’에서는 빅데이터 애플리케이션으로서 카프카의 활용을 다양한 관점에서 살펴본다. 카프카에서 많은 양의 데이터를 관리하는 방법, 메시지의 전송을 견고하게 보장하는 방법, 데이터 손실이 없는 장애 처리 방법, 빅데이터 파이프라인을 사용할 때 적용되는 거버넌스에 필요한 원칙을 다룬다.
12장, ‘카프카 보안’에서는 카프카 클러스터의 보안을 다룬다. 사용자 인증(authentication)과 권한 인증(authorization)의 동작원리를 예제와 함께 살펴본다.
13장, ‘스트리밍 애플리케이션 설계의 고려 사항’에서는 스트리밍 애플리케이션을 만들기 위해 설계할 때 고려할 사항을 다룬다. 병렬성(parallelism)과 메모리 조정 등과 같은 내용을 여러 관점에서 설명한다. 스트리밍 애플리케이션을 설계하기 위한 다양한 이론을 이해하기 쉽게 설명한다.
목차
목차
- 1장. 메시징 시스템 소개
- 메시징 시스템의 기본원칙
- 메시징 시스템의 이해
- 지점 간 메시징 시스템
- 게시-구독 메시징 시스템
- AMQP
- 빅데이터 스트리밍 애플리케이션에 메시징 시스템 사용하기
- 요약
- 2장. 카프카 소개, 분산 메시징 플랫폼
- 카프카의 유래
- 카프카의 구조
- 메시지 토픽
- 메시지 파티션
- 복제와 복제 로그
- 메시지 프로듀서
- 메시지 컨슈머
- 주키퍼의 역할
- 요약
- 3장. 카프카 프로듀서
- 카프카 프로듀서의 내부 구조
- 카프카 프로듀서 API
- 프로듀서 객체와 ProducerRecord 객체
- 사용자 정의 파티션
- 추가 프로듀서 설정
- 자바 카프카 프로듀서 예제
- 일반적인 메시지 게시 유형
- 카프카 프로듀서 모범 사례
- 요약
- 4장. 카프카 컨슈머
- 카프카 컨슈머 내부 구조
- 카프카 컨슈머의 역할 이해
- 카프카 컨슈머 API
- 컨슈머 설정
- 구독과 폴링
- 커밋 처리와 폴링
- 추가 설정
- 자바 카프카 컨슈머
- 스칼라 카프카 컨슈머
- 리밸런스 리스너
- 일반적인 메시지 사용 유형
- 모범 사례
- 요약
- 요약
- 카프카 컨슈머 내부 구조
- 5장. 카프카 스파크 스트리밍 애플리케이션 개발
- 스파크 소개
- 스파크의 구조
- 스파크의 핵심요소
- 스파크 운영 환경
- 스파크 스트리밍
- 수신자 기반 통합 방식
- 직접 접근 방식
- 로그 처리 활용 사례 - 사기 IP 감지
- 메이븐
- 프로듀서
- 속성 리더
- 스파크 소개
- 요약
- 6장. 카프카 스톰 애플리케이션 개발
- 아파치 스톰 소개
- 스톰 클러스터 구조
- 스톰 애플리케이션의 개념
- 아파치 헤론 소개
- 헤론의 구조
- 아파치 카프카와 아파치 스톰의 통합 - 자바
- 예제
- 아파치 카프카와 아파치 스톰의 통합 - 스칼라
- 활용 사례 - 스톰, 카프카, 하이브를 사용한 로그 처리
- 프로듀서
- 스톰 애플리케이션
- 프로젝트 실행
- 요약
- 아파치 스톰 소개
- 7장. 컨플루언트 플랫폼에서의 카프카 활용
- 컨플루언트 플랫폼 소개
- 컨플루언트 구조
- 카프카 커넥트와 카프카 스트림의 이해
- 카프카 스트림
- 스키마 레지스트리를 사용한 에이브로 다루기
- 카프카 데이터의 HDFS 이전
- 캐머스
- 고블린
- 카프카 커넥트
- 플룸
- 요약
- 8장. 카프카를 사용한 ETL 파이프라인 제작
- ETL 파이프라인에서의 카프카 활용을 위한 고려사항
- 카프카 커넥트 소개
- 카프카 커넥트 심층 분석
- 카프카 커넥트 소개 예제
- 카프카 커넥트의 일반적인 활용 사례
- 요약
- 9장. 카프카 스트림을 사용한 스트리밍 애플리케이션 개발
- 카프카 스트림 소개
- 스트림 처리에 카프카 사용하기
- 카프카 스트림 - 가벼운 스트림 처리 라이브러리
- 카프카 스트림 구조
- 통합 프레임워크의 장점
- 테이블과 스트림의 이해
- 메이븐 의존성
- 카프카 스트림 단어 수 세기 예제
- KTable
- 카프카 스트림 활용 사례와 예제
- 카프카 스트림의 메이븐 의존성
- Property Reader
- IP 레코드 프로듀서
- IP 룩업 서비스
- 사기 감지 애플리케이션
- 요약
- 카프카 스트림 소개
- 10장. 카프카 클러스터 구축
- 카프카 클러스터 내부구조
- 주키퍼의 역할
- 복제
- 메타데이터 요청 처리
- 프로듀서 요청 처리
- 컨슈머 요청 처리
- 용량 계획
- 용량 계획의 목표
- 복제 팩터
- 메모리
- 하드 드라이브
- 네트워크
- CPU
- 단일 클러스터 설치
- 다중 클러스터 설치
- 브로커 해제
- 데이터 마이그레이션
- 요약
- 카프카 클러스터 내부구조
- 11장. 빅 데이터 애플리케이션에 카프카 활용하기
- 카프카의 대용량 데이터 관리
- 적합한 하드웨어 선택
- 프로듀서의 읽기와 컨슈머의 쓰기를 위한 선택
- 카프카의 메시지 전송 체계
- 최대 한 번 전송
- 최대 한 번 전송
- 정확히 한 번 전송
- 빅 데이터와 일반적인 카프카 활용 형태
- 카프카와 데이터 거버넌스
- 알림과 모니터링
- 유용한 카프카 측정 지표
- 프로듀서 지표
- 브로커 지표
- 컨슈머 지표
- 요약
- 카프카의 대용량 데이터 관리
- 12장. 카프카 보안
- 카프카 보안 개요
- SSL을 사용한 전송 암호화
- 카프카에서 SSL을 활성화하는 과정
- 카프카 브로커에 대한 SSL 설정
- 카프카 클라이언트 SSL 설정
- 인증을 위한 커베로스 SASL
- 카프카에서 SASL/GSSAPI를 활성화하는 과정
- ACL과 권한 인증 이해
- 일반적인 ACL 동작
- 주키퍼 인증 이해
- 권한 인증을 위한 아파치 레인저
- 레인저에 카프카 서비스 추가
- 정책 추가
- 모범 사례
- 요약
- 13장. 스트리밍 애플리케이션 설계의 고려 사항
- 처리 시간과 처리량
- 데이터와 상태 정보의 지속성
- 데이터 소스
- 외부 데이터 룩업
- 데이터 형식
- 데이터 직렬화
- 병렬 처리 수준
- 순서가 바뀐 이벤트
- 메시지 처리 체계
- 요약
관련 블로그 글
실시간 데이터 처리에는 아파치 카프카
"카프카는 기업 전반에 데이터를 이동하고 그 데이터를 끊임없이 자유롭게 흐르는 스트림으로 데이터를 필요로 하는 이에게 빠르게 보내줄 수 있게 해준다." - 네하 나케데 (카프카 개발자 중 1인 , 콘플루언트 공동창업자)
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.