๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ํ์ ๋๊ตฌ, Airflow
์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ๊ฐ๋ฐ์์๊ฒ ๋ฐฐ์ฐ์ธ์! ๐ฅ

๋ชจ๋ํ ๋ฐ์ดํฐ ์ํฌํ๋ก์ฐ ๊ด๋ฆฌ,
Apache Airflow์ ํจ๊ป ๐

ํ์
์์ ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ์ํฌํ๋ก์ฐ ๊ด๋ฆฌ ํด : Apache Airflow
Airflow(์์ดํ๋ก์ฐ)์ ๊ฐ๋จํ ์ค์ ๊ณผ ์ฌ์ฉ๋ฒ์ ์ตํ๋ณด์ธ์. ์ฌ๋ฌ๋ถ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ ์ํฌํ๋ก์ฐ๋ฅผ ๋ง๋ค ์ ์๋๋ก ์๋ดํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ณต์กํ ๊ฐ๋
์ ๋ค๋ก, Airflow์ ๋งค๋ ฅ์ ์ธ ์ธ๊ณ๋ก!
๋ฐ์ดํฐ ๋ถ์๊ณผ ์ฒ๋ฆฌ ์์
์ด ๋ณต์กํด์ง๋ฉด์ ์์
์ ์ค์ผ์ค๋ง, ์์กด์ฑ ๊ด๋ฆฌ, ์ค๋ฅ ์ฒ๋ฆฌ ๋ฑ์ ๋ฌธ์ ๊ฐ ๋์ฑ ์ค์ํด์ง๊ณ ์์ต๋๋ค. ์ด๋ฌํ ๊ณผ์ ๋ค์ ํจ๊ณผ์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํด Airflow๋ ๋ง์ ์กฐ์ง์์ ์ ํํ๋ ํต์ฌ ๋๊ตฌ ์ค ํ๋์
๋๋ค.
๋ณธ ๊ฐ์๋ ์ฒ์ Airflow๋ฅผ ์ ํ๋ ์ฌ๋ฌ๋ถ๋ค์ ์ํด ๋ฏธ๋ฆฌ ์ค๋นํ ๊ฐ์์
๋๋ค. ์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ์์ ๋ณดํธํ๋ Apache Airflow. ๊ฐ๋จํ๊ณ ์ฌ์ด ์
๋ฌธ์ ๋์๋๋ฆด๊ฒ์.
์ Apache Airflow๋ฅผ ๋ฐฐ์์ผ ํ ๊น์?
์๋ํ๋ ์ํฌํ๋ก์ฐ ๊ด๋ฆฌ
Airflow๋ ์์
๋ค์ ์๊ฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ์คํํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ๊ฐ๋ ฅํ ์ค์ผ์ค๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์
์ ๋ ํจ์จ์ ์ผ๋ก ๊ณํํ๊ณ ์คํํ ์ ์์ต๋๋ค.
๋ณต์กํ ๋ฐ์ดํฐ ์ํฌํ๋ก์ฐ์์๋ ์์
์ฌ์ด์ ์์กด์ฑ์ ์ ํํ๊ฒ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. Airflow๋ ์์
๊ฐ์ ์์กด์ฑ์ ๋ช
ํํ๊ฒ ์ ์ํ๊ณ ์์
๊ฐ์ ์์๋ฅผ ์ง์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋ ฅํ ๋ชจ๋ํฐ๋ง๊ณผ ์๋ฆผ
์์
์ด ์คํ๋๋ ๋์ Airflow ๋์๋ณด๋๋ฅผ ํตํด ์์
์ ์งํ ์ํฉ์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. ๋ํ ์์
์ด ์คํจํ๊ฑฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ค์ ํ ์๋ฆผ์ ํตํด ๋น ๋ฅด๊ฒ ๋์ํ ์ ์์ต๋๋ค.
Airflow๋ ๋ค์ํ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. ๋ค์ํ ๋ฐ์ดํฐ ์ ์ฅ์, ์์
์คํ ํ๊ฒฝ, ์๋ฆผ ๋ฉ์ปค๋์ฆ๊ณผ ํตํฉํ ์ ์์ด์. ์ฌ๋ฌ๋ถ์ ์๊ตฌ์ ๋ง๊ฒ ์ปค์คํ
ํ ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌ์ถํด ๋ณด์ธ์.
์ปค๋ฎค๋ํฐ์ ์ํ๊ณ
Airflow๋ ํ๋ฐํ ์ปค๋ฎค๋ํฐ์ ํ๋ถํ ์ํ๊ณ๋ฅผ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ๋ฌธ์ ํด๊ฒฐ์ ๋์์ ๋ฐ์ ์ ์๋ ํ๋ฅญํ ๋ฆฌ์์ค๊ฐ ๋ง์ต๋๋ค.
๊ฐ์ ํน์ง โจ
โ
์ด๋ ค์ด ๊ฐ๋
์์ด ์ฝ๊ฒ! Airflow๊ฐ ๋ฌด์์ธ์ง, ์ ํ์ํ์ง ๋น์ ์ ์์๋ฅผ ํตํด ์ค๋ช
ํฉ๋๋ค.
โ
์ค์ Airflow ์ฌ์ฉ ๊ณผ์ ์ ๋ฐ๋ผ ํ๊ณ , ๊ฐ๋จํ ๋ฐ์ดํฐ ์ํฌํ๋ก์ฐ๋ฅผ ๋ง๋ค์ด ๋ณด๋ ์ค์ต ์ค์ฌ ๊ฐ์!
โ
๊ฐ์ ์ค ๊ถ๊ธํ๊ฑฐ๋ ์ดํดํ์ง ๋ชปํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ง ์ง๋ฌธํด ์ฃผ์ธ์. Q&A์ ํจ๊ป ํ์ตํ์ธ์!
ํ์ต ๋ด์ฉ ๐
- ๋ชจ๋ ๊ฐ์ ์๋ฃ๋ ์์ด๋ก ๋์ด ์์ต๋๋ค. ๊ฐ์ ์์ฒด๋ ํ๊ตญ์ด๋ก ์งํ๋๋ฉฐ ๋ฏธ๋ ํด์ธ ์ทจ์
์ ์ฉ์ดํ๋๋ก ์ค๋นํ์ต๋๋ค.
- PDF ๊ฐ์ ์๋ฃ ๋ฐ Github ์ฝ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํด๋ผ์ฐ๋ ์ํํธ์จ์ด ์ํคํ
์ฒ Overview
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ์ค์ผ์คํธ๋ ์ดํฐ์ ๋ํ ์๊ฐ
์ํ์น Airflow์ ๋ํ ์๊ฐ
Apache Airflow์ ์ค์ ์ปดํฌ๋ํธ ์๊ฐ
๊ฐ ์ปดํฌ๋ํธ ์ธ๋ถ ์๊ฐ
์ฝ๋์ ๋ํ ์ธ๋ฐํ ๋ถ์
ํ์ง ์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ์์ง๋์ด์ ๋
ธํ์ฐ๋ฅผ ๊ทธ๋๋ก ์ ํด๋๋ฆฝ๋๋ค!
์ ๋ ์ ํ๋ธ "๋ฏธ์ฟก ์์ง๋์ด" ๋ฐ ๋ธ๋ฐ์น "์ค๋ฆฌ์ฝ ๋ฐธ๋ฆฌ ์์๊ณผ ์ถ"์ ์ด์ํ๋ ํ์ง ์ํํธ์จ์ด ์์ง๋์ด์
๋๋ค. ์ง๊ธ์ ๋ฏธ๊ตญ University of California, Berkeley EECS๋ฅผ ์กธ์
ํ๊ณ ๋ฏธ๊ตญ ์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ๊ธ๋ก๋ฒ ๋น
ํ
ํฌ ๊ธฐ์
๋ณธ์ฌ์์ ๋น
๋ฐ์ดํฐ ๊ด๋ จ ์
๋ฌด๋ฅผ ์งํํ๊ณ ์์ต๋๋ค. ์ค์ ์
๋ฌด์์ ์๊ฒ ๋ ๋
ธํ์ฐ๋ฅผ ๋ง์ ๋ถ๋ค๊ป ์ ํด๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ๐
์ด๋ฐ ๋ถ๋ค์ด์๋ผ๋ฉด
์ง๊ธ ๋ฐ๋ก ์์ํด ๋ณด์ธ์.
๐ก
๋ฐ์ดํฐ ์์ง๋์ด
๋ฐ์ดํฐ ์ํฌํ๋ก์ฐ๋ฅผ ์๋ํํ๊ณ ์ค์ผ์ค๋งํ์ฌ ๋ฐ์ดํฐ ํ๋ฆฌํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ์ธ์.
๐ก
๋ฐ์ดํฐ ๋ถ์๊ฐ
์ ๊ธฐ์ ์ธ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ๋ ๋ชจ๋ธ ์ฌํ์ต ์์
๋ฑ์ ์ฒ๋ฆฌํด ๋ณด์ธ์.
๐ก
๋ฐ์ดํฐ ๊ณผํ์
๋ชจ๋ธ ํ๋ จ, ํ๊ฐ, ๋ฐฐ์น ์์ธก ๋ฑ์ ์๋ํํ์ฌ ๋ฐ์ดํฐ ๊ณผํ ํ๋ก์ธ์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ์ธ์.
๐ก
์์คํ
๊ด๋ฆฌ์
์์
์คํ์ ๋ํ ํฌ๋ช
์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๐ก
๋ฐ์ดํฐ ์์ง๋์ด๋ง ๋ฐ ๊ฐ๋ฐํ
ETL (Extract, Transform, Load) ์์
, API ํธ์ถ ๋ฑ ๋ค์ํ ์๋ํ ์์
์ ๊ตฌํํ ์ ์์ต๋๋ค.
๐ก
ํ๋ก์ ํธ ๊ด๋ฆฌ์
์์
์ ์์กด์ฑ, ์ฐ์ ์์, ์์ ์คํ ์๊ฐ ๋ฑ์ ์ค์ ํ์ฌ ํ๋ก์ ํธ ์ผ์ ์ ํจ๊ณผ์ ์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
์์ ์ง๋ฌธ Q&A ๐ฌ
Q. ์ Apache Airflow๋ฅผ ๋ฐฐ์์ผ ํ๋์?
Apache Airflow๋ ๋ฐ์ดํฐ ์ํฌํ๋ก์ฐ ๊ด๋ฆฌ ๋๊ตฌ๋ก, ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์๋ํํ๊ณ ์ค์ผ์ค๋งํ๋ฉฐ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ ์์ง๋์ด, ๋ฐ์ดํฐ ์ฌ์ด์ธํฐ์คํธ, ์์คํ
๊ด๋ฆฌ์ ๋ฑ ๋ค์ํ ์ญํ ์์ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ํฌํ๋ก์ฐ(Workflow) ๊ด๋ฆฌ๋ฅผ ํ ์ ์์ต๋๋ค.
๊ฐ์ ํ๋ฐ๋ถ์๋ ๋น
๋ฐ์ดํ ๊ธฐ์ (์ํ์น ์คํํฌ)๊ณผ ์ฐ๋ํ๋ ๋ถ๋ถ๊น์ง ๋ฐฐ์ธ ์ ์์ด ๋ง์ ํ์ดํ ๋ผ์ธ์ ๊ด๋ฆฌํ๋ ๋ฐ์ดํ ์์ง๋์ด๋ผ๋ฉด ํฐ ๋์์ด ๋์ค ๊ฒ๋๋ค.
Q. ๋น์ ๊ณต์๋ ๋ค์ ์ ์๋ ๊ฐ์์ธ๊ฐ์?
๋น์ ๊ณต์์ง๋ง ํ์ด์ฌ์ ๊ธฐ๋ณธ์ ์์๊ณ , ๋ฐ์ดํฐ๋ ์์
์ ์ค์ผ์ค ์ํฌํ๋ก์ฐ์ ํจ์จํํ๊ณ ์ถ์ผ์๋ค๋ฉด, ๋ง์ ๋์์ด ๋์ค ๊ฒ๋๋ค.
ํ์ด์ฌ์ด ์ฒ์์ด์๋ผ๋ฉด ์ ํ๋ธ๋ฅผ ํตํด ํ์ด์ฌ ๊ธฐ์ด๋ฅผ ํ์ตํ๊ฑฐ๋ ์๋ ๊ฐ์๋ฅผ ๋จผ์ ์๊ฐํด์ฃผ์ธ์! ๊ธฐ์ด ๋ถ๋ถ๋ง ๋ณด์
๋ ์ ์ฒด ๊ฐ์๋ฅผ ๋ฐ๋ผ์ค๋ ๋ฐ ์ด๋ ค์์ ์์ ๊ฒ์
๋๋ค.
Q. ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์ ์ค๋นํด์ผ ํ ๊ฒ์ด ์๋์?
์๋ฌด๋๋ ํ์ด์ฌ์ผ๋ก ์ฝ๋๋ฅผ ๋ง๋ค๋ค ๋ณด๋, ๊ธฐ๋ณธ์ ์ธ ํ์ด์ฌ ๊ฐ์๋ ํ์ง ์์ต๋๋ค. ๋ํ Docker๋ฅผ ์ด์ฉํ ์ค์ต์ด ๋์ค๋ฏ๋ก, Docker์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ง์์ด ์์ผ๋ฉด ์ดํดํ์๊ธฐ ์ฌ์ธ ๊ฒ์
๋๋ค.

