Apache Airflow 기반의 데이터 파이프라인
Description
Airflow 설치부터 파이프라인 작성, 테스트, 분석, 백필
그리고 배포 및 관리까지를 한 권으로 해결!
이 책은 효과적인 데이터 파이프라인을 만들고 유지하는 방법을 설명하고 있으며, 이를 통해 여러분은 다양한 데이터 소스의 집계, 데이터 레이크와의 연결 및 클라우드 배포를 포함해서 가장 일반적인 사용법을 확인할 수 있습니다. 각 장의 설명과 튜토리얼 형태의 실용적인 가이드를 통해, Airflow를 구동하는 방향성 비순환 그래프(DAG)의 모든 내용과 요구사항에 맞게 파이프라인을 커스터마이징하는 방법을 다룹니다.
이 책은 중급 이상의 파이썬 스킬을 보유한 데브옵스 엔지니어, 데이터 엔지니어, 머신러닝 엔지니어, 그리고 시스템 관리자를 위한 책입니다.

주요 내용
■ Airflow 파이프라인을 DAG로 빌드하고 테스트하여 배포하는 방법
■ 데이터 이동 및 변환을 자동화하는 방법
■ 백필을 사용하여 과거 이력 데이터셋을 분석하는 방법
■ 커스텀 컴포넌트의 개발 방법
■ 운영 환경에서의 Airflow 구성 방법

저자

바스하렌슬락,율리안더라위터르

저자:바스하렌슬락
네덜란드암스테르담에위치한데이터기반솔루션을개발하는GoDataDriven의데이터엔지니어다.소프트웨어공학과컴퓨터과학에대한지식이많은그는소프트웨어개발이나데이터작업을마치어려운퍼즐을푸는것처럼즐겁게한다.오픈소스소프트웨어작업을선호하며,ApacheAirflow프로젝트의기여자이자암스테르담Airflow모임의공동주최자다.

저자:율리안더라위터르
컴퓨터및생명과학을전공하고전산종양생물학박사학위를지닌머신러닝엔지니어다.경험이풍부한소프트웨어개발자이기도한그는클라우드및오픈소스소프트웨어를사용하여프로덕션에유용한머신러닝솔루션을개발하고,데이터과학및데이터엔지니어링세계를연결하는것을즐긴다.여가시간에는자신의파이썬패키지를개발하고오픈소스프로젝트에기여하거나전자제품수선하기를좋아한다.

역자:김정민
분산처리기술을이용한음악과영상서비스의스트리밍솔루션개발자로출발해,20년간대기업과스타트업에서서비스를운영해왔다.또한,클라우드기술등장후에는다양한프로젝트에서클라우드아키텍트,데이터엔지니어,MLOps엔지니어업무를수행했다.현재는프롭테크스타트업에서새로운모험에도전하고있다.

저자:문선홍
25년간다양한분야에서소프트웨어를개발하고서비스를운영했으며,현재는빅데이터플랫폼및AI기반데이터분석업무를진행하고있다.빅데이터기반의데이터분석을위한다양한클라우드기술과오픈소스기술을연구하고있고,데이터사이언티스트로서데이터의관리부터유용한정보분석,AI모델개발및검증,AI분석플랫폼구축까지의업무를다루고있다.

목차

옮긴이머리말xiii
번역서추천사xv
베타리더후기xvii
원서추천사xix
시작하며xx
감사의글xxii
이책에대하여xxiv
표지에대하여xxviii

PARTI기본편
CHAPTER1ApacheAirflow살펴보기3
1.1데이터파이프라인소개4
1.1.1데이터파이프라인그래프4
1.1.2파이프라인그래프실행6
1.1.3그래프파이프라인과절차적스크립트파이프라인비교7
1.1.4워크플로매니저를이용한파이프라인실행9
1.2Airflow소개10
1.2.1파이썬코드로유연한파이프라인정의10
1.2.2파이프라인스케줄링및실행11
1.2.3모니터링과실패처리13
1.2.4점진적로딩및백필16
1.3언제Airflow를사용해야할까16
1.3.1Airflow를선택하는이유17
1.3.2Airflow가적합하지않은경우17
1.4이후내용18
요약19

