Airflow ์กฐ๊ธ ๋ง์ง๋ค ๋ณด๋ฉด, ๋๋ถ๋ถ ์ด๋ ๊ฒ ์๋น์ค๊ฐ ๋๋์ด ๋์๊ฐ๋ ๊ฑธ ๋ณด๊ฒ ๋ฉ๋๋ค.
airflow-init
airflow-scheduler
airflow-webserver
“์ด๊ฑธ ๊ตณ์ด ์ ์ด๋ ๊ฒ ์ชผ๊ฐ?” ๋ผ๋ ์๊ฐ์ด ๋ค ์ ์๋๋ฐ์.
์ด๊ฒ ๋ฐ๋ก ์ค์ ์ด์ ๋ฐฉ์์
๋๋ค.
1๏ธโฃ airflow-init โ ์ค๋น ๋ด๋น
๋ค๋ฅธ ์ด๋ฆ์ผ๋ก airflow-db-migrate
๋ airflow-bootstrap
์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค.
๋ฑ ํ ๋ฒ๋ง ์คํ๋๋ ํ๋ก์ธ์ค์
๋๋ค.
ํ๋ ์ผ:
airflow db upgrade
โ DB ์คํค๋ง ์ต์ ํ (DB ๊ตฌ์กฐ ์ต์ ์ผ๋ก ๋ง์ถฐ์ค)- ์ต์ด admin ์ ์ ์์ฑ
์ค์ ํฌ์ธํธ:
์ด๊ฑด ๊ณ์ ๋๋ ์๋น์ค๊ฐ ์๋๋๋ค. ํ ์ผ ๋ค ํ๋ฉด ๋ฐ๋ก ์ข
๋ฃ (exit code 0
).
์ ๋ฐ๋ก ์์ด์ผ ํ๋๋ฉด?
- DB ์ค๋น๊ฐ ์ ๋ ์ํ์์๋ webserver๋ scheduler๊ฐ ์์ ๋ชป ์ฌ๋ผ์ด.
- ๊ฒฐ๊ตญ DB ์ค๋น๊ฐ Airflow ์ ์ฒด ์คํ์ ์ฒซ ๋จ์ถ๋ผ์.
๐ ์ฝ๊ฒ ๋งํด์:
“Airflow๊ฐ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋๊ธฐ ์ ์ ์ค๋น ์์
๋ง ํด์ฃผ๋ ์ญํ ”
2๏ธโฃ airflow-webserver โ ์ฌ๋์ด ๋ณด๋ ํ๋ฉด ๋ด๋น
Airflow Web UI๋ฅผ ๋์ฐ๋ HTTP ์๋ฒ์ ๋๋ค. (gunicorn ๊ธฐ๋ฐ์ผ๋ก ๋์๊ฐ)
ํ๋ ์ผ:
- Web UI
- API ์ ๊ณต
- ๊ถํ ๊ด๋ฆฌ (RBAC)
- Trigger ๊ด๋ฆฌ
- Log Viewer ๋ฑ โ ์ ์ ๊ฐ ํด๋ฆญํ๊ณ ๋ณด๋ ๊ฑด ๋ค ์ฌ๊ธฐ์ ๋ด๋น
- ๊ธฐ๋ณธ ํฌํธ: 8080
๐ ํ๋ง๋๋ก:
“์ฐ๋ฆฌ๊ฐ ๋ธ๋ผ์ฐ์ ์ด๊ณ ๋ค์ด๊ฐ๋ ๊ทธ ํ๋ฉด ๋ณด์ฌ์ฃผ๋ ๋ด๋น”
3๏ธโฃ airflow-scheduler โ ์์ง ๋ด๋น
์ด๊ฒ ์ฌ์ค Airflow์ ์ฌ์ฅ์
๋๋ค.
DAG๋ค ์ค์บํ๊ณ task ์ค์ผ์ค ์ก๊ณ , ์คํ์ํค๊ณ โฆ ๋ค ์ด๋์ด ํฉ๋๋ค.
ํ๋ ์ผ:
- DAG ์ฃผ๊ธฐ์ ์ผ๋ก ์ค์บ
- Task ์ํ ๊ด๋ฆฌ
- ์์กด์ฑ ํ์ธ
- ์คํํ task๋ฅผ queue์ ์ฌ๋ฆผ
- Workerํํ ์คํ ์์ฒญ
๐ ํ๋ง๋๋ก:
“Task๋ฅผ ์ด๋ป๊ฒ ์ธ์ ์คํํ ์ง ๊ด๋ฆฌํ๋ ์ง์ง ๊ด๋ฆฌ์”
๐ฅ ํต์ฌ ์ ๋ฆฌ
webserver
๋scheduler
๋ ์๋ก ๋ ๋ฆฝ์ webserver
๋ ๊ทธ๋ฅ ํ๋ฉด๋ง ๋ด๋น โ ์ง์ task ์ ๋๋ฆผscheduler
๊ฐ task๋ฅผ ํ์ ์ฌ๋ฆฌ๊ณ โ executor๊ฐ ์คํ
๐ง ๊ทธ๋ผ ์ ์ด๋ ๊ฒ ๊ตณ์ด ๋๋๊น?
์ด์ | ์ค๋ช |
---|---|
์์ ์ฑ | ํ ๋์ด ์ฃฝ์ด๋ ๋๋จธ์ง๋ ๊ณ์ ๋์๊ฐ |
์ค์ผ์ผ๋ง | ํ์ํ ๋ scheduler๋ webserver ๋ฐ๋ก ํ์ฅ ๊ฐ๋ฅ |
์ด์ํ์ค | ์ฐ์ ํ์ค Airflow Helm chart๋ ์ด๋ ๊ฒ ๋ถ๋ฆฌ |
๐ ์ถ๊ฐ๋ก ์์๋๋ฉด ์ข์ ์
- Airflow 2.x ๋ถํฐ๋ ์๋ ์ด multi-service ๊ตฌ์กฐ๊ฐ ๊ธฐ๋ณธ์.
- Docker-compose๋ก ์ด๋ ๊ฒ ๋๋ ์ ์ฐ์ตํ๋ ๊ฒ ์ค๋ฌด๋ ๊ฑฐ์ ๋๊ฐ์.
๐ฅ ํ ์ค๋ก ์์ฝํ๋ฉด:
airflow-init
โ ์ค๋นairflow-scheduler
โ ์คํairflow-webserver
โ ํ๋ฉด
๋ณด๋์ค: Executor ์ข ๋ฅ
- ์ง๊ธ์
LocalExecutor
๋ผ scheduler๊ฐ task๋ฅผ ํ์ ์ฌ๋ฆฌ๋ฉด โ ์๊ธฐ ์์์ ์ง์ ์คํ๊น์ง ํด๋ฒ๋ฆผ. - ์ฆ, task ์คํ์ ์ํด ๋ณ๋ worker ํ๋ก์ธ์ค ๋์ฐ์ง ์์
Airflow์์ executor
๋ ๊ฐ๋
์ ์ธ ์ปดํฌ๋ํธ๋ค.
๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ณ๋์ ์๋น์ค๋ ํ๋ก์ธ์ค๊ฐ ํญ์ ์๋ ๊ฑด ์๋๋ค.
scheduler
๋ task๋ฅผ ๋ณด๊ณ “์ ์ด์ ์ด๊ฑฐ ์คํํ ์ฐจ๋ก๋ค!” ๋ผ๊ณ ๊ฒฐ์ - ์คํ ์์ฒด๋
executor
๊ฐ ๋ด๋น - ์ด๋ค
executor
๋ฅผ ์ฐ๋๋์ ๋ฐ๋ผ ์คํ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋ค:
Executor ์ข ๋ฅ | ์คํ ๋ฐฉ์ | ๋ณ๋ ํ๋ก์ธ์ค? |
---|---|---|
LocalExecutor | scheduler ํ๋ก์ธ์ค ์์์ ๋ฐ๋ก ์คํ | โ (๋ณ๋ ํ๋ก์ธ์ค ์์) |
SequentialExecutor | ๊ฑฐ์ ํ ์คํธ์ฉ, ํ ๋ฒ์ ํ๋์ฉ | โ |
CeleryExecutor | worker ํ๋ก์ธ์ค๋ค์ด ๋ฐ๋ก ์์ | โ (worker ํ๋ก์ธ์ค ํ์) |
KubernetesExecutor | Kubernetes pod ์์ฑํด์ ์คํ | โ (pod๋ก ๋ฐ๋ก ์คํ) |