Top

아파치 카프카로 데이터 스트리밍 애플리케이션 제작 [기업용 메시징 대기열 시스템의 설계와 구축 방법]

  • 원서명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)과 메모리 조정 등과 같은 내용을 여러 관점에서 설명한다. 스트리밍 애플리케이션을 설계하기 위한 다양한 이론을 이해하기 쉽게 설명한다.

저자/역자 소개

지은이의 말

아파치 카프카(Apache Kafka)는 메시징 큐(messaging queue) 또는 기업용 메시징 시스템 역할을 하는, 잘 알려진 분산 스트리밍 플랫폼이다. 카프카는 레코드 스트림을 게시, 구독하도록 돕고, 문제 발생 시 내결함성(fault-tolerant)을 지원하며 메시지를 처리한다.
이 책에서는 아파치 카프카와 다른 빅데이터 도구를 사용해 기업용 스트리밍 프로그램을 설계하고 구축할 수 있도록 설명한다. 많은 양의 데이터를 쉽게 처리하기 위해 카프카를 효과적으로 사용하는 방법에 대한 좋은 사례와 일반적으로 발생하는 문제점을 방지하는 방법을 다룬다. 먼저 전반부에는 메시징 시스템의 유형을 이해하고, 아파치 카프카의 상세한 내부 구조를 면밀하게 소개한다. 후반에서는 아파치 스파크(Spark), 아파치 스톰(Storm) 같이 다양한 프레임워크와 도구를 사용해 스트리밍 프로그램을 설계하는 과정을 살펴본다. 일단 기초적인 사항을 이해하고, 용량 계획(capacity planning), 보안 같은 아파치 카프카의 고급 주제를 다룬다.
이 책을 모두 읽으면, 아파치 카프카의 활용과 효율적인 스트리밍 데이터 애플리케이션의 설계에 친숙해지기 위한 모든 정보를 갖게 된다.

지은이 소개

매니시 쿠마(Manish Kumar)

인도의 데이터메티카 솔루션 유한회사(DataMetica Solution Pvt. Ltd.)의 테크니컬 아키텍트다. 데이터와 제품의 아키텍트로 약 11년간 데이터 관리 분야에서 근무했다. 효율적인 ETL 파이프라인 제작과 하둡(Hadoop)을 아우르는 보안 적용, 데이터 사이언스 문제에 최선의 솔루션을 제공하는 경험이 풍부하다. 빅데이터 세상에 합류하기 전에는 인도의 시어스 홀딩(Sears Holding) 사에서 테크 리드(Tech Lead)로 근무했다. 정보기술 분야에서 학사 학위를 받았으며, 하둡이나 하둡 보안과 관련된 빅데이터 개념을 다루는 여러 모임에서 주요 강사로 활동하고 있다.

찬찰 싱(Chanchal Singh)

데이터메티카 솔루션 유한회사(DataMetica Solution Pvt. Ltd.)의 소프트웨어 엔지니어다. 개발자, 데이터 기술자, 그리고 팀장으로서 제품 개발과 설계 분야에서 3년 넘게 근무했다. 무엇보다 하둡, 스파크, 스톰, 카프카, 하이브, 피그(Pig), 플룸(Flume), 자바, 스프링 등의 분야에서 매우 다양한 경력을 갖고 있다. 지식을 나누고 다른 이에게 동기를 부여하는 것이 혁신을 위한 길이라고 믿는다. 이 책의 빅데이터 파트의 공동 저자다.
찬찰은 조직에 혁신적인 아이디어를 불어 넣는다. 뭄바이 대학(University of Mumbai)에서 정보기술 분야의 학사 과정을 마쳤고, 아미티 대학(Amity University)에서 석사 과정을 수료했다. 또한 IIT 뭄바이 기업가 모임에서 활동했다.

옮긴이의 말

먼저 경험이 풍부한 독자에게는 카프카를 포함한 다양하고 새로운 기술에 대해 두려움을 갖지 말라는 메시지를 전하고 싶다. 이 책에 등장하는 메시지와 스트림을 처리하기 위한 수많은 기술과 용어는 전혀 새로운 것은 아니며, 기존 용어가 조금 사라지고, 변화에 따라 기존 기술이 새 이름으로 대체된 것이다. 카프카는 약 15년 전부터 이미 있던 메시징 시스템 개념에 여전히 충실하다.
새로운 도전의 긴 여정을 앞두고 있는 독자에게는 책의 어느 한 부분에 얽매이지 말라고 전하고 싶다. 분명 기업용 메시징 시스템은 어려운 주제다. 저자의 입장에서도 자세히 설명할 수 있겠지만, 광범위한 지식을 더 쉽고 자세하게 담기는 어려웠을 것이다. 예를 들어 누군가에게 객체나 오브젝트를 말하면 다양한 속성을 가진 물건을 떠올릴 수도 있고, 프로그램을 처음 배운 이는 클래스를 떠올리기도 하고, 숙련된 개발자 중에는 직접 만든 라이브러리를 머릿속에 그릴 수도 있다. 이렇게 사람들은 용어를 각자 다른 형태로 받아들인다. 처음부터 어떤 용어가 실제로 의미하는 모습으로 완벽하게 소화되기는 어렵지만, 여러 번 실습하고 그 결과를 전체적으로 보는 과정에서는 결국 추상적인 단어도 설명조차 필요 없는 분명한 개념이 된다.