CHAPTER2AirflowDAG의구조20
2.1다양한소스에서데이터수집21
2.1.1데이터탐색21
2.2첫번째AirflowDAG작성23
2.2.1태스크와오퍼레이터차이점27
2.2.2임의파이썬코드실행27
2.3Airflow에서DAG실행하기30
2.3.1파이썬환경에서Airflow실행30
2.3.2도커컨테이너에서Airflow실행하기31
2.3.3AirflowUI둘러보기32
2.4스케줄간격으로실행하기36
2.5실패한태스크에대한처리37
요약40

CHAPTER3Airflow의스케줄링41
3.1예시:사용자이벤트처리하기41
3.2정기적으로실행하기43
3.2.1스케줄간격정의하기43
3.2.2Cron기반의스케줄간격설정하기45
3.2.3빈도기반의스케줄간격설정하기47
3.3데이터증분처리하기48
3.3.1이벤트데이터증분가져오기48
3.3.2실행날짜를사용하여동적시간참조하기49
3.3.3데이터파티셔닝51
3.4Airflow의실행날짜이해53
3.4.1고정된스케줄간격으로태스크실행53
3.5과거데이터간격을메꾸기위해백필사용하기56
3.5.1과거시점의작업실행하기56
3.6태스크디자인을위한모범사례57
3.6.1원자성57
3.6.2멱등성59
요약60

CHAPTER4Airflow콘텍스트를사용하여태스크템플릿작업하기62
4.1Airflow로처리할데이터검사하기62
4.1.1증분데이터를적재하는방법결정하기63
4.2태스크콘텍스트와Jinja템플릿작업65
4.2.1오퍼레이터의인수템플릿작업65
4.2.2템플릿에무엇이사용가능할까요?67
4.2.3PythonOperator템플릿70
4.2.4PythonOperator에변수제공75
4.2.5템플릿의인수검사하기76
4.3다른시스템과연결하기78
요약86

CHAPTER5태스크간의존성정의하기87
5.1기본의존성유형88
5.1.1선형의존성유형88
5.1.2팬인/팬아웃(Fan-in/Fan-out)의존성89
5.2브랜치하기92
5.2.1태스크내에서브랜치하기92
5.2.2DAG내부에서브랜치하기94
5.3조건부태스크99
5.3.1태스크내에서조건99
5.3.2조건부태스크만들기100
5.3.3내장오퍼레이터사용하기102
5.4트리거규칙에대한추가정보102
5.4.1트리거규칙이란?103
5.4.2실패의영향104
5.4.3기타트리거규칙104
5.5태스크간데이터공유106
5.5.1XCom을사용하여데이터공유하기106
5.5.2XCom사용시고려사항109
5.5.3커스텀XCom백엔드사용하기110
5.6TaskflowAPI로파이썬태스크연결하기111
5.6.1TaskflowAPI로파이썬태스크단순화하기111
5.6.2TaskflowAPI를사용하지않는경우113
요약115

PARTII중급편
CHAPTER6워크플로트리거119
6.1센서를사용한폴링조건120
6.1.1사용자지정조건폴링123
6.1.2원활하지않는흐름의센서처리124
6.2다른DAG를트리거하기127
6.2.1TriggerDagRunOperator로백필작업131
6.2.2다른DAG의상태를폴링하기132
6.3REST/CLI를이용해워크플로시작하기135
요약138

CHAPTER7외부시스템과통신하기139
7.1클라우드서비스에연결하기140
7.1.1추가의존성패키지설치하기141
7.1.2머신러닝모델개발하기142
7.1.3외부시스템을사용하여개발하기147
7.2시스템간데이터이동하기155
7.2.1PostgresToS3Operator구현하기156
7.2.2큰작업을외부에서수행하기160
요약162

