장바구니 담기 close

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

아파치 플링크로 하는 스트림 데이터 처리

아파치 플링크로 하는 스트림 데이터 처리

  • 파비안휴스케
  • |
  • 에이콘출판
  • |
  • 2020-04-22 출간
  • |
  • 440페이지
  • |
  • 188 X 235 X 25 mm
  • |
  • ISBN 9791161754093
판매가

35,000원

즉시할인가

31,500

배송비

무료배송

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

수량
+ -
총주문금액
31,500

이 상품은 품절된 상품입니다

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

출판사서평




★ 이 책에서 다루는 내용 ★

■ 상태가 있는 스트림의 분산 처리 개념과 도전 과제
■ 이벤트 시간 처리 모드와 내고장성 모델을 포함한 플링크 시스템 아키텍처
■ 시간 기반과 상태가 있는 연산자를 포함한 DataStream API의 기초와 구성 요소 이해
■ 정확히 한 번(exactly-once) 일관성을 보장하면서 외부 시스템의 데이터 읽고 쓰기
■ 플링크 클러스터 설치와 설정
■ 스트리밍 애플리케이션의 지속적인 실행에 필요한 운영 방법

★ 이 책의 구성 ★

아파치 플링크를 이용해 스트림을 처리할 때 알아야 하는 모든 내용을 다룬다. 11개의 장으로 구성했으며 아파치 플링크를 폭넓게 설명한다. 몇 개 장은 이론 위주로 설명하며 고수준의 설계 개념을 소개하는 것이 목표지만, 나머지는 직접 실행해볼 수 있는 내용과 코드 예제를 포함하고 있다.
이 책을 쓸 때는 각 장을 순서대로 읽도록 기획했지만, 이미 내용을 잘 알고 있는 장은 건너뛰고 싶은 독자도 있을 것이다. 플링크 코드를 직접 짜보는 데 관심 있는 독자라면 실전 코드를 포함하고 있는 장을 먼저 보고 싶을 것이다. 아래에 각 장의 내용을 소개하고 있으므로, 관심 있는 장이 있다면 바로 찾아봐도 된다.
1장, ‘상태가 있는 스트림 처리 소개’에서는 상태가 있는 스트림 처리의 개요와 데이터 처리 애플리케이션 아키텍처, 애플리케이션 설계, 스트리밍 처리가 전통적인 방식보다 어떤 이점이 있는지 소개한다. 로컬 플링크 인스턴스에서 스트리밍 애플리케이션을 어떻게 실행하는지도 보여준다.
2장, ‘스트리밍 처리 기초’에서는 스트리밍 처리의 기초와 도전 과제, 플링크만의 독자적인 내용을 알아본다.
3장, ‘아파치 플링크 아키텍처’에서는 플링크 시스템의 아키텍처와 내부를 설명한다. 또한 스트리밍 애플리케이션의 분산 아키텍처, 시간과 상태 처리, 플링크 내고장성 메커니즘을 살펴본다.
4장, ‘아파치 플링크 개발 환경 설치’에서는 플링크 애플리케이션을 개발하고 디버깅하는 환경을 설치하는 방법을 설명한다.
5장, ‘DataStream API(v1.7)’에서는 플링크 DataStream API의 기초를 소개한다. DataStream 애플리케이션을 어떻게 구현하고 어떤 스트림 변환 연산, 함수, 데이터 타입을 제공하는지 배운다.
6장, ‘시간 기반 연산자와 윈도우 연산자에서는 DataStream API의 시간 기반 연산자를 알아본다. 스트리밍 애플리케이션에서 시간을 다룰 때 많은 유연성을 제공하는 ProcessFunction뿐만 아니라 윈도우 연산자와 시간 기반 조인을 살펴본다.
7장, ‘상태가 있는 연산자와 애플리케이션’에서는 상태가 있는 함수를 어떻게 구현하는지 설명하고, 상태가 있는 함수의 성능, 견고성, 코드 진화와 같은 관련된 모든 주제를 알아본다. 또한 플링크 쿼리 가능한 상태(Queryable State)를 어떻게 사용하는지도 보여준다.
8장, ‘외부 시스템 연동’에서는 플링크에서 가장 일반적으로 사용하는 소스와 싱크 커넥터를 알아본다. 플링크가 단대단 애플리케이션 일관성 보장에 어떻게 접근하는지 알아보며, 사용자가 입력 데이터 소스와 외부 시스템으로 데이터를 내보내는 싱크를 어떻게 정의하는지 설명한다.
9장, ‘플링크 설치’에서는 플링크 클러스터를 다양한 환경에서 설치하고 설정하는 방법을 소개한다.
10장, ‘플링크와 스트리밍 애플리케이션 운영’에서는 스트리밍 애플리케이션을 1년 365일 24시간 실행하는 데 필요한 운영, 모니터링, 유지 보수 방법을 다룬다.
11장, ‘새 여정의 시작’에서는 플링크 관련 질문을 어디에 하면 될지, 관련 행사에 참석하는 방법과 플링크가 현재 어떻게 사용되는지 알 수 있는 여러 정보를 제공한다.

★ 옮긴이의 말 ★