옮긴이 소개

최 준

대기업 전산실에서 근무하다 2001년 은사를 만나 미련 없이 직장을 떠날 수 있었다. 이후 10년 동안 한국마이크로소프트와 마이크로소프트 싱가폴 지사에서 근무했다. 아시아의 200여 개 기업의 현장에서 기술 지원을 수행하면서 다양한 기업용 IT 시스템의 문제를 이해하고 해결 방안을 찾는 소중한 경험을 쌓았다. 현재 캐나다에서 회사를 설립해 기업 고객에게 클라우드 서비스 컨설팅을 하고 있다.

목차

목차
  • 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장. 스트리밍 애플리케이션 설계의 고려 사항
    • 처리 시간과 처리량
    • 데이터와 상태 정보의 지속성
    • 데이터 소스
    • 외부 데이터 룩업
    • 데이터 형식
    • 데이터 직렬화
    • 병렬 처리 수준
    • 순서가 바뀐 이벤트
    • 메시지 처리 체계
    • 요약

관련 블로그 글

실시간 데이터 처리에는 아파치 카프카


아파치 카프카(Apache Kafka)는 메시징 큐(messaging queue) 또는 기업용 메시징 시스템 역할을 하는, 잘 알려진 분산 스트리밍 플랫폼이다.

다양한 유형의 데이터를 실시간으로 수집하는 데 쓰이는 오픈소스 시스템으로, LinkedIn에서 개발했다.

웹사이트, 애플리케이션, 센서 등에서 취합한 데이터 스트림을 실시간으로 관리할 수 있는 아파치 카프카는 대용량 데이터를 수집하며,

이를 기업 사용자들이 실시간 스트림으로 사용할 수 있도록 단일화시켜주며 기업의 중추 신경계에 비해지기도 한다.



2014년, 카프카 개발자 3명은 기업이 카프카를 규모 있는 생산에 사용할 수 있도록 돕기 위해 콘플루언트(Confluent)라는 벤처를 설립했다.

컨플루언트는 보안, 관리 용이성 등의 요소를 더해 카프카를 좀 더 기업 친화적으로 업그레이드했다.

크렙스에 따르면 포천 500대 기업 중 상당수가 대용량 데이터를 프로세싱, 분석하는 과정에서 아파치 카프카를 사용하고 있다.

특히 대규모 IoT 프로젝트나, 운송 수단 자동화에 AI를 사용하는 경우 카프카를 활용하는 경우가 많다.


"카프카는 기업 전반에 데이터를 이동하고 그 데이터를 끊임없이 자유롭게 흐르는 스트림으로 데이터를 필요로 하는 이에게 빠르게 보내줄 수 있게 해준다." - 네하 나케데 (카프카 개발자 중 1인 , 콘플루언트 공동창업자)




개별 애플리케이션은 서로 다른 프로그래밍 언어와 플랫폼을 기반으로 작성된다.

단일화를 위해서는 애플리케이션들 간의 정보 공유가 필요하다. 이런 정보 교환은 네트워크상에서 이뤄진다.

통합 시스템을 구축하기 위해 기업은 일반적으로 메시징 시스템을 사용한다.

카프카는 폭넓은 확장성우수한 성능을 가진 분산 메시징 플랫폼이다.




Cerner headquarters in North Kansas City RICH SUGG rsugg@kcstar.com

미국의 건강 정보 관리 회사 서너(Cerner Corp.)는 업무 효율을 높이기 위해

병원, 진료소, 약국, 헬스장, 직장 등 다양한 출처에서 건강 데이터를 수집해 빅데이터 플랫폼을 이용할 계획이다.

이 빅데이터 플랫폼은 클라우데라(Cloudera)의 기업 데이터 허브(EDH)로 구성되고,

EDH는 실시간 데이터 스트림 처리에 아파치 카프카(Apache Kafka)를 사용한다.

아파치 카프카 사용으로 서너는 실시간에 가까운 스트리밍 시스템 확장 및 여러 소스의 데이터 수집 등과 관련된 문제를 해결할 수 있다.



『아파치 카프카로 데이터 스트리밍 애플리케이션 제작』은 이와 비슷한 실제 산업 현장의 경험에서 비롯된 모범 사례를 들어서,

아파치 카프카와 다른 빅데이터 도구를 사용해 기업용 스트리밍 프로그램을 설계하고 구축할 수 있도록 설명하고 있다.

메시징 시스템의 개념부터 시작해 아파치 카프카로 데이터 스트리밍 애플리케이션을 제작하는 방법은 물론, 이후 관리 방법까지 소개하고 있다.

아파치 카프카로 빅데이터 관리를 하려고 하면 읽어볼만한 책이다.






CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안