Data Orchestration Airflow?
๋ฐ์ดํฐ ์ข ์ฌ์๋ผ๋ฉด Data Orchestration(๋ฐฐ์น ํด)์ ๋ํด ํ ๋ฒ์ฏค ๋ค์ด๋ดค์ ๊ฒ์ด๋ค. ๊ทธ์ค Airflow๊ฐ ๊ฐ์ฅ ๋์ค์ ์ด๊ณ ์ธ๊ธฐ๊ฐ ์์ง๋ง ์ด Dag system์ ์ฒ์ ์ตํ๊ธฐ๋ ์๋นํ ์์ํ๊ณ ๋ค๋ฃจ๊ธฐ ์ด๋ ค์ธ ๊ฒ์ด๋ค. execute date, start date, clear ๋ฑ ๋ฑ ๋ฐฐ์นํ๋ ํ ์ค์ํ task๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์น๊ฐ ์์คํ ์ ์ ์ดํดํ์ง ๋ชปํ๋ฉด ์คํ ์๊ฐ์ด ๋ฌ๋ผ์ง ์ ์๊ณ ๋ถํ์ํ ๊ธฐ๋ฅ์ผ๋ก ์คํจํ task๊ฐ ์คํจ ์์ ์์ ์ง๊ธ ์๊ฐ๊น์ง ์ฌ์์์ด ๋๋ ๋ถ์์ฌ ๋ํ ์ผ์ด๋ ์๋ ์๋ค. (ex) catch_up)
Airflow์ UI๋ฅผ ๋ณผ ๋ ํนํด์ ๋ง์ด๋ค ์ ํํ๊ณ ํํํ๋ ํฌ์ธํธ๊ฐ ์ฌ๋ฟ ์๋ค.
์ฒซ ๋ฒ์งธ. Airflow์ ํจํค์ง ๊ด์ (build ์). Airflow์ package dependencies๋ ๋ฒ์ ์๋ง ์๋ ๊ฒ ์๋๋ค. ๊ฐ๊ฐ์ provider๋ ๊ณต์์ ์ผ๋ก airflow์์ ๋ค๋ฅธ db connection๊ณผ ํธ๋ฆฌํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋ฏ๋ก ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ฒ์ ๊ณผ ๋ค๋ฅผ ๊ฒฝ์ฐ ๊ฐ์ ๋ก package(ex, pendulum < 3.0) ๋ฒ์ ์ ๋ฎ์ถฐ ๋น๋ํด์ผ ํ๋ค. ์ด๋ด ๊ฒฝ์ฐ provider์์ ๋ณด์ฅํ๋ ํจํค์ง ์ข ์์ฑ์ด ๊นจ์ง๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์๋ฅผ ๋ค๋ฉด ๋ฎ์ els๋ฅผ ์ฌ์ฉํ๋ ์ ์ ๋ผ๋ฉด Opensearch(<2), elasticsearch(<7.1) ์ผ ๋ package ๋ฒ์ ์ด (opensearch-py <= 1.3.7, elasticsearch<=7.13.1) ์ข ์์ฑ์ด ์๊ธด๋ค. ์ด๋ ๋์ ๋ฒ์ ์ airflow(>= 2.5)๋ฅผ ์ค์นํ๋ ค๊ณ ํ๋ค๋ฉด Error๊ฐ ๋ฐ์ํ๋ค. apache-airflow-providers-elasticsearch ๊ธฐ๋ณธ ๋ด์ฅ elasticsearch(>8, <9) ๋ฒ์ ์ ์ค์นํ๋ค. ๋ฎ์ ๋ฒ์ ์ ๊ณ์ ์ฌ์ฉํ๋ค. ๋ฒ๊ทธ๋ฅผ ๊ณ ์น๊ธฐ ์ํด airflow๋ฅผ upgrade๋ฅผ ํด์ผ ํ๋ค๋ฉด ๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ ๋๋ค.
๋ ๋ฒ์งธ. Airflow workflow ๋ฒ์ ๊ด๋ฆฌ. workflow์ ๋ฒ์ ์ด ์ถ์ ๋์ง ์์ ์ฝ๋ ๋ณ๊ฒฝ๋ ์ด๋ ฅ์ ์ ์ ์๋ค. airflow๋ Airbnb์ ์์ฝ๊ด๋ฆฌ scheduler๋ก Dag ๊ฐ๋ ์์ฒด๊ฐ calendar๊ฐ ์๋ execute, interval, start์ ์๊ธฐ ๋๋ฌธ์ ์คํ ํ์ ์ ๋๋ง ์ถ์ ์ด ๊ฐ๋ฅํ๋ค. ๋ฐ์ดํฐ ๋ถ์๊ฐ ๊ด์ ์์ ๋ณด๋ฉด code๋ฅผ ๋ง์๊ป ์์ ํ๊ณ ์ฆ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ด ์ข์ง๋ง ๊ฐ๋ฐ์ ์ ์ฅ์์ ๋ณด์์ ๋ ์ด๋ ๋ฌธํ ์ถฉ๊ฒฉ์ ๊ฐ๊น๋ค. ์ด ๋์์ผ๋ก git-sync๋ฅผ ์ด์ฉํด code CD๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง ์ข์ ๋์์ ์๋๋ค.
์ธ ๋ฒ์งธ. ๋์ ํ์ต ๊ณก์ . Airflow๋ฅผ ์ฒ์ ์์ํ๋ฉด ๋ง์ Operator์ ๋ํด ๋ฐ๊ฐ๊ฒ ๋๊ปด์ง ๊ฒ์ด๋ค. ๊ทธ๊ฒ๋ ์ ์ 99% ์ํ๋ ๋ฐฉํฅ์ผ๋ก ์๋๋์ง ์๋๋ค. Python์ Dacorator๋ฅผ ๋จ๋ฐํ ํจ์๋ค์ด ๋๋ฅผ ๋ฐฉํดํ๊ณ ์์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ์์ด๋ฌ๋ํ๊ฒ Airflow์ ๊ธฐ๋ฅ์ ์ต์๋ก ์ฌ์ฉํ๋ ๊ฒ์ด Airflow๋ฅผ ๊ฐ์ฅ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ ์๋ฌธ์ด ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ค Orchestra๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น?
Orchestration ์ข ๋ฅ
![](https://blog.kakaocdn.net/dn/cYHoqx/btsISOC5gVz/zVRJpPz1GrmWGk4wths0Ak/img.png)
![](https://blog.kakaocdn.net/dn/dYX9zR/btsITS5A5qP/IzO3Gqv6YqOq3e7IyJDotk/img.png)
Mind the Gap: Seamless data and ML pipelines with Airflow and Metaflow
Valay Dave, Software Engineer, Outerbounds
medium.com
Tool |
โญ K
|
Type | Support Docker |
Airflow |
35.7
|
Centralized Orchestrator
|
apache/airflow |
Luigi |
17.6
|
Domain-Specific
|
spotify/luigi |
Prefect |
15.5
|
Centralized Orchestrator
|
prefecthq/prefect |
Dagster |
10.9
|
Centralized Orchestrator
|
docs |
Kedro |
9.5
|
Domain-Specific
|
kedro-docker |
Cadence |
8
|
Centralized Orchestrator
|
- |
Mage AI |
7.5
|
Centralized Orchestrator
|
mageai/mageai |
Apache NiFi |
4.6
|
Domain-Specific
|
apache/nifi |
Maestro |
2.1
|
Domain-Specific
|
None Official |
Apache Oozie |
0.7
|
Centralized Orchestrator
|
None Official |
2024/08/01 ์์ ์ github star๋ก ๋ณด์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๊ฒ์ airflow๊ณ ๊ฐ์ฅ ์ปค๋ฎค๋ํฐ๊ฐ ํ์ฑํ๋ ํด ์ญ์ airflow๋ค. airflow์ ๋จ์ ์ด ๊ทธ๋ ๊ฒ ๋ง๊ณ ๋ถํธํ์ง๋ง ์ด๋ฐ ๋ฐ์ดํฐ Orchestra Tool ๊ฐ์ ๊ฒฝ์ฐ ํ๋ฒ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ช ๋ ์ ๋ด๋ค๋ณด๊ณ ์ฌ์ฉํ๊ณ ์ฝ๊ฒ ๋ฐ๊พธ์ง ์๋ ํน์ฑ์ ๊ฐ์ฅ ์ข์ ๊ฒ์ ๋ฐ๋ผ๊ฐ๋ ๊ฒ์ด ํ๋์ ์ ๋ต์ด ๋ ์ ์๋ค.
์ฌ๋ด์์ airflow์ ๊ธฐ๋ฅ์ด ๋๋ฌด ๋ง์ ๋ฆฌ์์ค๋ฅผ ์ก๊ณ ์๋ ๊ฒ ์๋๊ฐ๋ผ๋ ์ง๋ฌธ์ ์์์ผ๋ก ์ฌ๋ฌ ๊ฐ์ง ํด๋ค์ ๊ฒ์ํ๋ฉด์ ์์๋ณธ ๊ฒฐ๊ณผ ๋ํ IT ๊ธฐ์ ์์ ์ฌ๋ด์์ ์ฌ์ฉํ๋ ๋ฐฐ์น ํ๋ก๊ทธ๋จ๋ค์ด ์คํ์์คํ๋ ๊ฒ ์๋นํ ๋ง์๋ค. ์ต๊ทผ์ ๋์จ Netflix์ Maestro ๋ํ ์ด์คํ๋๋ก airflow์ ๋ํญ๋ง๊ฐ ๋ ์ง ๋ง์ ๊ด์ฌ์ ๋ฐ๊ณ ์๋ค.
https://news.ycombinator.com/item?id=41037745
Maestro: Netflix's Workflow Orchestrator | Hacker News
news.ycombinator.com
People need to realize that code is a liability
Data Orchestrator ๋์ ์ ๊ณ ๋ คํด์ผ ๋ ์ฌํญ ์ค ํ ๊ฐ์ง๋ก์๊ฐ์ด ๋ง์ด ์ง๋ ์ฝ๋์์ ์๊ธฐ๋ ๋ถ์ฑ๊ฐ ์๋ค. ์ฝ๋์์ ์๊ธด ๋ฒ๊ทธ๋ฅผ ๊ณ ์น ์ฌ๋์ด ์ ์ ์์ด์ง๊ธฐ ๋๋ฌธ์ ์คํ ์์ค๋ฅผ ํ๋ก๋ํธ์ ๋์ ํ ๋ ์ ์คํด์ผ ํ๋ค. ์ฝ๋๋ฅผ ์ ๋ชจ๋ฅธ๋ค๋ฉด ์ปค๋ฎค๋ํฐ ํ์ฑํ๋ฅผ ์ผ๋ํ๋ ๊ฒ์ด ์ ๋ง ์ค์ํ๋ค.(git issue)
ํ๋ ๋์ ์๋ฆฌ์ ์์ ๋ค๋ฅธ ์ฌ๋์ ์ํด์๋ผ๋ ์ฌ๋ฌ ๋ฒ ๊ณ ๋ฏผํ์ผ๋ฉด ์ข๊ฒ ๋ค...
'๐ข๏ธ Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ์ด์ฃผ To NAS (synology, dropbox) (0) | 2024.09.03 |
---|---|
๋ฐ์ดํฐ ํ์ง์ ๋น๋ฐ (4) (0) | 2024.08.20 |
๋ฐ์ดํฐ ํ์ง์ ๋น๋ฐ (3) (0) | 2024.07.30 |
Airflow Entrypoint (0) | 2024.07.28 |
๋ฐ์ดํฐ ํ์ง์ ๋น๋ฐ (2) (0) | 2024.07.21 |