상세 컨텐츠

본문 제목

아파치 카프카 애플리케이션 프로그래밍 with 자바

전체 출간 도서

by 비제이퍼블릭 2021. 4. 9. 16:12

본문

아파치 카프카 애플리케이션 프로그래밍 with 자바

부제 카프카의 개념부터 스트림즈 · 커넥트 · 스프링 카프카까지 데이터 파이프라인 구축 따라하기

저자 최원영

출간/배본가능일 2021년 4월 14일

정가 32,000원

페이지 480

판형 크라운판 (173 * 230)

ISBN 979-11-6592-054-8(93000)

 

 

 

 

 

책 소개

아파치 카프카 애플리케이션 개발을 위한 「실전 가이드」

아파치 카프카란 무엇일까? 카프카 애플리케이션은 어떻게 만들까? 데이터 파이프라인을 만들기 위해 어떤 카프카 라이브러리를 사용해야 할까? 클라우드 기반 아파치 카프카는 어떤 기능을 가지고 있을까?
이 책은 아파치 카프카의 기본적인 개념과 상용 프로젝트에 카프카를 사용하는 방안, 그리고 코드를 기반으로 연동 애플리케이션을 개발하는 과정을 소개한다. 또한, 「실전 프로젝트」에서 실무에 많이 사용되는 아키텍처와 유사한 구조로 실습을 진행하며 상용 환경에서 어떻게 데이터 파이프라인을 구축하는지 설명한다.
이 책을 통해 카프카와 연관된 플랫폼들과의 관계를 전체적으로 이해하는 것을 넘어 카프카를 업무에 성공적으로 도입하고 안정적으로 운영할 수 있을 것이다.

 

[이 책의 주요 내용]

- 미러메이커2
- 카프카 커넥트
- 카프카 명령어
- 카프카 스트림즈
- 카프카 클라이언트(컨슈머, 프로듀서, 어드민)
- 클라우드 카프카(Confluent Cloud, AWS MSK)
- 스프링 카프카

 

[이 책의 구성]

이 책은 아파치 카프카 기반의 대규모 데이터 파이프라인을 유연하고 안전하게 운영하기 위한 방안에 초점을 맞추었다.

[1장]은 카프카의 탄생 배경과 특징을 다루고, 카프카가 미래의 빅데이터 아키텍처에서 어떤 모습으로 변화할지 설명한다.
[2장]에서는 테스트용 카프카를 AWS에 설치하고 로컬의 카프카 커맨드 라인 툴로 동작을 익히며 카프카 동작에 대한 개념을 익힌다.
[3장]은 카프카를 운영하는 데 필요한 기본 개념을 습득한다. 그리고 테스트용 카프카와 연동하는 컨슈머, 프로듀서, 스트림즈, 프로세서, 커넥트, 미러메이커2를 개념과 함께 실습한다.
[4장]을 통해 한층 심화된 내용을 체득하여 카프카의 활용도를 한층 더 높일 수 있다. 4.4장에서는 스프링 카프카 라이브러리에 대한 설명과 소스코드를 포함하는데, 스프링 프레임워크 사용률이 높은 한국 독자를 위해 특별히 해당 내용을 실었다.
[5장]에서는 학습한 내용을 토대로 3가지 「실전 프로젝트」를 진행한다. 현업에서 프로젝트를 진행하는 것처럼 구성하여 실제로 데이터 파이프라인을 구축하는 많은 도움이 될 것이다.
[6장]은 클라우드에서 SaaS 형태로 사용할 수 있는 카프카 서비스의 대표적인 2가지, 컨플루언트 클라우드와 AWS MSK에 대해 설명하고 실습한다.

 

[예제 소스코드 다운로드]

https://github.com/bjpublic/apache-kafka-with-java

 

저자 소개

최원영
궁금증과 도전 그리고 공유를 모토로 삼고 있다. SK플래닛을 첫 회사로 입사하고 이후, 11번가 커머스 백엔드, 프론트엔드, 플랫폼 그리고 배포와 같이 다양한 업무를 수행하면서 다방면으로 개발 역량을 쌓아왔다. 단순히 요구사항을 구현하는 데에 집중하는 것이 아닌 고객이 만족하는 서비스를 개발하기 위해 노력하고 있다. Data Infrastructure 팀에서 100개 이상의 데이터 파이프라인을 개발하고 운영하는 데이터 엔지니어로서 카프카 관련 역량을 쌓았다. 항상 새로운 것에 호기심이 많으며 적극적으로 탐구하는 개발자로 지내고 있으며, 습득한 지식을 지속적으로 사내외로 공유하고자 노력한다. 지금은 카카오에서 새로운 도전을 시작하고 있다.

