스트리밍 시스템 [대용량 데이터 처리를 위한 핵심 개념과 원리]
- 원서명Streaming Systems: The What, Where, When, and How of Large-Scale Data Processing (ISBN 9781491983874)
- 지은이타일러 아키다우(Tyler Akidau), 슬라바 체르냑(Slava Chernyak), 루벤 락스(Reuven Lax)
- 옮긴이이덕기, 전웅
- ISBN : 9791161755397
- 35,000원
- 2021년 06월 30일 펴냄
- 페이퍼백 | 428쪽 | 188*235mm
- 시리즈 : 데이터 과학
책 소개
2022년 대한민국학술원 우수학술도서 선정도서
요약
저자가 작성했던 블로그 글인 “스트리밍 101”에서 시작해 스트리밍 데이터 처리 시스템을 구축하고 사용하는 데 필요한 주요 개념을 “무엇”, “어디서”, “언제”, “어떻게”라는 네 가지 질문 위에 차근히 쌓아간다. 특정 시스템이나 문맥 안에서 부정확하게 쓰이는 개념을 분리해 명확히 전달하고 실제 사례에 어떻게 적용하는지 보여준다. 스트리밍 데이터 처리를 위해 어떤 시스템을 선택하든 개념을 확고하게 이해하는 것은 시스템을 이해하는 데 단단한 지반이 돼 줄 것이다.
추천의 글
“스트리밍과 배치 처리의 정확성에 관심이 있다면 반드시 읽어봐야 한다. 지금까지 봐온 책 중 해당 주제에 대해 가장 명확한 사고와 논리적 토론을 보여주며, 설명도 훌륭하다.”
이 책에서 다루는 내용
■ 스트리밍 및 배치 데이터 처리 패턴 차이
■ 강력한 비순서 데이터 처리(out-of-order data processing) 개념과 핵심 원칙
■ 워터마크를 통해 무한 데이터셋(infinite dataset)의 진행 정도와 완결 추적 방법
■ 정확히 한 번 처리(exactly-once processing) 기법의 정확성 보장 방법
■ 스트림과 테이블의 개념이 배치 및 스트리밍 데이터 처리의 토대를 이루는 방법
■ 실제 사례로 알아보는 강력한 영구적 저장 상태(persistent state)의 실질적인 목적
■ 시간 변이 관계를 통해 스트림 처리를 친숙한 SQL 및 관계 대수와 연결 짓는 방법
이 책의 대상 독자
이론적이고 플랫폼에 구애받지 않고도 스트리밍 데이터를 처리하는 방법을 배우고 싶은 데이터 엔지니어와 데이터 과학자, 개발자에게 적합하다.
이 책의 구성
크게 두 부분으로 나뉜다. 각 부는 4개의 장으로 구성돼 있고, 각 장은 상대적으로 독립된 장이 하나씩 따라오는 구조다.
1부는 빔 모델 (1~4장)을 다룬다. 이 모델은 높은 수준의 배치 및 스트리밍 데이터 처리 모델에 중점을 두고 있으며, 현재 업계 대부분의 시스템에서 전체 또는 부분적인 모습으로 이 모델을 만날 수 있다. 빔 모델은 다음 4개의 장으로 구성돼 있다.
1장, ‘스트리밍 101’에서는 스트림 처리의 기본을 다루고, 몇 가지 용어를 정의한다. 스트리밍 시스템이 갖춘 능력을 설명하고, 중요한 두 시간 영역(처리 시간(processing time)과 이벤트 시간(event time))을 구분하고, 몇 가지 일반적인 데이터 처리 패턴을 살펴본다.
2장, ‘데이터 처리의 무엇을, 어디에, 언제, 어떻게’에서는 비순서 데이터(out-of-order data)에 대한 강력한 스트림 처리의 핵심 개념을 상세히 다룬다.
3장, ‘워터마크(슬라바 집필)’에서는 워터마크를 생성하는 방법, 워터마크가 파이프라인으로 전파되는 과정을 상세히 다루고, 실제 워터마크 구현체 둘을 자세히 설명한다.
4장, ‘고급 윈도우’에서는 2장에서 중단했던 부분부터 시작해 처리 시간 윈도, 세션(session), 트리거(trigger) 같은 고급 윈도 및 트리거 개념을 자세히 알아본다.
5장, ‘”정확히 한 번” 보장과 부작용’에서는 종단간 “정확히 한 번” 또는 “실질적으로 한 번(effectively-once)” 처리를 제공하는 데 겪는 어려움을 설명하고, “정확히 한 번” 처리에 접근하는 세 가지 다른 방법을 아파치 플링크(Apache Flink), 아파치 스파크(Apache Spark), 구글 클라우드 데이터플로우 구현을 통해 소개한다.
2부, 스트림 및 테이블(6~9장)에서는 개념적으로 깊게 들어가 스트림 처리의 내부를 ‘스트림과 테이블’을 통해 바라보는 방법을 다룬다.
6장, ‘스트림과 테이블’에서는 스트림과 테이블의 기본적인 아이디어를 전달하고, 스트림과 테이블이라는 렌즈로 기존 맵리듀스 동작을 분석한다. 또한 이를 빔 모델 전반을 넘어서는 범위에 적용할 수 있도록 충분히 일반화한 스트림/테이블 이론을 구성해본다.
7장, ‘영구적인 저장 상태의 실용성’에서는 스트리밍 파이프라인에서 영구적인 저장 상태(persistent state)가 필요한 이유를 살펴본다. 그리고 흔히 만날 수 있는 암묵적인 상태 둘과, 일반화된 상태 관리 방법이 갖춰야 하는 특성을 알 수 있게 해주는 실질적인 사용 사례(광고 어트리뷰션)를 분석해본다.
8장, ‘스트리밍 SQL’에서는 관계대수(relational algebra)와 SQL의 문맥에서 스트리밍이 갖는 의미를 살펴본다. 이후 빔 모델과 고전적인 SQL 내에 존재하는 고유의 스트림 및 테이블 편향을 비교해 보고, SQL에 강력한 스트리밍 처리를 통합하기 위한 일련의 방법을 제안한다.
9장, ‘스트리밍 조인’에서는 다양한 조인(join) 유형을 설명하고, 스트리밍이라는 문맥 안에서 그 행동을 분석해본다. 또한 시간 유효성 윈도우(temporal validity window)라는 유용하지만 현재로서는 잘 지원되지 않는 사례를 상세히 살펴볼 것이다.
10장, ‘대용량 데이터 처리의 진화’에서는, 데이터 처리 시스템의 역사를 맵리듀스 계열 시스템에 집중해 다루고, 스트리밍 시스템이 오늘날의 모습으로 진화하는 데 기여한 중요한 내용을 살펴본다.
상세 이미지
목차
목차
- 1부. 빔 모델
- 1장. 스트리밍
- 용어: 스트리밍이란?
- 심하게 과장된 스트리밍의 한계
- 이벤트 시간 대 처리 시간
- 데이터 처리 패턴
- 유한 데이터
- 무한 데이터: 배치
- 무한 데이터: 스트리밍
- 요약
- 용어: 스트리밍이란?
- 2장. 데이터 처리의 무엇을, 어디서, 언제, 어떻게
- 로드맵
- 배치 처리의 기본: 무엇과 어디서
- 무엇: 변환
- 어디서: 윈도
- 스트리밍으로 전환: 언제와 어떻게
- 언제: 트리거가 좋은 이유는 트리거가 좋기 때문이다!
- 언제: 워터마크
- 언제: 조기/정시/지연 트리거
- 언제: 허용된 지연 범위(가비지 컬렉션)
- 어떻게: 누적
- 요약
- 3장. 워터마크
- 정의
- 소스 워터마크 생성
- 완벽한 워터마크 생성
- 휴리스틱 워터마크 생성
- 워터마크 전파
- 워터마크 전파 이해하기
- 워터마크 전파와 출력 타임스탬프
- 까다로운 겹치는 윈도의 경우
- 백분위 워터마크
- 처리 시간 워터마크
- 사례 연구
- 사례 연구: 구글 클라우드 데이터플로우의 워터마크
- 사례 연구: 아파치 플링크의 워터마크
- 사례 연구: 구글 클라우드 Pub/Sub의 소스 워터마크
- 요약
- 4장. 고급 윈도
- 언제 / 어디서 : 처리 시간 윈도
- 이벤트 시간 윈도
- 트리거를 사용한 처리 시간 윈도
- 인입 시간을 사용한 처리 시간 윈도
- 어디서: 세션 윈도
- 어디서: 커스텀 윈도
- 고정 윈도의 변형
- 세션 윈도의 변형
- 한 크기로는 충분치 않다
- 요약
- 언제 / 어디서 : 처리 시간 윈도
- 5장. “정확히 한 번” 보장과 부작용
- 왜 “정확히 한 번” 보장이 중요한가?
- 정확성 대 완결성
- 부작용
- 문제 정의
- 셔플에서의 “정확히 한 번” 보장
- 결정론 다루기
- 성능
- 그래프 최적화
- 블룸 필터
- 가비지 컬렉션
- 소스에서의 “정확히 한 번” 보장
- 싱크에서의 “정확히 한 번” 보장
- 사용 사례
- 소스 예시: 클라우드 Pub/Sub
- 싱크 예시: 파일
- 싱크 예시: 구글 빅쿼리
- 다른 시스템
- 아파치 스파크 스트리밍
- 아파치 플링크
- 요약
- 2부. 스트림과 테이블
- 6장 스트림과 테이블
- 스트림/테이블의 기본: 스트림/테이블의 특수상대론
- 스트림/테이블의 일반상대론을 향해서
- 배치 처리 대 스트림/테이블
- 맵리듀스의 스트림 테이블 분석
- 배치 처리와의 조화
- 스트림/테이블 세상에서의 무엇, 어디서, 언제, 어떻게
- 무엇: 변환
- 어디서: 윈도
- 언제: 트리거
- 어떻게: 누적
- 빔 모델에서 스트림/테이블의 전반적인 모습
- 스트림/테이블의 일반 상대론
- 요약
- 스트림/테이블의 기본: 스트림/테이블의 특수상대론
- 7장. 영구적 저장 상태의 실용성
- 동기부여
- 불가피한 실패
- 정확성 및 효율성
- 암시적 상태
- 원시 그룹핑
- 증분 결합
- 일반화된 상태
- 사용 사례: 전환 어트리뷰션
- 빔을 사용한 전환 어트리뷰션
- 요약
- 동기부여
- 8장. 스트리밍 SQL
- 스트리밍 SQL이란 무엇인가?
- 관계대수
- 시간 변이 관계
- 스트림과 테이블
- 뒤돌아보기: 스트림/테이블 편향
- 빔 모델: 스트림 편향의 접근
- SQL 모델: 테이블 편향 접근
- 내다보기: 강력한 스트리밍 SQL을 향해서
- 스트림/테이블 선택
- 시간 연산자
- 요약
- 스트리밍 SQL이란 무엇인가?
- 9장. 스트리밍 조인
- 모든 조인은 스트리밍에 속한다
- 윈도 없는 조인
- FULL OUTER
- LEFT OUTER
- RIGHT OUTER
- INNER
- ANTI
- SEMI
- 윈도 조인
- 고정 윈도
- 시간 유효성
- 시간 유효성 조인
- 요약
- 10장. 대용량 데이터 처리의 진화
- 맵리듀스
- 하둡
- 플룸
- 스톰
- 스파크
- 밀휠
- 카프카
- 클라우드 데이터플로우
- 플링크
- 빔
- 요약