CHAPTER8커스텀컴포넌트빌드163
8.1PythonOperator로작업하기164
8.1.1영화평점API시뮬레이션하기164
8.1.2API에서평점데이터가져오기167
8.1.3실제DAG구축하기170
8.2커스텀훅빌드하기173
8.2.1커스텀훅설계하기173
8.2.2MovielensHook로DAG빌드하기179
8.3커스텀오퍼레이터빌드하기181
8.3.1커스텀오퍼레이터정의하기182
8.3.2평점데이터를가져오기위한오퍼레이터빌드하기183
8.4커스텀센서빌드하기187
8.5컴포넌트패키징하기190
8.5.1파이썬패키지부트스트랩작업하기191
8.5.2패키지설치하기194
요약195

CHAPTER9테스트하기197
9.1테스트시작하기198
9.1.1모든DAG에대한무결성테스트198
9.1.2CI/CD파이프라인설정하기205
9.1.3단위테스트작성하기207
9.1.4Pytest프로젝트구성하기209
9.1.5디스크의파일로테스트하기214
9.2테스트에서DAG및태스크콘텍스트로작업하기216
9.2.1외부시스템작업222
9.3개발을위해테스트사용하기229
9.3.1DAG완료테스트하기232
9.4Whirl을이용한프로덕션환경에뮬레이션233
9.5DTAP환경생성하기233
요약234

CHAPTER10컨테이너에서태스크실행하기235
10.1다양한오퍼레이터를쓸때고려해야할점235
10.1.1오퍼레이터인터페이스및구현하기236
10.1.2복잡하며종속성이충돌하는환경236
10.1.3제네릭오퍼레이터지향하기237
10.2컨테이너소개하기238
10.2.1컨테이너란무엇인가?238
10.2.2첫도커컨테이너실행하기239
10.2.3도커이미지생성하기240
10.2.4볼륨을사용하여데이터를유지하기243
10.3컨테이너와Airflow245
10.3.1컨테이너내의태스크245
10.3.2왜컨테이너를사용하는가?246
10.4도커에서태스크실행하기247
10.4.1DockerOperator소개247
10.4.2태스크를위한컨테이너이미지생성하기249
10.4.3도커태스크로DAG구성하기252
10.4.4도커기반의워크플로255
10.5쿠버네티스에서태스크실행256
10.5.1쿠버네티스소개257
10.5.2쿠버네티스설정하기258
10.5.3KubernetesPodOperator사용하기261
10.5.4쿠버네티스관련문제진단하기265
10.5.5도커기반워크플로와차이점267
요약268

PARTIIIAirflow실습
CHAPTER11모범사례271
11.1깔끔한DAG작성271
11.1.1스타일가이드사용272
11.1.2중앙에서자격증명관리276
11.1.3구성세부정보를일관성있게지정하기278
11.1.4DAG구성시연산부분배제280
11.1.5Factory함수를사용한공통패턴생성283
11.1.6태스크그룹을사용하여관련된태스크들의그룹만들기286
11.1.7대규모수정을위한새로운DAG생성288
11.2재현가능한태스크설계288
11.2.1태스크는항상멱등성을가져야합니다289
11.2.2태스크결과는결정적이어야합니다289
11.2.3함수형패러다임을사용하여태스크설계합니다290
11.3효율적인데이터처리291
11.3.1데이터의처리량제한하기291
11.3.2증분적재및처리292
11.3.3중간단계데이터캐싱293
11.3.4로컬파일시스템에데이터저장방지294
11.3.5외부/소스시스템으로작업을이전하기295
11.4자원관리295
11.4.1Pool을이용한동시성관리하기295
11.4.2SLA및경고를사용하여장기실행작업탐지297
요약298

