๋ฐ์ดํฐ ์์ง๋์ด๋ง ํ์ดํ๋ผ์ธ์์ dbt์ Airflow๋ ์ข ์ข ํจ๊ป ์ฌ์ฉ๋๋ค. ์ฌ๊ธฐ์ ์์ฃผ ๋ง์ฃผํ๋ ์ค๊ณ ๊ฒฐ์ ์ด ์๋ค: dbt๋ฅผ Airflow์ ์ด๋ป๊ฒ ํจ๊ป ์คํํ ๊ฒ์ธ๊ฐ?
- dbt๋ฅผ ๋ณ๋์ ์ปจํ ์ด๋์์ ์คํํ๊ณ API๋ CLI ํธ์ถ๋ก ์ค์ผ์คํธ๋ ์ด์ ํ ๊ฒ์ธ๊ฐ?
- ์๋๋ฉด dbt๋ฅผ Airflow์ Docker ์ปจํ ์ด๋ ์์์ ์ง์ ์คํํ ๊ฒ์ธ๊ฐ?
๋ ๋ค ์คํํด๋ณธ ๊ฒฐ๊ณผ, dbt๋ฅผ Airflow ์ปจํ ์ด๋ ์์์ ์คํํ๋ ๋ฐฉ์์ ์ ํธํ๋ค.
์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
โ ํ๋์ ์ปจํ ์ด๋ = ํ๋์ ํ๊ฒฝ
- Airflow DAG๊ฐ ๋์ผํ ์ปจํ ์ด๋ ์์์ dbt ๋ช ๋ น์ด๋ฅผ ์ง์ ์คํํ๋ค.
- ์ด๋ฅผ ํตํด ๋ค์์ด ๋ณด์ฅ๋๋ค:
- ๋์ผํ Python ๋ฒ์
- ๋์ผํ dbt ๋ฒ์
- ๋์ผํ ์์กด์ฑ ๋ฒ์ (dbt ํจํค์ง, ์ด๋ํฐ)
- ์ปจํ ์ด๋ ๊ฐ ๋คํธ์ํน ์ด์ ์์
๋ณ๋์ ์ปจํ ์ด๋๋ก ๋ถ๋ฆฌํ ๊ฒฝ์ฐ ๋ค์์ ๊ด๋ฆฌํด์ผ ํ๋ค:
- ๋ ๊ฐ์ Docker ์ด๋ฏธ์ง ์ ์ง
- dbt ๋ฒ์ ์๋ ๋๊ธฐํ
- ๋ณผ๋ฅจ ๋ง์ดํธ, ํ์ผ ์ ๊ทผ ๋ฑ ์ปจํ ์ด๋ ๊ฐ ํ์ผ ์์คํ ๋ฌธ์ ํด๊ฒฐ
โ ๊ฐ์ํ๋ ์์กด์ฑ ๊ด๋ฆฌ
- Airflow๊ฐ dbt ํ๊ฒฝ์ ์์ ํ ์ ์ดํ๋ค.
- ์ปจํ ์ด๋ ๊ฐ API ๋๋ CLI ํธ์ถ์ ๋ ธ์ถํ ํ์๊ฐ ์๋ค.
- ํจํค์ง ์
๊ทธ๋ ์ด๋ (
dbt
,dbt-bigquery
,dbt-postgres
๋ฑ)๊ฐ ์๋์ผ๋ก ๋๊ธฐํ๋๋ค.
CI/CD ํ์ดํ๋ผ์ธ์์๋ Airflow์ dbt๊ฐ ๋ชจ๋ ์ค์น๋ ๋จ์ผ Docker ์ด๋ฏธ์ง๋ง ๋น๋ํ๋ฉด ๋๋ค โ ์ ์ง๋ณด์๊ฐ ํจ์ฌ ๋จ์ํ๋ค.
โ ๊น๋ํ DAG ์ฝ๋
Airflow ํ์คํฌ์์ ๋จ์ํ ๋ค์๊ณผ ๊ฐ์ด ์คํ ๊ฐ๋ฅํ๋ค:
BashOperator(
task_id="run_dbt",
bash_command="dbt run --project-dir /opt/airflow/dbt"
)
โ ์ฌ์ด ๋ก์ปฌ ๊ฐ๋ฐ
- ํ๋์
docker-compose.yml
๋ก ๋ชจ๋ ์๋น์ค ์คํ. - dbt์ Airflow ์ปจํ ์ด๋ ๊ฐ ๋ณต์กํ ๋คํธ์ํน์ด๋ ๊ณต์ ๋ณผ๋ฅจ ์ค์ ๋ถํ์.
- “dbt๊ฐ Airflow ์์ ์ ๋๋ก ์ค์น๋๋? ์ด ๋ณผ๋ฅจ ๋ง์ดํธ๊ฐ ์กด์ฌํ๋?” ์ด๋ฐ ๊ณ ๋ฏผ ๋ถํ์.
- ๊ทธ๋ฅ ๋์ํ๋ค.
โ ์ฌ์ด ๋๋ฒ๊น
dbt๊ฐ Airflow ์์์ ์คํจํ ๊ฒฝ์ฐ:
- ๋ก๊ทธ๊ฐ Airflow์ ์์ ํ ์บก์ฒ๋๋ค.
- dbt ์๋ฌ ๋ฉ์์ง๋ฅผ Airflow UI์์ ๋ฐ๋ก ํ์ธ ๊ฐ๋ฅ.
- ์ปจํ ์ด๋๋ ๋ก๊ทธ ํ์ผ์ ์๋ค๊ฐ๋ค ํ ํ์ ์๋ค.
โ ์ผ๊ด๋ ๋ฐ์ดํฐ ์์ง๋์ด๋ง ์ฒ ํ: ์ค์ผ์คํธ๋ ์ด์ ์ด ์คํ์ ์์ ํด์ผ ํ๋ค
- Airflow๊ฐ dbt๋ฅผ ์ค์ผ์คํธ๋ ์ด์ ํ๋ฏ๋ก, dbt์ ๋ฐํ์๊น์ง ์์ ํด์ผ ํ๋ค.
- Docker ์ด๋ฏธ์ง๋ ์์ ๋จ์๋ฅผ ์์ ํ ๋ฐ์ํด์ผ ํ๋ฉฐ, ์ชผ๊ฐ์ง ๋ง์ดํฌ๋ก ์ปจํ ์ด๋๋ณด๋ค๋ ์ผ์ฒดํ์ด ๋ซ๋ค.
๐ง ๋์ ์ผ๋ฐ์ ์ธ ์ ์
Airflow Docker ์ด๋ฏธ์ง๋ฅผ ํ์ฅํ์ฌ dbt๋ฅผ ์ค์นํ๋ค:
FROM apache/airflow:2.9.0
USER root
RUN pip install dbt-core dbt-bigquery dbt-postgres dbt-snowflake
USER airflow
- DAG์ dbt ํ๋ก์ ํธ ๋ชจ๋ Airflow ๊ณต์ ๋ณผ๋ฅจ (/opt/airflow/) ์์ ์กด์ฌ.
- ๊ฐ๋ฐ, ์คํ ์ด์ง, ์ด์ ๋ชจ๋ ๋์ผํ ํ๊ฒฝ ์ ์ง.
๐ ์ธ์ ๋ณ๋ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ๊น?
- ๋งค์ฐ ํฐ dbt ์์ ์ ์คํ ์ค์ผ์ผ๋ง ์์ปค(์: Kubernetes Executor)๋ก ์คํํ ๋
- ์์ ๊ด๋ฆฌํ dbt Cloud๋ฅผ ์ฌ์ฉํ ๋
- ๋ฉํฐํ ๋ํธ dbt ์๋น์ค ์ํคํ ์ฒ์ผ ๋
์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ์์ง๋์ด๋ง ํ์ดํ๋ผ์ธ์ 95%์์๋ Airflow ์ปจํ ์ด๋ ์์์ dbt๋ฅผ ์คํํ๋ ๊ฒ์ด ํจ์ฌ ๋จ์ํ๊ณ , ๋น ๋ฅด๊ณ , ์ ์ง๋ณด์์ฑ์ด ์ข๋ค.
๐ฅ ๊ฒฐ๋ก
โdbt๋ฅผ Airflow ์ปจํ ์ด๋ ์์์ ์ง์ ์คํํจ์ผ๋ก์จ ํ๊ฒฝ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ , ์ค์ผ์คํธ๋ ์ด์ ์ ๋จ์ํํ๋ฉฐ, ์คํจ ์ง์ ์ ์ต์ํํ๋ค. ์ด๋ก์จ DAG๋ ํด๋์ฑ์ด ๋๊ณ ๋๋ฒ๊น ์ด ์ฌ์์ง๋ค.โ