Top

스트리밍 시스템 [대용량 데이터 처리를 위한 핵심 개념과 원리]

  • 원서명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”에서 시작해 스트리밍 데이터 처리 시스템을 구축하고 사용하는 데 필요한 주요 개념을 “무엇”, “어디서”, “언제”, “어떻게”라는 네 가지 질문 위에 차근히 쌓아간다. 특정 시스템이나 문맥 안에서 부정확하게 쓰이는 개념을 분리해 명확히 전달하고 실제 사례에 어떻게 적용하는지 보여준다. 스트리밍 데이터 처리를 위해 어떤 시스템을 선택하든 개념을 확고하게 이해하는 것은 시스템을 이해하는 데 단단한 지반이 돼 줄 것이다.

추천의 글

“스트리밍과 배치 처리의 정확성에 관심이 있다면 반드시 읽어봐야 한다. 지금까지 봐온 책 중 해당 주제에 대해 가장 명확한 사고와 논리적 토론을 보여주며, 설명도 훌륭하다.”

– 마틴 클래프만(Martin Kleppmann), 캠브리지대학교

이 책에서 다루는 내용

■ 스트리밍 및 배치 데이터 처리 패턴 차이
■ 강력한 비순서 데이터 처리(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장, ‘대용량 데이터 처리의 진화’에서는, 데이터 처리 시스템의 역사를 맵리듀스 계열 시스템에 집중해 다루고, 스트리밍 시스템이 오늘날의 모습으로 진화하는 데 기여한 중요한 내용을 살펴본다.

상세 이미지

저자/역자 소개

지은이의 말

오늘날 빅데이터 분야에서 스트리밍 데이터 처리(streaming data processing)가 주목을 받고 있다. 점점 더 많은 기업이 세계적인 규모의 대규모 무한 데이터셋(unbounded data set)을 다루고 싶어하며, 스트리밍 시스템은 주류로 채택될 만큼 충분히 성숙한 단계에 이르렀다. 이 책이 제공하는 실용적인 가이드를 통해 데이터 엔지니어는 물론 데이터 과학자와 개발자는 개념적이고 플랫폼에 구애받지 않는 방법으로 스트리밍 데이터를 처리하는 방법을 배울 수 있다.

지은이 소개

타일러 아키다우(Tyler Akidau)

구글(Google)의 선임 소프트웨어 엔지니어다. 데이터 처리 언어 및 시스템 그룹의 기술 책임자로서 구글 내 아파치 빔(Apache Beam), 구글 클라우드 데이터플로우(Google Cloud Dataflow), 구글 플럼(Google Flume), 맵리듀스(MapReduce), 밀휠(MillWheel)과 같은 내부 데이터 처리 도구 개발을 담당하고 있다. 그는 아파치 빔 PMC 창립 멤버이기도 하다. 스트림 처리의 능력과 중요성에 대해 열정을 갖고 목소리를 높이지만 배치와 스트리밍은 동전의 양면과 같다고 굳게 믿으며, 데이터 처리 시스템의 최종 모습은 둘 사이의 매끄러운 결합이라고 생각한다. 오라일리(O'Reilly) 웹사이트에 있는 "Dataflow Model(http://bit.ly/2sXgVJ3)”, "Streaming 101(http://oreil.ly/1p1AKux)”, "Streaming 102(http://oreil.ly/1TV7YGU)”의 저자이기도 하다. 카고 자전거로 두 딸을 태우고 달리는 것을 즐긴다.

슬라바 체르냑(Slava Chernyak)

구글 시애틀 지사의 선임 소프트웨어 엔지니어이다. 구글의 내부 대규모 스트리밍 데이터 처리 시스템을 위해 6년 이상의 시간을 보냈으며, 구글 클라우드 데이터플로우의 차세대 스트리밍 백엔드인 윈드밀(Windmill)을 처음부터 설계하고 구축하는 데 참여했다. 대규모 스트림 처리가 더 많이 유용하게 쓰이도록 하는 일에 열정을 다하고 있다. 스트리밍 시스템과 관련된 작업을 하지 않을 때는 태평양 북서부의 자연의 아름다움을 즐기고 있다.

루벤 락스(Reuven Lax)

구글 시애틀 지사의 선임 소프트웨어 엔지니어이며, 지난 10년간 구글의 데이터 처리 및 분석 전략을 수립하는 데 도움을 줬다. 예전에는 밀휠 팀의 오랜 멤버이자 리더로서, 최근에는 윈드밀 팀을 설립하고 이끌면서, 구글의 짧은 지연 시간을 갖는 스트리밍 데이터 처리 활동에 집중해왔다. 빔 PMC 멤버이기도 하다. 구글의 데이터 처리 경험을 더 큰 세계에 알리게 돼 매우 기쁘게 생각하며, 2013년 「MillWheel」 논문(http://bit.ly/2yab5ZH)과 2015년 「Dataflow Model」 논문(http://bit.ly/ 2sXgVJ3)을 발표하는데 기여했다. 직장에 있지 않을 때는 스윙 댄스, 암벽 등반, 탐험을 즐긴다.

옮긴이의 말

현재 엄청난 대규모 데이터가 생성되고 이러한 빅데이터를 처리하고 분석하기 위한 요구가 점점 늘어가고 있다. 기존 빅데이터를 축적해 배치로 처리하는 방식에서 실시간으로 빅데이터를 처리하기 위해 스트리밍 시스템에 대한 관심과 요구가 증가하고 있다. 이 책은 스트리밍 시스템과 스트리밍 데이터 처리를 위한 개념과 원리를 잘 설명하고 있으며, 이를 활용하고 사용하는 방법에 대한 실무적인 내용을 포함하고 있다. 책을 다 읽고 나면 스트리밍 시스템과 스트리밍 데이터 처리에 대한 한 차원 높은 지식을 갖게 될 것이다.

옮긴이 소개

이덕기

LG전자, KAIST 스마트 IT 융합시스템 연구단을 거쳐 현재는 연암공과대학교 스마트소프트웨어학과 교수로 재직하며 IoT/빅데이터 관련 강의와 연구를 하고 있다.

전웅

삼성전자, 네이버, LG전자를 거쳐 현재는 스타트업에서 여러 서비스 개발에 몰두하고 있다. 새로운 것 배우기를 즐기며, 특히 실제의 다양성을 아우르는 이론적 개념에 관심이 많다.

목차

목차
  • 1부. 빔 모델
  • 1장. 스트리밍
    • 용어: 스트리밍이란?
      • 심하게 과장된 스트리밍의 한계
      • 이벤트 시간 대 처리 시간
    • 데이터 처리 패턴
      • 유한 데이터
      • 무한 데이터: 배치
      • 무한 데이터: 스트리밍
    • 요약

  • 2장. 데이터 처리의 무엇을, 어디서, 언제, 어떻게
    • 로드맵
    • 배치 처리의 기본: 무엇과 어디서
      • 무엇: 변환
      • 어디서: 윈도
    • 스트리밍으로 전환: 언제와 어떻게
      • 언제: 트리거가 좋은 이유는 트리거가 좋기 때문이다!
      • 언제: 워터마크
      • 언제: 조기/정시/지연 트리거
      • 언제: 허용된 지연 범위(가비지 컬렉션)
      • 어떻게: 누적
    • 요약

  • 3장. 워터마크
    • 정의
    • 소스 워터마크 생성
      • 완벽한 워터마크 생성
      • 휴리스틱 워터마크 생성
    • 워터마크 전파
      • 워터마크 전파 이해하기
      • 워터마크 전파와 출력 타임스탬프
      • 까다로운 겹치는 윈도의 경우
    • 백분위 워터마크
    • 처리 시간 워터마크
    • 사례 연구
      • 사례 연구: 구글 클라우드 데이터플로우의 워터마크
      • 사례 연구: 아파치 플링크의 워터마크
      • 사례 연구: 구글 클라우드 Pub/Sub의 소스 워터마크
    • 요약

  • 4장. 고급 윈도
    • 언제 / 어디서 : 처리 시간 윈도
      • 이벤트 시간 윈도
      • 트리거를 사용한 처리 시간 윈도
      • 인입 시간을 사용한 처리 시간 윈도
    • 어디서: 세션 윈도
    • 어디서: 커스텀 윈도
      • 고정 윈도의 변형
      • 세션 윈도의 변형
      • 한 크기로는 충분치 않다
    • 요약

  • 5장. “정확히 한 번” 보장과 부작용
    • 왜 “정확히 한 번” 보장이 중요한가?
    • 정확성 대 완결성
      • 부작용
      • 문제 정의
    • 셔플에서의 “정확히 한 번” 보장
    • 결정론 다루기
    • 성능
      • 그래프 최적화
      • 블룸 필터
      • 가비지 컬렉션
    • 소스에서의 “정확히 한 번” 보장
    • 싱크에서의 “정확히 한 번” 보장
    • 사용 사례
      • 소스 예시: 클라우드 Pub/Sub
      • 싱크 예시: 파일
      • 싱크 예시: 구글 빅쿼리
    • 다른 시스템
      • 아파치 스파크 스트리밍
      • 아파치 플링크
    • 요약

  • 2부. 스트림과 테이블
  • 6장 스트림과 테이블
    • 스트림/테이블의 기본: 스트림/테이블의 특수상대론
      • 스트림/테이블의 일반상대론을 향해서
    • 배치 처리 대 스트림/테이블
      • 맵리듀스의 스트림 테이블 분석
      • 배치 처리와의 조화
    • 스트림/테이블 세상에서의 무엇, 어디서, 언제, 어떻게
      • 무엇: 변환
      • 어디서: 윈도
      • 언제: 트리거
      • 어떻게: 누적
      • 빔 모델에서 스트림/테이블의 전반적인 모습
    • 스트림/테이블의 일반 상대론
    • 요약

  • 7장. 영구적 저장 상태의 실용성
    • 동기부여
      • 불가피한 실패
      • 정확성 및 효율성
    • 암시적 상태
      • 원시 그룹핑
      • 증분 결합
    • 일반화된 상태
      • 사용 사례: 전환 어트리뷰션
      • 빔을 사용한 전환 어트리뷰션
    • 요약

  • 8장. 스트리밍 SQL
    • 스트리밍 SQL이란 무엇인가?
      • 관계대수
      • 시간 변이 관계
      • 스트림과 테이블
    • 뒤돌아보기: 스트림/테이블 편향
      • 빔 모델: 스트림 편향의 접근
      • SQL 모델: 테이블 편향 접근
    • 내다보기: 강력한 스트리밍 SQL을 향해서
      • 스트림/테이블 선택
      • 시간 연산자
    • 요약

  • 9장. 스트리밍 조인
    • 모든 조인은 스트리밍에 속한다
    • 윈도 없는 조인
      • FULL OUTER
      • LEFT OUTER
      • RIGHT OUTER
      • INNER
      • ANTI
      • SEMI
    • 윈도 조인
      • 고정 윈도
      • 시간 유효성
      • 시간 유효성 조인
    • 요약

  • 10장. 대용량 데이터 처리의 진화
    • 맵리듀스
    • 하둡
    • 플룸
    • 스톰
    • 스파크
    • 밀휠
    • 카프카
    • 클라우드 데이터플로우
    • 플링크
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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