프로그래머스 데이터 엔지니어링 컨퍼런스 | 쏘카 데이터 엔지니어가 말하는 Airflow 고도화
01. 쏘카에서 사용하는 Airflow
쿠버네티스가 기본환경
단순히 스케줄링의 목적은 지양하고 외부에서 Bigquery 적재하는 것이 주목적
운영환경 / 개발환경 나눠서 운영
02. 전체 개발 환경 개선하기
- 로컬 개발 환경 구축
Branch 기반의 k8s 개발 환경 -> Docker Compose 기반의 로컬 노트북 환경
GCP Service Account를 통합 인증 수단으로 활용하기
Dag 파싱 효율화를 위해 .airflowignore 활용(700개 이상의 Dag 운영중)
- 로컬 개발 환경 임팩트
Airflow 서버를 띄우는 시간 단축
개발 피드백 루프 시간 단축
개발 클러스터에서 유휴 Airflow들이 노드를 점유하였던 문제 해결 : 3개 이상의 VM 절약
docker라는 표준 환경을 통ㅎ Airflow 서버의 불안전성을 낮추고 관리 비용을 줄임
- 테스트 환경 구축
Dag 기본 문법(DagBag 활용), Dag Convention 등 Dag 검증 테스트 작성 (pytest)
pre commit을 활용해 기본
github action을 통해 코드 컨벤션, 테스트 실행, 운영 환경 요구사항 검증 등의 작업을 수행 (On Pull Request)
03. Airflow 스케일 업하기
Airflow는 데이터 파이프라인의 오케스트레이션 툴인만큼 SPOF가 되기도 합니다.
만약 Airflow가 모종의 이유로 중단될 경우 Data Freshness를 유지하기가 어려워집니다.
따라서 Airflow는 항상 신뢰성과 확장성을 중요하게 고려해서 운영해야 합니다.
- Airflow 2 마이그레이션
- Schefuler HA 설정
- Kubernetes 환경 개선
- Clean up Dag 스케줄링
04. 모니터링 고도화
- Dag 스케줄링, 런타임 오류 등의 1차적 책임은 Dag 사용자(개발자)가 질 수 있도록 합니다
- 운영 중인 Airflow 이슈 중 일부는 k8s에 기인하는 경우들이 있습니다.
따라서 관리자는 airflow의 인프라 환경에 대해 모니터링할 수 있어야 합니다.
또한 Dag에 대한 통계 정보(시계열 메트릭, 실패 추이 등)를 보고 거시적으로 대응할 수 있도록 합니다.
05. 보안 및 RBAC 적용
- 외부 자원에 많이 의존하게 되는 Airflow의 특성상 코드에 많은 보안 정보들이 포함됩니다.
Airflow의 보안 정보들은 코드 상에 노출되는 것보다 Secret 저장소를 활용하도록 하여 보안성을 높일 수 있도록 합니다. : GCP Secret Manager 적용
- 다수의 사용자가 시스템을 사용할수록 적절한 권한을 부여하는 것이 중요합니다. 따라서 개인 사용자별 인증을 할 수 있도록 계정을 제공하고, 인가를 더 체계적으로 관리하기 위해 RBAC을 적용합니다. auth backend 설정으로 외부 인증 프레임워크인 KeyCloak 적용
느낀 점
컨퍼런스 내용을 온전히 이해하기에는 부족함이 있다는 걸 느꼈다.
나는 아직 Dag로 함수 호출해서 그래프 만든 후 직렬, 병렬..
이정도의 수준만 알고 있었는데 공부할 부분이 아직 무궁무진 하다는 것을 깨달았다.
지금 교육이 끝나고 채용이 활발하지 않아 고민이 많은데
CS 개념이나 Data 관련된 기술들의 이해를 높여
나의 지식의 밀도를 높이는 시간을 가지면 좋을 것 같다.
'후기.zip' 카테고리의 다른 글
AWS Summit Seoul 2023 다녀와서... (0) | 2023.05.07 |
---|---|
[CATCH] 2023 캐치 리포트 강연을 듣고... (1) | 2022.12.20 |
[프로그래머스] 회사와 커뮤니티에서, 주니어 ML 엔지니어로 살아남기를 듣고.. (0) | 2022.11.26 |
멀티캠퍼스 '데이터 분석&엔지니어 취업캠프' 솔직 수강 후기 (3) | 2022.11.24 |
[CATCH] 신입개발자 취업로드맵 강연을 듣고.. (0) | 2022.11.21 |