Infra/Apache

[Apache] Apache Airflow의 κ°œλ…

carsumin 2025. 2. 20. 20:39
Apache Airflowλž€?
  • 데이터 νŒŒμ΄ν”„λΌμΈμ„ 섀계, μŠ€μΌ€μ€„λ§, λͺ¨λ‹ˆν„°λ§ν•˜λŠ” μ˜€ν”ˆμ†ŒμŠ€ μ›Œν¬ν”Œλ‘œμš° 관리 ν”Œλž«νΌ
  • 즉, 무엇을 μ–Έμ œ μ–΄λ–»κ²Œ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰ν• μ§€ μ½”λ“œλ‘œ μ •μ˜ν•˜κ³  μžλ™μœΌλ‘œ μ‹€ν–‰λ˜λ„λ‘ λ„μ™€μ£ΌλŠ” μ‹œμŠ€ν…œ

 

Airflow 핡심 κ°œλ…
  • DAG (Directed Acyclic Graph) : νŒŒμ΄ν”„λΌμΈμ˜ 전체 흐름을 ν‘œν˜„ν•œ κ·Έλž˜ν”„λ‘œ Taskκ°„μ˜ μˆœμ„œλ₯Ό μ •μ˜
  • Task : μ‹€μ œλ‘œ μˆ˜ν–‰λ˜λŠ” λ‹¨μœ„ μž‘μ—… (ex : Spark Job μ‹€ν–‰, SQL 쿼리 μ‹€ν–‰, API 호좜 λ“±)
  • Operator : νŠΉμ • μ’…λ₯˜μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” Task의 ν…œν”Œλ¦Ώ
  • Scheduler : DAG에 μ •μ˜λœ 주기에 맞좰 Task μ‹€ν–‰ μ‹œμ μ„ κ²°μ •
  • Executor : μ‹€μ œλ‘œ Taskλ₯Ό μ‹€ν–‰ν•˜λŠ” 주체
  • Web UI : DAG μ‹€ν–‰ ν˜„ν™©, 둜그, Task μ‹€νŒ¨ μ•Œλ¦Ό 등을 관리할 수 μžˆλŠ” λŒ€μ‹œλ³΄λ“œ

 

ꡬ쑰
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚        Airflow Web UI      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
        β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”
        β”‚ Scheduler β”‚  ← DAG μŠ€μΌ€μ€„ 관리
        β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
              β”‚
        β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”
        β”‚ Executor   β”‚  ← μ‹€μ œ Task μ‹€ν–‰
        β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
              β”‚
        β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”
        β”‚ Workers    β”‚  ← Python, Spark, Bash λ“± μ‹€ν–‰
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 

 

Airflow μž‘λ™ 방식 μ˜ˆμ‹œ
  • '맀일 μ˜€μ „ 9μ‹œμ— λ‹€μŒμ„ μ‹€ν–‰ν•œλ‹€' λŠ” νŒŒμ΄ν”„λΌμΈμ„ λ§Œλ“ λ‹€κ³  κ°€μ •
  1. PostgreSQLμ—μ„œ 데이터λ₯Ό μΆ”μΆœ
  2. Spark둜 μ „μ²˜λ¦¬ 및 집계
  3. κ²°κ³Όλ₯Ό S3 λ˜λŠ” Data Warehouse에 적재
  4. Slack으둜 μ•Œλ¦Ό 전솑

이 λͺ¨λ“  과정을 Airflowμ—μ„œ ν•˜λ‚˜μ˜ DAG (μ‹€ν–‰λ‹¨μœ„)둜 μ •μ˜ν•¨

 

 

Airflow의 μž₯점
  • μ½”λ“œ 기반 관리
  • μŠ€μΌ€μ€„λ§ μžλ™ν™”
  • μ˜μ‘΄μ„± 관리 : Taskκ°„ μ‹€ν–‰ μˆœμ„œ μ§€μ • (task1 >> task2)
  • μž₯μ•  볡ꡬ 용이 : μ‹€νŒ¨ν•œ Task만 μž¬μ‹€ν–‰ κ°€λŠ₯
  • μ‹œκ°ν™”/λͺ¨λ‹ˆν„°λ§ 
  • ν™•μž₯μ„±