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 파트를 바탕으로 재구성하였습니다.)
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 파일입니다.
다음과 같은 형식을 지니고 있습니다. (공식 페이지 예시에서 일부 발췌했습니다.)
마무리
감이 조금 오시나요?
그래서, 일을 어떻게 시켜야하지? 에 대한 궁금증은 다음 포스팅에서 알려드리겠습니다!
관련글
Airflow Document - Concepts : airflow.apache.org/docs/apache-airflow/stable/concepts.html
'Tech story > Cloud' 카테고리의 다른 글
DNS 네임 서버를 직접 구축해보자! (feat. BIND9) (0) | 2021.09.06 |
---|---|
5분이면 따라하는 kt cloud Open API 활용 팁 (2) | 2021.07.27 |
Cloud에 관한 거의 모든 지식#4 (Cloud와 메타버스) (0) | 2021.06.29 |
KT Cloud를 사용하면 내가 낼 돈은 어떤 기준으로 측정될까? (1) | 2021.06.21 |
효과적으로 일해보고 싶지 않아? 효율적인 협업툴 KT BizWorks (0) | 2021.06.16 |