스트림 데이터 처리 프로젝트를 시작할 때 어떤 기술을 사용할지 많이 고민할 것이다. 아파치 스파크, 카프카 스트림, 아파치 플링크, 나이파이(NiFi) 등 다양한 선택 사항이 있다. 사실 무엇을 선택하든 처음에는 다들 비슷하게 느껴진다. 기능상으로 유사하므로 아무거나 사용해도 되겠다고 착각할 수도 있다. 나도 실시간 프로젝트를 시작할 때 처음에는 아파치 스파크와 아파치 플링크 중 어떤 것을 사용할지 많은 고민을 했다. 결국 아파치 플링크를 선택한 결정적인 이유는, 아파치 스파크가 “스트림은 작은 배치(batch)다”라고 접근하는 데 반해 아파치 플링크는 “배치는 데이터가 유한한 스트림이다”라고 접근하는 설계 철학 때문이었다. 초저지연을 목표로 하는 실시간 처리에 있어 배치로 스트림 데이터를 처리하면 지연이 발생할 수밖에 없다. 또한 이 책의 제목에서도 강조하는 ‘상태가 있는 스트림 처리’는 거의 아파치 플링크만이 완벽하게 구현했다고 볼 수 있다.
이 책은 아파치 플링크로 스트림 데이터를 처리하는 애플리케이션 개발만을 목표로 하지 않는다. 1장부터 3장까지는 일반적인 스트림 데이터 처리 이론부터 아파치 플링크의 구현 원리를 상세히 설명한다. 이 세 개의 장을 읽고 나면 여러분도 스트림 데이터 처리에 있어 ‘데이터 유실과 중복’, ‘스트림 데이터의 기준 시간’, ‘윈도우’, ‘지연 시간’, ‘단대단(End-to-End) 일치성’ 문제 등 기본적인 스트림 데이터 처리 지식을 쌓을 수 있다. 따라서 개발자가 아니더라도 스트림 데이터 처리의 일반적인 지식이 필요한 독자라면 1장부터 3장까지 읽어볼 가치가 있다.
나머지 장은 스트림 데이터 처리 개발의 내용으로 개발자에게 특히 유용하다. 상태 관리, 윈도우 처리, 성능 최적화 등 어느 한 장이라도 소홀히 넘길 수 없을 정도로 훌륭한 내용으로 가득 차 있다.
이제 아파치 플링크는 스트림 처리뿐만 아니라 배치 처리까지 가능한 통합 데이터 처리 엔진으로 발전해 가고 있다. 아파치 스파크도 실시간 처리 기능을 계속 발전시키고 있어 이 두 프로젝트가 기능적으로는 수렴돼 가고 있다. 하지만 현재 기준에서 스트림 처리의 왕좌는 ‘아파치 플링크’다.
이 책을 번역할 때 최대한 번역투가 되지 않게 여러 번 리뷰를 진행했다. 그럼에도 일부 어색한 문장이 아직 있을 수 있으니 오역이나 어색한 부분이 있으면 지적해주길 바란다. 그리고 내가 아파치 플링크를 이용해 개발하면서 경험한 내용을 바탕으로 책 내용을 이해하는 데 도움이 될 만한 보조 설명을 군데군데 추가했으므로 조금이나마 도움이 됐으면 한다.


목차


1장. 상태가 있는 스트림 처리 소개
__전통적인 데이터 인프라
____트랜잭션 처리
____분석 처리
__상태가 있는 스트림 처리
____이벤트 주도 애플리케이션
____데이터 파이프라인
____스트리밍 분석
__오픈소스 스트리밍 처리의 진화
____스트림 처리의 역사
__플링크 빠르게 살펴보기
____첫 번째 플링크 애플리케이션 실행
__요약

2장. 스트리밍 처리 기초
__데이터플로우 프로그래밍 소개
____데이터플로우 그래프
____데이터 병렬화와 태스크 병렬화
____데이터 교환 전략
__병렬 스트림 처리
____지연과 처리율
____데이터 스트림 연산
__시간 시멘틱
____스트리밍 처리에서 1분
____처리 시간
____이벤트 시간
____워터마크
____처리 시간과 이벤트 시간
__상태와 일관성 모델
____태스크 실패
____결과 보장
__요약

3장. 아파치 플링크 아키텍처
__시스템 아키텍처
____플링크 컴포넌트
____애플리케이션 배치
____태스크 실행
____고가용성 설정
__플링크 내부의 데이터 전송
____크레딧 기반 흐름 제어
____태스크 체이닝
__이벤트 시간 처리
____타임스탬프
____워터마크
____워터마크 전파와 이벤트 시간
____타임스탬프 할당과 워터마크 생성
__상태 관리
____연산자 상태
____키 상태
____상태 백엔드
____상태가 있는 연산자의 수평 확장
__체크포인트, 세이브포인트, 상태 복구
____일관성 체크포인트
____일관성 체크포인트에서 복구
____플링크의 체크포인트 알고리즘
____체크포인트가 성능에 미치는 영향
____세이브포인트
__요약

