Tech story/Cloud

(워크플로우관리도구) Airflow 튜토리얼 #1 - Overview

KT Cloud Crew 2021. 7. 20. 10:35

 

 

Airflow란?

 

Airflow는 Airbnb에서 개발한 워크플로우 관리 오픈소스 툴입니다.

 

 

아마도, 직장인 분들은 공감하실텐데요.

메일 보내놓고, 답장 기다리면서 느긋하게 현생을 즐길 수 있다면 좋겠지만 ㅠㅠ

다음 주 보고 자료도 수정해야하고, 옆팀에서 들어온 요청도 해결해야 하고 처음에 기다리던 메일은 또 제때 안 옵니다. 한 번 더 리마인드 메일도 보내고요 등등등....

 

 

Airbnb 서버도 이런 문제가 있었나 봅니다.....ㅠㅠ

에어플로우는 바로 (우리보다 조금 더 바쁠 것 같은) 서버를 위해 사용됩니다.

 

데이터 받아오기까지 가만히 있지 말고 사용자 요청도 처리하고..

한 마디로 서버를 조금 더 열심히 굴리기 위한 툴인거죠.

 

 

장점

 

1. 파이썬으로 DAG 작성

파이썬 채택 👍🏼

에어플로우의 특징이자 장점 중 하나는, 바로 파이썬으로 워크플로우를 설정할 수 있다는 사실입니다!

(적어도) 개발자들에게는 엄청나게 편하게 사용할 수 있는 툴이겠죠?

파이썬 라이브러리도 마음대로 쓸 수 있고 말입니다.

 

여기에 더해서 최근 업데이트된 Airflow 2.0 이상부터는 Context Manager나 Decorator 등,

개발자에게 친숙한 문법을 사용해 DAG를 작성할 수 있게 되었습니다.

 

그동안 다른 툴들은 xml 기반이었어서 쓸 데 없이 길어지고 보기에도 복잡했거든요.

 

여기서 잠깐. DAG란 무엇일까요?

DAG: Directed Acyclic Graph의 약자로 비순환 방향 그래프를 의미합니다. 그래프 구조에 기반한 데이터 탐색 알고리즘이라고 보시면 되고요.주로 작업(TASK)의 우선순위/순서를 표현하기 위한 용도로 사용되고 있습니다. 

2. 딱 한 파일로 끝낼 수 있어요

기존의 Oozie나 Azkaban의 경우 한 개 이상의 파일로 DAG를 작성해 왔는데요,

그에 비해 Airflow에서는 딱 한 개의 .py 파일로 워크플로우 작성이 가능하답니다.

 

 

Airflow 개념 알아보기

 

Airflow 는 이렇게 장점이 확실한 만큼이나 다양한 컴포넌트로 구성되어있고,

용어도 그게 그거 같아서 초반에 한 눈에 파악하는 것이 어려웠어요.

 

다행히 공식 다큐먼트 페이지가 잘 구성되어 있으니 부족한 부분은 참고하시면 됩니다!

 

 

 

(본문 내용은 공식 Document 내 Concept 파트를 바탕으로 재구성하였습니다.)

간단한(?) Airflow 구성 모식도

 

 

 

1.  Metadata DB

 

작업 및 파이프라인의 메타데이터 저장소.

예를 들어 task status(queued, scheduled, running, success, failed, etc) 가 저장됩니다.

Airflow를 처음 다운로드하면 기본적으로 빠른 시작을 위해 SQLite 가 설치되는데,

본격적으로 사용하기 위해선 mysql이나 postgres를 연결해야 합니다.

 

 

 

2.  Web server

 

깔끔한 UI 또한 airflow의 특장점 중 하나.

UI뿐만 아니라 실행 중인 작업을 한 눈에 볼 수 있는 다양한 View 기능도 제공합니다.

다만 새로 작성한 작업을 업로드하는 업데이트 기능은 따로 없다는 점이 조금 불편합니다.

 

기본 뷰 구성
트리 뷰
그래프 뷰

 

 

3.  Scheduler

 

Airflow 구성요소의 핵심. 일 다했어? 그럼 이거 시작해! 하는 역할이에요.

모든 작업과 DAG을 모니터링하다가 Metadatabase 내 모든 작업의 status를 모니터링합니다.

특정 작업의 dependency가 만족되면 이를 실행시킬 뿐만 아니라, 이런 모든 작업의 실행 순서 또한 결정합니다.

 

  Executor - 스케쥴러와 함께 동작하는 구성요소입니다. status가 queued인 태스크를 확인하며 실제 어떤 리소스가 투입되어 실행이 될 것인지를 결정합니다. 흔히 쓰이는 것으로는 Local Executor, Celery Executor, Kubernetes Executor 등이 있습니다.

 

 

 

4.  Worker

 

실제 태스크를 수행하는 구성요소입니다.

필요에 따라 Scale-out 되어 병렬 작업이나 동시에 여러 태스크를 진행할 수도 있습니다.

Executor 및 airflow.cfg 에 의해 작업 환경 구성이 완성됩니다.

 

 

 

5.  Airflowg.cfg

 

전반적인 airflow configuration을 담당하는 파일입니다.

대표적으로는 DAG 파일들을 어느 위치에 놓을 건지, log는 어디 저장할 건지 등등부터해서 엄청 다양한 설정을 할 수 있습니다.

 

 

6.  DAGs

 

‘이런 일을 해 줘’ 하고 컴퓨터에 내리는 명령 모음 python 파일입니다.

다음과 같은 형식을 지니고 있습니다. (공식 페이지 예시에서 일부 발췌했습니다.)

 

 

마무리

 

감이 조금 오시나요?

그래서, 일을 어떻게 시켜야하지? 에 대한 궁금증은 다음 포스팅에서 알려드리겠습니다!

 

 

관련글