이미 소장하고 있다면 판매해 보세요.
|
옮긴이 머리말 xiii
번역서 추천사 xv 베타리더 후기 xvii 원서 추천사 xix 시작하며 xx 감사의 글 xxii 이 책에 대하여 xxiv 표지에 대하여 xxviii PART I 기본편 CHAPTER 1 Apache Airflow 살펴보기 3 1.1 데이터 파이프라인 소개 4 1.1.1 데이터 파이프라인 그래프 4 1.1.2 파이프라인 그래프 실행 6 1.1.3 그래프 파이프라인과 절차적 스크립트 파이프라인 비교 7 1.1.4 워크플로 매니저를 이용한 파이프라인 실행 9 1.2 Airflow 소개 10 1.2.1 파이썬 코드로 유연한 파이프라인 정의 10 1.2.2 파이프라인 스케줄링 및 실행 11 1.2.3 모니터링과 실패 처리 13 1.2.4 점진적 로딩 및 백필 16 1.3 언제 Airflow를 사용해야 할까 16 1.3.1 Airflow를 선택하는 이유 17 1.3.2 Airflow가 적합하지 않은 경우 17 1.4 이후 내용 18 요약 19 CHAPTER 2 Airflow DAG의 구조 20 2.1 다양한 소스에서 데이터 수집 21 2.1.1 데이터 탐색 21 2.2 첫 번째 Airflow DAG 작성 23 2.2.1 태스크와 오퍼레이터 차이점 27 2.2.2 임의 파이썬 코드 실행 27 2.3 Airflow에서 DAG 실행하기 30 2.3.1 파이썬 환경에서 Airflow 실행 30 2.3.2 도커 컨테이너에서 Airflow 실행하기 31 2.3.3 Airflow UI 둘러보기 32 2.4 스케줄 간격으로 실행하기 36 2.5 실패한 태스크에 대한 처리 37 요약 40 CHAPTER 3 Airflow의 스케줄링 41 3.1 예시: 사용자 이벤트 처리하기 41 3.2 정기적으로 실행하기 43 3.2.1 스케줄 간격 정의하기 43 3.2.2 Cron 기반의 스케줄 간격 설정하기 45 3.2.3 빈도 기반의 스케줄 간격 설정하기 47 3.3 데이터 증분 처리하기 48 3.3.1 이벤트 데이터 증분 가져오기 48 3.3.2 실행 날짜를 사용하여 동적 시간 참조하기 49 3.3.3 데이터 파티셔닝 51 3.4 Airflow의 실행 날짜 이해 53 3.4.1 고정된 스케줄 간격으로 태스크 실행 53 3.5 과거 데이터 간격을 메꾸기 위해 백필 사용하기 56 3.5.1 과거 시점의 작업 실행하기 56 3.6 태스크 디자인을 위한 모범 사례 57 3.6.1 원자성 57 3.6.2 멱등성 59 요약 60 CHAPTER 4 Airflow 콘텍스트를 사용하여 태스크 템플릿 작업하기 62 4.1 Airflow로 처리할 데이터 검사하기 62 4.1.1 증분 데이터를 적재하는 방법 결정하기 63 4.2 태스크 콘텍스트와 Jinja 템플릿 작업 65 4.2.1 오퍼레이터의 인수 템플릿 작업 65 4.2.2 템플릿에 무엇이 사용 가능할까요? 67 4.2.3 PythonOperator 템플릿 70 4.2.4 PythonOperator에 변수 제공 75 4.2.5 템플릿의 인수 검사하기 76 4.3 다른 시스템과 연결하기 78 요약 86 CHAPTER 5 태스크 간 의존성 정의하기 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.2 DAG 내부에서 브랜치하기 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.1 XCom을 사용하여 데이터 공유하기 106 5.5.2 XCom 사용 시 고려사항 109 5.5.3 커스텀 XCom 백엔드 사용하기 110 5.6 Taskflow API로 파이썬 태스크 연결하기 111 5.6.1 Taskflow API로 파이썬 태스크 단순화하기 111 5.6.2 Taskflow API를 사용하지 않는 경우 113 요약 115 PART II 중급편 CHAPTER 6 워크플로 트리거 119 6.1 센서를 사용한 폴링 조건 120 6.1.1 사용자 지정 조건 폴링 123 6.1.2 원활하지 않는 흐름의 센서 처리 124 6.2 다른 DAG를 트리거하기 127 6.2.1 TriggerDagRunOperator로 백필 작업 131 6.2.2 다른 DAG의 상태를 폴링하기 132 6.3 REST/CLI를 이용해 워크플로 시작하기 135 요약 138 CHAPTER 7 외부 시스템과 통신하기 139 7.1 클라우드 서비스에 연결하기 140 7.1.1 추가 의존성 패키지 설치하기 141 7.1.2 머신러닝 모델 개발하기 142 7.1.3 외부 시스템을 사용하여 개발하기 147 7.2 시스템 간 데이터 이동하기 155 7.2.1 PostgresToS3Operator 구현하기 156 7.2.2 큰 작업을 외부에서 수행하기 160 요약 162 CHAPTER 8 커스텀 컴포넌트 빌드 163 8.1 PythonOperator로 작업하기 164 8.1.1 영화 평점 API 시뮬레이션하기 164 8.1.2 API에서 평점 데이터 가져오기 167 8.1.3 실제 DAG 구축하기 170 8.2 커스텀 훅 빌드하기 173 8.2.1 커스텀 훅 설계하기 173 8.2.2 MovielensHook로 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 CHAPTER 9 테스트하기 197 9.1 테스트 시작하기 198 9.1.1 모든 DAG에 대한 무결성 테스트 198 9.1.2 CI/CD 파이프라인 설정하기 205 9.1.3 단위 테스트 작성하기 207 9.1.4 Pytest 프로젝트 구성하기 209 9.1.5 디스크의 파일로 테스트하기 214 9.2 테스트에서 DAG 및 태스크 콘텍스트로 작업하기 216 9.2.1 외부 시스템 작업 222 9.3 개발을 위해 테스트 사용하기 229 9.3.1 DAG 완료 테스트하기 232 9.4 Whirl을 이용한 프로덕션 환경 에뮬레이션 233 9.5 DTAP 환경 생성하기 233 요약 234 CHAPTER 10 컨테이너에서 태스크 실행하기 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 컨테이너와 Airflow 245 10.3.1 컨테이너 내의 태스크 245 10.3.2 왜 컨테이너를 사용하는가? 246 10.4 도커에서 태스크 실행하기 247 10.4.1 DockerOperator 소개 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.3 KubernetesPodOperator 사용하기 261 10.5.4 쿠버네티스 관련 문제 진단하기 265 10.5.5 도커 기반 워크플로와 차이점 267 요약 268 PART III Airflow 실습 CHAPTER 11 모범 사례 271 11.1 깔끔한 DAG 작성 271 11.1.1 스타일 가이드 사용 272 11.1.2 중앙에서 자격 증명 관리 276 11.1.3 구성 세부 정보를 일관성 있게 지정하기 278 11.1.4 DAG 구성 시 연산 부분 배제 280 11.1.5 Factory 함수를 사용한 공통 패턴 생성 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.1 Pool을 이용한 동시성 관리하기 295 11.4.2 SLA 및 경고를 사용하여 장기 실행 작업 탐지 297 요약 298 CHAPTER 12 운영환경에서 Airflow 관리 300 12.1 Airflow 아키텍처 301 12.1.1 어떤 익스큐터가 적합한가? 302 12.1.2 Airflow를 위한 메타스토어 설정 304 12.1.3 스케줄러 자세히 살펴보기 306 12.2 익스큐터 설치 311 12.2.1 SequentialExecutor 설정 312 12.2.2 LocalExecutor 설정 312 12.2.3 CeleryExecutor 설정 313 12.2.4 KubernetesExecutor 설정 317 12.3 모든 Airflow 프로세스의 로그 확인 324 12.3.1 웹 서버 로그 저장 325 12.3.2 스케줄러 로그 저장 326 12.3.3 태스크 로그 저장 327 12.3.4 원격 저장소로 로그 보내기 328 12.4 Airflow 메트릭 시각화 및 모니터링 328 12.4.1 Airflow로부터 메트릭 수집하기 329 12.4.2 측정 항목을 전송하도록 Airflow 구성 331 12.4.3 메트릭을 수집하도록 Prometheus 구성 331 12.4.4 Grafana를 이용한 대시보드 생성 334 12.4.5 무엇을 모니터링해야 하는가? 336 12.5 실패한 태스크에 대한 알림을 받는 방법 338 12.5.1 DAG 및 오퍼레이터에서 경고 338 12.5.2 서비스 수준 계약 정의 341 12.6 확장성 및 성능 342 12.6.1 실행중인 태스크의 최대 수 제어 343 12.6.2 시스템 성능 구성 344 12.6.3 여러 스케줄러 실행 345 요약 346 CHAPTER 13 Airflow 보안 347 13.1 Airflow 웹 인터페이스에서 보안 348 13.1.1 RBAC 인터페이스에서 사용자 추가 348 13.1.2 RBAC 인터페이스 설정 352 13.2 미사용 데이터 암호화 353 13.2.1 Fernet Key 생성 354 13.3 LDAP 서비스로 연결 355 13.3.1 LDAP의 이해 356 13.3.2 LDAP 서비스에서 사용자 가져오기 358 13.4 웹 서버에 대한 트래픽 암호화 359 13.4.1 HTTPS 이해 360 13.4.2 HTTPS용 인증서 구성 362 13.5 시크릿 관리 시스템에서 자격 증명 가져오기 366 요약 370 CHAPTER 14 프로젝트: 뉴욕에서 가장 빠른 길 찾기 371 14.1 데이터에 대한 이해 374 14.1.1 Yellow Cab 파일 공유 375 14.1.2 Citi Bike REST API 376 14.1.3 접근 계획 결정 377 14.2 데이터 추출 378 14.2.1 Citi Bike 데이터 다운로드하기 378 14.2.2 Yellow Cab 데이터 다운로드 380 14.3 데이터에 유사한 변환 적용 383 14.4 데이터 파이프 라인 구조화 388 14.5 재현 가능한 데이터 파이프 라인 개발 390 요약 392 PART IV 클라우드에서의 Airflow CHAPTER 15 클라우드에서의 Airflow 395 15.1 클라우드 배포 정책 설계 396 15.2 클라우드 전용 오퍼레이터와 훅 397 15.3 관리형 서비스 398 15.3.1 Astronomer.io 399 15.3.2 구글 Cloud Composer 400 15.3.3 아마존 Managed Workflows for Apache Airflow 400 15.4 배포 전략 선택 401 요약 402 CHAPTER 16 AWS에서의 Airflow 404 16.1 AWS에서 Airflow 배포 404 16.1.1 클라우드 서비스 선택 405 16.1.2 네트워크 설계 406 16.1.3 DAG 동기화 추가 407 16.1.4 CeleryExecutor를 사용하여 스케일링 407 16.1.5 추가 단계 409 16.2 AWS 전용 훅과 오퍼레이터 410 16.3 사용 사례: AWS Athena를 사용한 서버리스 영화 랭킹 구축 412 16.3.1 개요 412 16.3.2 리소스 설정 413 16.3.3 DAG 구현 416 16.3.4 리소스 정리 422 요약 422 CHAPTER 17 Azure에서의 Airflow 424 17.1 Azure에서 Airflow 배포 424 17.1.1 서비스 선택 425 17.1.2 네트워크 설계 426 17.1.3 CeleryExecutor를 사용하여 확장성 개선 428 17.1.4 추가 단계 429 17.2 Azure 전용 훅/오퍼레이터 429 17.3 예제: Azure Synapse를 사용하여 서버리스 영화 랭킹 구축 430 17.3.1 개요 430 17.3.2 리소스 구성 431 17.3.3 DAG 구현 435 17.3.4 정리 작업 442 요약 442 CHAPTER 18 GCP에서의 Airflow 443 18.1 GCP에서 Airflow 배포 443 18.1.1 서비스 선택 444 18.1.2 헬름으로 GKE에 배포 447 18.1.3 구글 서비스와 연동하기 449 18.1.4 네트워크 설계 451 18.1.5 CeleryExecutor를 사용한 스케일링 452 18.2 GCP 전용 훅과 오퍼레이터 455 18.3 사용 사례: GCP에서 서버리스 영화 랭킹 구축 460 18.3.1 GCS로 데이터 업로드 461 18.3.2 BigQuery에 데이터 로드하기 463 18.3.3 최고 영화 평점 추출 466 요약 468 APPENDIX A 실행 코드 예제 470 A.1 코드 구성 470 A.2 예제 실행 471 A.2.1 도커 환경 시작하기 471 A.2.2 실행 중인 서비스 검사하기 472 A.2.3 환경 제거 472 APPENDIX B Airflow 1과 2의 패키지 구성 474 B.1 Airflow 1 패키지 구성 474 B.2 Airflow 2 패키지 구성 475 APPENDIX C Prometheus 메트릭 매핑 479 |
Bas Harenslak
Julian de Ruiter
김정민의 다른 상품
문선홍의 다른 상품
|
이 책은 데이터 파이프라인을 처리하기 위한 배치 태스크에 중심을 둔 Apache Airflow에 초점을 맞추고 있습니다. Airflow의 주요 기능은 유연한 파이썬 프레임워크를 사용해 쉽게 데이터 파이프라인을 구축할 수 있게 해 주며, 최신 기술 환경에서 접하게 되는 서로 다른 기술들을 연결할 수 있는 다양한 빌딩 블록을 제공하는 것입니다.
--- p.3 Airflow는 파이썬 스크립트로 DAG의 구조를 설명하고 구성합니다(DAG 파일 안에 파이썬 코드를 사용하여 DAG를 정의함). 따라서 일반적으로 각 DAG 파일은 주어진 DAG에 대한 태스크 집합과 태스크 간의 의존성을 기술하고, Airflow는 DAG 구조를 식별하기 위해 코드를 파싱(parsing)합니다(표지 뒷날개 그림 참고). --- p.10 Airflow를 사용하면 임의의 시작 날짜로부터 스케줄 간격을 정의할 수 있으므로 과거의 시작 날짜부터 과거 간격을 정의할 수도 있습니다. 이 속성을 사용하여 과거 데이터 세트를 로드하거나 분석하기 위해 DAG의 과거 기록을 실행할 수 있습니다. 이 프로세스를 일반적으로 백필(backfilling)이라고 합니다. --- p.56 모든 오퍼레이터 인수가 템플릿이 될 수 있는 것은 아닙니다. 모든 오퍼레이터는 템플릿으로 만들 수 있는 속성의 허용 리스트를 유지합니다. 기본적으로 {{name}} 문자열은 Jinja에서 템플릿 가능한 속성 리스트에 포함되지 않으면 {{name}} 그대로 문자열로 해석됩니다. 이 리스트는 모든 오퍼레이터의 template_fields 속성에 의해 설정됩니다. --- p.67 트리거 규칙은 태스크의 의존성 기능(= DAG 안에서 선행 태스크 조건)과 같이 Airflow가 태스크가 실행 준비가 되어 있는지 여부를 결정하기 위한 필수적인 조건입니다. Airflow의 기본 트리거 규칙은 all_success이며, 태스크를 실행하려면 모든 의존적인 태스크가 모두 성공적으로 완료되어야 함을 의미합니다. --- p.103 태스크는 결정적(deterministic)일 때만 재현할 수 있습니다. 즉, 태스크는 주어진 입력에 대해 항상 동일한 출력을 반환해야 합니다. 대조적으로, 비결정적(nondeterministic) 태스크는 동일한 입력 데이터에 대해서도 실행할 때마다 다른 결과를 제공할 수 있으므로 재현 가능한 DAG를 구현할 수 없습니다. --- p.289 |
|
주요 내용
■ Airflow 파이프라인을 DAG로 빌드하고 테스트하여 배포하는 방법 ■ 데이터 이동 및 변환을 자동화하는 방법 ■ 백필을 사용하여 과거 이력 데이터셋을 분석하는 방법 ■ 커스텀 컴포넌트의 개발 방법 ■ 운영 환경에서의 Airflow 구성 방법 |
|
“Airflow에 관한 한, 지금까지의 자료 중 최고입니다.” - Jonathan Woods (LexisNexis)
|
|
“Airflow의 바이블입니다. 초보자에서부터 전문가까지 모든 사용자에게 매우 유용합니다.” - Rambabu Posa (Sai AAshika consultancy)
|
|
“책을 읽고 따라하다 보면, 데이터 파이프라인의 오케스트레이션 작업에서 Airflow가 지닌 장점을 쉽게 파악할 수 있습니다.” - Daniel Lamblin (Coupang)
|
|
“Apache Airflow를 사용하여 워크플로를 생성, 작성, 스케줄, 그리고 모니터링할 때 이 책 한 권만 참고하면 됩니다. 의심의 여지 없이 추천합니다.” - Thorsten Weber (bbv Software Services AG)
|
|
요즘 애플리케이션 및 머신러닝 모델 개발에 빠른 개발 속도와 애자일 문화를 적용하면서 엔지 니어가 다루어야 하는 플랫폼의 크기와 복잡도가 엄청나게 증가하고 있습니다. 복잡한 플랫폼 에서 하나의 작업 실패는 관련된 여러 작업의 실패로 이어져서 생산성을 크게 해치는 결과를 낳게 됩니다. 이러한 복잡한 워크플로의 개선 및 확장과 모니터링은 물론, 개발도 편리하게 도 와주는 도구가 바로 Apache Airflow 입니다. 사실 Apache Airflow 가 워크플로 관리 엔진의 탑 티어라고 하지만, 최근까지 관련 서적이 거의 없어 기술 블로그나 웹사이트를 검색해야 했습니 다. 그러던 중 원서로 출간된 이 책을 보면서 누군가 번역을 해주면 정말 도움이 될 것 같다고 생각했는데, 국내 최초로 Apache Airflow 관련 도서가 나오게 되어 기쁩니다. - 박혜영 (AWS 솔루션즈 아키텍트)
|
|
이 책은 Apache Airflow 의 개념과 적용 방법에 대한 설명뿐만 아니라, 실제 서비스 운영 시 고려해야 할 모니터링, 확장, 보안 등에 관한 내용을 상세하게 안내하고 있으며, 다양한 클라 우드 환경에서 활용하는 방법까지 다루고 있습니다. 아직 세부적인 설명과 정확한 가이드 문 서가 없어 도입을 망설이고 있다면, 이 책을 통해 Apache Airflow 의 세계로 지금 바로 도전해 보실 것을 추천합니다. - 신동민 (NHN 두레이 CTO)
|