4장. 아파치 플링크 개발 환경 설치
__소프트웨어 요구 사항
__IDE에서 플링크 애플리케이션 실행과 디버깅
____IDE에서 예제 코드 불러오기
____IDE에서 플링크 애플리케이션 실행
____IDE에서 플링크 애플리케이션 디버깅
__플링크 메이븐 프로젝트 부트스트랩
__요약

5장. DataStream API(v1.7)
__헬로우, 플링크!
____실행 환경 설정
____입력 스트림 읽기
____변환 연산 적용
____결과 출력
____실행
__변환 연산
____기본 변환 연산
____KeyedStream 변환 연산
____다중 스트림 변환 연산
____분산 변환 연산
__병렬 설정
__데이터 타입
____지원하는 데이터 타입
____TypeInformation 생성
____명시적인 TypeInformation 제공
__키 정의 방법과 필드 참조
____필드 위치
____필드 표현식
____Key Selector
__함수 구현
____함수 클래스
____람다 함수
____RichFunction
__외부 의존 라이브러리와 플링크 라이브러리 포함
__요약

6장. 시간 기반 연산자와 윈도우 연산자
__시간 특성 설정
____타임스탬프 할당과 워터마크 생성
____워터마크가 지연과 완성도에 미치는 영향
__ProcessFunction
____TimerService와 타이머
____사이드 출력으로 내보내기
____CoProcessFunction
__윈도우 연산자
____윈도우 연산자 정의
____기본 윈도우 할당자
____윈도우에 함수 적용
____사용자 정의 윈도우 연산자
__시간 기반 스트림 조인
____간격 조인
____윈도우 조인
__연착 데이터 처리
____연착 이벤트 버리기
____연착 이벤트 재전송
____연착 이벤트를 포함해 처리 결과 갱신
____요약

7장. 상태가 있는 연산자와 애플리케이션
__상태가 있는 함수 구현
____RuntimeContext에 키 상태 선언
____ListCheckpointed 인터페이스를 이용해 연산자 리스트 상태 구현
____브로드캐스트 상태 사용
____CheckpointedFunction 인터페이스 사용
____체크포인트 완료 알림 받기
__상태가 있는 애플리케이션의 장애 복구 활성화
__상태가 있는 애플리케이션의 유지 보수 활성화
____연산자 고유 식별자 지정
____키 상태 연산자에 최대 병렬 값 정의
__상태가 있는 애플리케이션의 성능과 견고함
____상태 백엔드 선택
____기본 상태 종류 선택
____상태 누수 방지
__상태가 있는 애플리케이션의 진화
____기존 상태 수정 없이 애플리케이션 갱신
____애플리케이션에서 상태 제거
____연산자의 상태 변경
__쿼리 가능한 상태
____쿼리 가능한 상태의 아키텍처와 쿼리 가능한 상태 활성화
____쿼리 가능한 상태 노출
____외부 애플리케이션에서 상태 쿼리
__요약

8장. 외부 시스템 연동
__애플리케이션 일관성 보장
____멱등적 쓰기
____트랜잭션 쓰기
__기본 제공 커넥터
____아파치 카프카 소스 커넥터
____아파치 카프카 싱크 커넥터
____파일 시스템 소스 커넥터
____파일 시스템 싱크 커넥터
____아파치 카산드라 싱크 커넥터
__사용자 정의 소스 함수 구현
____재설정 가능한 소스 함수
____SourceFunction, 타임스탬프, 워터마크
__사용자 정의 싱크 함수 구현
____멱등적 싱크 커넥터
____트랜잭션 싱크 커넥터
__비동기로 외부 시스템에 접근
__요약

9장. 플링크 설치
__배치 모드
____독립형 클러스터
____도커
____아파치 하둡 YARN
____쿠버네티스
__고가용성 설정
____고가용성 독립형 설정
____고가용성 YARN 설정
____고가용성 쿠버네티스 설치
__하둡 컴포넌트와 통합
__파일 시스템 설정
__시스템 환경설정
____자바와 클래스 로딩
____CPU
____메인메모리와 네트워크 버퍼
____디스크 저장소
____체크포인트와 상태 백엔드
____보안
__요약

10장. 플링크와 스트리밍 애플리케이션 운영
__스트리밍 애플리케이션 실행과 관리
____세이브포인트
____커맨드라인 클라이언트로 애플리케이션 관리
____REST API로 애플리케이션 관리
____애플리케이션을 컨테이너로 번들링하고 배치
__태스크 스케줄 제어
____태스크 체이닝 제어
____슬롯 공유 그룹 정의
__체크포인팅과 복구 튜닝
____체크포인팅 설정
____상태 백엔드 설정
____복구 설정
__플링크 클러스터와 애플리케이션 모니터링
____플링크 웹 UI
____메트릭 시스템
____지연 모니터링
__로깅 설정
__요약

11장. 새 여정의 시작
__스트리밍 처리 외의 플링크 생태계
____DataSet API로 배치 처리
____Table API와 SQL로 관계형 데이터 분석
____FlinkCEP로 복합 이벤트 처리와 패턴 매칭
____그래프 처리를 위한 Gelly
__커뮤니티 소개

교환 및 환불안내

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