- 현) 카카오, 광고추천데이터플랫폼파트
- 개발 블로그(https://blog.voidmainvoid.net) 운영
- 개발 유튜브(https://bit.ly/devwonyoung) 운영

 

목차

[1장] 들어가며
1.1 카프카의 탄생
1.2 빅데이터 파이프라인에서 카프카의 역할
1.3 데이터 레이크 아키텍처와 카프카의 미래
1.4 정리

 

[2장] 카프카 빠르게 시작해보기
2.1 실습용 카프카 브로커 설치
2.1.1 AWS EC2 인스턴스 발급 및 보안 설정
2.1.2 인스턴스에 접속하기
__ssh 명령어로 접속하기
__putty로 접속하기
2.1.3 인스턴스에 자바 설치
2.1.4 주키퍼·카프카 브로커 실행
__카프카 브로커 힙 메모리 설정
__카프카 브로커 실행 옵션 설정
__주키퍼 실행
__카프카 브로커 실행 및 로그 확인
2.1.5 로컬 컴퓨터에서 카프카와 통신 확인
__테스트 편의를 위한 hosts 설정

2.2 카프카 커맨드 라인 툴
2.2.1 kafka-topics.sh
__토픽 생성
__토픽 리스트 조회
__토픽 상세 조회
__토픽 옵션 수정
2.2.2 kafka-console-producer.sh
2.2.3 kafka-console-consumer.sh
2.2.4 kafka-consumer-groups.sh
2.2.5 kafka-verifiable-producer, consumer.sh
2.2.6 kafka-delete-records.sh

2.3 정리

 

[3장] 카프카 기본 개념 설명
3.1 카프카 브로커 · 클러스터 · 주키퍼
__데이터 저장, 전송
__데이터 복제, 싱크
__컨트롤러(controller)
__데이터 삭제
__컨슈머 오프셋 저장
__코디네이터(coordinator)

3.2 토픽과 파티션
__토픽 이름 제약 조건
__의미 있는 토픽 이름 작명 방법

3.3 레코드

3.4 카프카 클라이언트
3.4.1 프로듀서 API
__카프카 프로듀서 프로젝트 생성
__프로듀서 중요 개념
__프로듀서 주요 옵션
__메시지 키를 가진 데이터를 전송하는 프로듀서
__커스텀 파티셔너를 가지는 프로듀서
__브로커 정상 전송 여부를 확인하는 프로듀서
3.4.2 컨슈머 API
__카프카 컨슈머 프로젝트 생성
__컨슈머 중요 개념
__컨슈머 주요 옵션
__동기 오프셋 커밋
__비동기 오프셋 커밋
__리밸런스 리스너를 가진 컨슈머
__파티션 할당 컨슈머
__컨슈머에 할당된 파티션 확인 방법
__컨슈머의 안전한 종료
3.4.3 어드민 API
__브로커 정보 조회
__토픽 정보 조회

3.5 카프카 스트림즈
3.5.1 스트림즈DSL
__KStream
__KTable
__GlobalKTable
__스트림즈DSL 주요 옵션
__스트림즈DSL - stream( ), to( )
__스트림즈DSL - filter( )
__스트림즈DSL - KTable과 KStream을 join( )
__스트림즈DSL - GlobalKTable과 KStream을 join( )
3.5.2 프로세서 API

3.6 카프카 커넥트
__커넥트를 실행하는 방법
__단일 모드 커넥트
__분산 모드 커넥트
3.6.1 소스 커넥터
__파일 소스 커넥터 구현
3.6.2 싱크 커넥터
__파일 싱크 커넥터 구현

3.7 카프카 미러메이커2
3.7.1 미러메이커2를 활용한 지리적 복제(Geo-Replication)

3.8 정리

 

[4장] 카프카 상세 개념 설명
4.1 토픽과 파티션
4.1.1 적정 파티션 개수
4.1.2 토픽 정리 정책(cleanup.policy)
__토픽 삭제 정책(delete policy)
__토픽 압축 정책(compact policy)
4.1.3 ISR(In-Sync-Replicas)
__unclean.leader.election.enable

4.2 카프카 프로듀서
4.2.1 acks 옵션
__min.insync.replicas
4.2.2 멱등성 프로듀서(idempotence producer)
4.2.3 트랜잭션 프로듀서(transaction producer)

4.3 카프카 컨슈머
4.3.1 멀티 스레드 컨슈머
__카프카 컨슈머 멀티 워커 스레드 전략
__카프카 컨슈머 멀티 스레드 전략
4.3.2 컨슈머 랙
__카프카 명령어를 사용하여 컨슈머 랙 조회
__컨슈머 metrics( ) 메서드를 사용하여 컨슈머 랙 조회
__외부 모니터링 툴을 사용하여 컨슈머 랙 조회
4.3.2.1 카프카 버로우
__컨슈머 랙 모니터링 아키텍처
4.3.3 컨슈머 배포 프로세스
__중단 배포
__무중단 배포

4.4 스프링 카프카
4.4.1 스프링 카프카 프로듀서
__기본 카프카 템플릿
__커스텀 카프카 템플릿
4.4.2 스프링 카프카 컨슈머
__기본 리스너 컨테이너
__커스텀 리스너 컨테이너

4.5 정리

 

[5장] 카프카 실전 프로젝트
5.1 웹 페이지 이벤트 적재 파이프라인 생성
5.1.1 요구 사항
5.1.2 정책 및 기능 정의
5.1.3 기능 구현
5.1.4 기능 테스트
5.1.5 상용 인프라 아키텍처

5.2 서버 지표 수집 파이프라인 생성과 카프카 스트림즈 활용
5.2.1 요구 사항
5.2.2 정책 및 기능 정의
5.2.3 기능 구현
5.2.4 기능 테스트
5.2.5 상용 인프라 아키텍처

5.3 미러메이커2를 사용한 토픽 미러링
5.3.1 요구 사항
5.3.2 기능 정의
5.3.3 기능 구현
5.3.4 기능 테스트
5.3.5 상용 인프라 아키텍처

5.4 정리

 

[6장] 클라우드 카프카 서비스
6.1 컨플루언트 클라우드
6.1.1 컨플루언트 클라우드 활용
6.1.1.1 클러스터 생성
6.1.1.2 토픽 생성
6.1.1.3 API키 발급
6.1.1.4 프로듀서 애플리케이션 연동
6.1.1.5 컨슈머 애플리케이션 연동
6.1.1.6 커넥터 S3 적재 파이프라인
6.1.2 컨플루언트 카프카 정리

6.2 AWS MSK
6.2.1 MSK 활용
6.2.1.1 클러스터 생성
6.2.1.2 MSK 클러스터 연동 인스턴스 생성
6.2.1.3 토픽 생성
6.2.1.4 프로메테우스 설치 및 연동
6.2.1.5 그라파나 설치 및 연동
6.2.1.6 콘솔 프로듀서, 컨슈머 연동
6.2.2 AWS MSK 정리

6.3 정리


[7장] 부록
7.1 카프카 소스코드 다운로드 및 분석
7.2 로컬 테스트용 카프카 도커 이미지 실행

 

추천사

아파치 카프카는 개발이 활발하게 이루어지고 있는 시스템이라 한국어로 된 자료는 빈약하기 짝이 없고 중요도에 비해 이를 다룰 수 있는 사람이 부족하다. 그렇기 때문에 카프카는 반드시 도입되어야 하는 아키텍처임에도 불구하고 선뜻 사용하지 못하는 조직 역시 드물지 않다. 이러한 상황 속에서 카프카 한국어 서적 출간은 반가운 소식이 아닐 수 없다. 특히 카프카의 must-have 기능 중 하나인 미러메이커2를 정면으로 다룬 한국어 자료는 본 도서가 처음이다.
이 책은 카프카의 활용 영역 중에서도 Data Warehousing(Integration)과 Big Data Processing에 초점을 맞춘다. 이는 카프카의 탄생 이유이자 본질임에도 불구하고 잘 알려지지 않은 영역이다. 이 때문에 이미 다른 자료를 많이 접한 분들도 이 책을 통해 새로운 시각으로 카프카를 바라보게 될 것이다.
_이동진 (Apache Software Foundation / 아파치 카프카 컨트리뷰터)

이 책은 카프카를 처음 입문할 때 하는 고민을 모두 해소해 준다. 특히 「실전 프로젝트」에 작성된 웹 페이지 이벤트 적재 파이프라인 만들기, 서버 지표 수집 파이프라인 만들기, 미러메이커2를 사용한 토픽 미러링 내용과 책의 중간에 작성된 팁도 매우 유익하다. 이론과 실습이 자연스럽게 이어져 읽기 쉽고, 자바보다 파이썬이 익숙한 분들도 큰 어려움이 없이 카프카의 핵심 내용을 익힐 수 있을 것이다.
_변성윤 (쏘카 / 머신러닝 엔지니어)

저자는 대용량 환경에서 아파치 카프카 애플리케이션을 개발하고 운영하며 얻은 지식을 개발자와 인프라 운영자 관점에서 포괄적으로 집약하였다. ‘개발자’ 관점에서 자바 언어 기반의 프로듀서・컨슈머 애플리케이션 구성 및 커넥터 개발에 대한 예시를 다루고, ‘인프라 운영자’ 관점에서 Public Cloud 기반의 구축 방법을 포함한 컨슈머 랙 모니터링, failover 전략까지 완벽하게 정리하였다.
_심호진 (무신사 / 인프라 파트장)

카프카를 기반으로 하는 서비스를 개발 및 운영하는 주니어 엔지니어와 시니어 엔지니어 모두에게 이 책을 추천한다. 이 책에는 저자가 SK플래닛에서 대용량 데이터 파이프라인과 데이터 플랫폼을 다년간 다루며 축적한 지식이 모두 담겨있다. 분산처리, 부하분산, 파티셔닝, 리밸런싱, 복제, 직렬화, 정족수와 리더 선출, 일관성 등의 고급 개념뿐만 아니라 저자가 몸소 체득한 운영 노하우 및 조언까지 제시한다.
_전득진 (11번가 Search Center Data Platform팀 / 팀장)

 

출판사 리뷰

전 세계 IT 기업이 선택한 빅데이터 플랫폼, 아파치 카프카
이 책과 함께 카프카 개발자로 성공하라!

 

'아파치 카프카(Apache Kafka)'는 실시간 스트리밍 데이터를 처리하는 데 있어 가장 주목받는 프레임워크이자 뛰어난 오픈소스 도구이다. 포춘 100대 기업 중 이미 80개 이상의 회사에서 도입한 것만 보아도 알 수 있듯 카프카는 백엔드 아키텍처에서 필수 불가결한 플랫폼이다. Netflix, LinkedIn, Twitter와 같은 전 세계 IT 서비스 기업부터 카카오, 네이버, 삼성 등의 국내 대기업까지, 실시간 스트리밍으로 생성되는 사용자의 데이터를 핸들링해야 하는 기업에서 카프카를 적극적으로 활용하고 있다. 이에 따라 최근 카프카 개발자에 대한 수요 또한 증가하는 추세이다.

이 책은 아파치 카프카로 새로운 개발 트렌드를 준비하는 분들을 위해 집대성한 아파치 카프카 최종 솔루션이다. 국내 서적 중 최초로 카프카의 핵심 기능인 '미러메이커2(MirrorMaker2)'에 대한 설명과 '스프링 카프카', '클라우드 카프카'에 대한 내용을 다루기 때문에 아파치 카프카 도입을 앞둔 개발자뿐만 아니라, 이미 활용하고 있는 개발자에게도 추가적인 역량 향상의 기회를 제공한다.
또한, 실무 아키텍처와 유사한 구조의 실전 프로젝트와 38개의 예제 소스코드를 통해 실제 업무에서 사용하는 기법과 코드를 익힐 수 있다.

거스를 수 없는 빅데이터 시대의 흐름을 따르고 싶다면, 그 시대 안에서 대용량 데이터를 더욱 안전하고 효율적으로 다루고 싶다면 이 책이 그 길을 제시할 것이다. 이 책과 함께 개발자로서의 커리어를 한층 더 업그레이드하길 바란다.

 

관련글 더보기

댓글 영역