CHAPTER12운영환경에서Airflow관리300
12.1Airflow아키텍처301
12.1.1어떤익스큐터가적합한가?302
12.1.2Airflow를위한메타스토어설정304
12.1.3스케줄러자세히살펴보기306
12.2익스큐터설치311
12.2.1SequentialExecutor설정312
12.2.2LocalExecutor설정312
12.2.3CeleryExecutor설정313
12.2.4KubernetesExecutor설정317
12.3모든Airflow프로세스의로그확인324
12.3.1웹서버로그저장325
12.3.2스케줄러로그저장326
12.3.3태스크로그저장327
12.3.4원격저장소로로그보내기328
12.4Airflow메트릭시각화및모니터링328
12.4.1Airflow로부터메트릭수집하기329
12.4.2측정항목을전송하도록Airflow구성331
12.4.3메트릭을수집하도록Prometheus구성331
12.4.4Grafana를이용한대시보드생성334
12.4.5무엇을모니터링해야하는가?336
12.5실패한태스크에대한알림을받는방법338
12.5.1DAG및오퍼레이터에서경고338
12.5.2서비스수준계약정의341
12.6확장성및성능342
12.6.1실행중인태스크의최대수제어343
12.6.2시

출판사 서평

○책속으로

이책은데이터파이프라인을처리하기위한배치태스크에중심을둔ApacheAirflow에초점을맞추고있습니다.Airflow의주요기능은유연한파이썬프레임워크를사용해쉽게데이터파이프라인을구축할수있게해주며,최신기술환경에서접하게되는서로다른기술들을연결할수있는다양한빌딩블록을제공하는것입니다._3쪽

Airflow는파이썬스크립트로DAG의구조를설명하고구성합니다(DAG파일안에파이썬코드를사용하여DAG를정의함).따라서일반적으로각DAG파일은주어진DAG에대한태스크집합과태스크간의의존성을기술하고,Airflow는DAG구조를식별하기위해코드를파싱(parsing)합니다(표지뒷날개그림참고)._10쪽

Airflow를사용하면임의의시작날짜로부터스케줄간격을정의할수있으므로과거의시작날짜부터과거간격을정의할수도있습니다.이속성을사용하여과거데이터세트를로드하거나분석하기위해DAG의과거기록을실행할수있습니다.이프로세스를일반적으로백필(backfilling)이라고합니다._56쪽

모든오퍼레이터인수가템플릿이될수있는것은아닙니다.모든오퍼레이터는템플릿으로만들수있는속성의허용리스트를유지합니다.기본적으로{{name}}문자열은Jinja에서템플릿가능한속성리스트에포함되지않으면{{name}}그대로문자열로해석됩니다.이리스트는모든오퍼레이터의template_fields속성에의해설정됩니다._67쪽

트리거규칙은태스크의의존성기능(=DAG안에서선행태스크조건)과같이Airflow가태스크가실행준비가되어있는지여부를결정하기위한필수적인조건입니다.Airflow의기본트리거규칙은all_success이며,태스크를실행하려면모든의존적인태스크가모두성공적으로완료되어야함을의미합니다._103쪽

태스크는결정적(deterministic)일때만재현할수있습니다.즉,태스크는주어진입력에대해항상동일한출력을반환해야합니다.대조적으로,비결정적(nondeterministic)태스크는동일한입력데이터에대해서도실행할때마다다른결과를제공할수있으므로재현가능한DAG를구현할수없습니다._289쪽

○추천사
JonathanWoods(LexisNexis)
“Airflow에관한한,지금까지의자료중최고입니다.”

RambabuPosa(SaiAAshikaconsultancy)
“Airflow의바이블입니다.초보자에서부터전문가까지모든사용자에게매우유용합니다.”

DanielLamblin(Coupang)
“책을읽고따라하다보면,데이터파이프라인의오케스트레이션작업에서Airflow가지닌장점을쉽게파악할수있습니다.”

ThorstenWeber(bbvSoftwareServicesAG)
“ApacheAirflow를사용하여워크플로를생성,작성,스케줄,그리고모니터링할때이책한권만참고하면됩니다.의심의여지없이추천합니다.”