์๊ฐ ์ ์ฐธ๊ณ ์ฌํญ ๐ข
์ค์ต ํ๊ฒฝ
- ์ด์ ์ฒด์ ๋ฐ ๋ฒ์ (OS)
- ๊ฐ์๋ MacOS์์ ์งํ๋์ง๋ง, ํ์ด์ฌ(Airflow ์์ฒด๊ฐ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์)์ด ์๋ ์ด์์ฒด์ ๋ผ๋ฉด ์ด๋๋ ์ง ์ค์ตํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ ๋๊ตฌ
- ํ์ด์ฌ 3.7+
- Airflow๋ Apache ๋ผ์ด์ผ์ค์ด๋ฏ๋ก ๋ฌด๋ฃ์
๋๋ค.
- PC ์ฌ์
- CPU: 2์ฝ์ด ์ด์
- ๋ฉ๋ชจ๋ฆฌ: 4GB ์ด์
- ๋์คํฌ: 10GB ์ด์
์ ์ ์ง์ ๋ฐ ์ ์ ์ฌํญ
- ํ์ด์ฌ๊ณผ Docker(๋์ปค)์ ๋ํ ๊ธฐ๋ณธ ์ง์์ด ํ์ํ๊ณ , ๋ณธ ๊ฐ์ ์ค์ต์ Docker๋ก ํ๊ฒฝ ์ค์ ์ด ๋์ด ์์ต๋๋ค. Docker์ ๋ํด ๋ ์๊ณ ์ถ์ผ์๋ค๋ฉด, ์ ๋ฌด๋ฃ Docker ๊ฐ์๋ฅผ ์ฐธ๊ณ ํด ๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค. ๊ฐ์ ๋งํฌ: [https://inf.run/8eFCL]
- ์ง๋ฌธ์ด ์์ผ๋ฉด ํธํ๊ฒ ํด์ฃผ์ธ์. ๋ค๋ง ์ ๊ฐ ๋ฏธ ์๋ถ์ ์๋ค ๋ณด๋, ๋ต๋ณ๊น์ง ์๊ฐ์ด ์กฐ๊ธ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.