Kubernetes를 이용한 효율적인 데이터 엔지니어링(Airflow on Kubernetes VS Airflow Kubernetes Executor) 영상을 본 후, 정리한 글 입니다.
근래에 데이터 관련 직군에서 엔지니어링 업무쪽에 전문적으로 ownership을 갖는 데이터 엔지니어라는 세부적인 직무가 생겨나고 있습니다
데이터의 ETL(Extract, Transform, Load)가 중요해지는 만큼 해당 직무는 데이터를 다루고 data driven하게 업무를 하는 회사에서는 Data Engineering은 간과해서는 안 될 중요한 부분입니다.
실제 서비스를 제공하는 IT 회사에서는 앱 또는 웹으로 사용자에게 서비스를 제공하면서 로그 데이터, 트렌젝션 데이터, 서비스 데이터 등 다양한 데이터가 생성되게 됩니다.
이러한 데이터를 수집해서 데이터 저장소(RDB, Storage 등)에 저장하게 됩니다. 이러한 데이터를 바탕으로 데이터 웨어하우스, 데이터 레이크를 만들고 이를 새로운 형태로 변환하고 분석하고 EDA되는 과정, 다른 플랫폼과의 데이터 전송 등의 모든 업무가 데이터 엔지니어링 입니다. 회사에 따라서 데이터 엔지니어링과 데이터 분석(DA)을 세분화하여 나눌 수 있고, 이를 하나의 DE팀이 담당하여 하는 경우도 있습니다.
이런 과정 속에서 ETL, 리소스, 네트워크 및 인프라 관리, 새로운 데이터 플랫폼 개발, SQL 스킬 및 쿼리 튜닝, MLOps 등 다양한 도메인 지식이 필요하고 이를 전반적으로 공부하기 때문에 개인적으로 백엔드 개발과 데이터 양쪽에 걸쳐있는 직무라고 생각합니다.
이러한 데이터들이 새로운 비즈니스 모델을 제시하거나 의사결정 등을 할때 중요한 지표의 역할이 될 수 있고, 이러한 데이터들을 활용하여 ML, DL, AI의 학습 데이터, 모델링에 활용할 수 있습니다.
데이터 엔지니어가 하는 일에 대해 자세한 내용을 원하시면,
아래 카일님이 잘 정리를 해 주신 영상을 보시면 도움이 됩니다.
https://www.youtube.com/watch?v=1Viu7Ce632s
데이터 엔지니어링을 조금 쉽게 할 수 있도록 도와주는 도구가 바로 Airflow
입니다.
워크플로우를 코드로 작성할 수 있고 스케줄링하고 모니터링 하는 플랫폼 입니다.
DAG
Task
출처 : https://engineering.linecorp.com/ko/blog/data-engineering-with-airflow-k8s-1
Web Server
Scheduler
Executor
Worker
출처 : https://airflow.apache.org/docs/apache-airflow/stable/executor/index.html
Executor는 Task 인스턴스를 실행하는 주체입니다. 종류에 따라, Airflow가 다르게 동작을 합니다.
Airflow Executor에는 Base Executor의 부모 클래스를 상속 받는 여러 Executor가 있습니다.
현업에서 가장 많이 사용되는 것은 Local Executor
와 Celery Executor
입니다.
LocalExecutor는 airflow.cfg 에 있는 parallelism factor의 값의 여부에 따라 두 가지로 나눠지게 됩니다.
고가용성에 문제가 있어서 beta 환경이나 dev 환경에서 사용합니다.
내부적으로 queue를 가지고 있는것은 동일
출처 : https://engineering.linecorp.com/ko/blog/data-engineering-with-airflow-k8s-1/
일반적인 Airflow on Kubernetes를 통해 로컬 클러스터를 구성한다면,
장점
단점
이러한 단점을 극복하기 위해 KubernetesExecuter를 사용
일반적인 Operator
K8sPodOperator
일반적으로 쿠버네티스의 경우는 DevOps나 백엔드에서 마이크로서비스 아키텍쳐를 구성할 때 많이 사용합니다.
하지만 데이터 엔지니어링에서도 쿠버네티스는 스케줄러, 태스크의 리소스 관리, 오퍼레이션을 유용하고 쉽게 할 수 있습니다.
Kubernetes + Helm Chart + Github Action + ArgoCD
를 통해 쉽게 k8s CI/CD를 구축하고 관리/운영할 수 있습니다.