์„œ๋น„์Šค ์กฐ์ •์„ ์œ„ํ•ด Workflows ๋˜๋Š” Cloud Composer ์„ ํƒ

Workflows์™€ Cloud Composer๋Š” ์„œ๋น„์Šค๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋น„์Šค ์กฐ์ •์— ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜์˜ ๊ฐœ๋…์€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•œ ์ œํ’ˆ์„ ์„ ํƒํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ์ฐจ์ด์ 

Workflows์™€ Cloud Composer์˜ ์ฃผ๋œ ์ฐจ์ด๋Š” ๊ฐ ์ œํ’ˆ์ด ์ง€์›ํ•˜๋„๋ก ์„ค๊ณ„๋œ ์•„ํ‚คํ…์ฒ˜ ์œ ํ˜•์— ์žˆ์Šต๋‹ˆ๋‹ค.

Workflows๋Š” ์—ฌ๋Ÿฌ HTTP ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋ฅผ ๋‚ด๊ตฌ์„ฑ์ด ์šฐ์ˆ˜ํ•œ ์Šคํ…Œ์ดํŠธํ’€(Stateful) ์›Œํฌํ”Œ๋กœ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ง€์—ฐ ์‹œ๊ฐ„์ด ๋‚ฎ๊ณ  ๋งŽ์€ ์‹คํ–‰ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์™„์ „ํžˆ ์„œ๋ฒ„๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค.

Workflows๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ VM ์‹œ์ž‘ ๋˜๋Š” ์ค‘์ง€ ๊ทธ๋ฆฌ๊ณ  ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ตํ•ฉ ๊ณผ ๊ฐ™์€ ์ธํ”„๋ผ ํƒœ์Šคํฌ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. Workflows ์ปค๋„ฅํ„ฐ๋Š” ๋˜ํ•œ Cloud Storage ๋ฐ BigQuery์™€ ๊ฐ™์€ Google Cloud ์„œ๋น„์Šค์—์„œ ๊ฐ„๋‹จํ•œ ์ž‘์—… ์‹œํ€€์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Cloud Composer๋Š” ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ(ํŠนํžˆ ETL/ELT)๋ฅผ ์กฐ์ •ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Apache Airflow ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ๋˜์—ˆ์ง€๋งŒ Cloud Composer๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜•์ž…๋‹ˆ๋‹ค. Cloud Composer๋Š” ์˜จํ”„๋ ˆ๋ฏธ์Šค ๋˜๋Š” ๊ต์ฐจ ๋‹ค์ค‘ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์„ ํฌํ•จํ•˜์—ฌ ์œ„์น˜์— ๊ด€๊ณ„์—†์ด ํŒŒ์ดํ”„๋ผ์ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํƒœ์Šคํฌ ๋ฐ ์˜ˆ์•ฝ์„ ํฌํ•จํ•˜์—ฌ Cloud Composer์˜ ๋ชจ๋“  ๋…ผ๋ฆฌ๋Š” Python์—์„œ ๋ฐฉํ–ฅ์„ฑ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„(DAG) ์ •์˜ ํŒŒ์ผ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

Cloud Composer๋Š” ํƒœ์Šคํฌ ์‹คํ–‰ ์‚ฌ์ด์— ๋ช‡ ์ดˆ ์ •๋„์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๊ด„ ์›Œํฌ๋กœ๋“œ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. Cloud Composer๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด BigQuery์—์„œ ์ž‘์—…์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ฑฐ๋‚˜ Dataflow ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹œ์ž‘ํ•˜๋Š” ๋“ฑ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์„œ๋น„์Šค๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Google Cloud ์—๋งŒ 150๊ฐœ ์ด์ƒ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๊ธฐ๋Šฅ ๋น„๊ต

ํŠน์„ฑ Workflows Cloud Composer
๊ตฌ๋ฌธ YAML ๋˜๋Š” JSON ํ˜•์‹์˜ Workflows ๊ตฌ๋ฌธ Python
์ƒํƒœ ๋ชจ๋ธ ๋ช…๋ น์  ํ๋ฆ„ ์ œ์–ด ์ž๋™ ์ข…์† ํ•ญ๋ชฉ์„ ๊ฐ€์ง€๋Š” ์„ ์–ธ์  DAG
ํ†ตํ•ฉ HTTP ์š”์ฒญ ๋ฐ ์ปค๋„ฅํ„ฐ Airflow ์—ฐ์‚ฐ์ž ๋ฐ ์„ผ์„œ
๋‹จ๊ณ„ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ณ€์ˆ˜์šฉ 512KB XCom์šฉ 48KB1
์‹คํ–‰ ํŠธ๋ฆฌ๊ฑฐ ๋ฐ ์˜ˆ์•ฝ gcloud CLI, Google Cloud ์ฝ˜์†”, Workflows API, Workflows ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Cloud Scheduler Airflow Sensor, DAG ์ •์˜ ํŒŒ์ผ์˜ ํฌ๋ก ๊ณผ ์œ ์‚ฌํ•œ ์ผ์ •
๋น„๋™๊ธฐ ํŒจํ„ด
  • Polling
  • ์ฝœ๋ฐฑ
  • ์žฅ๊ธฐ ์‹คํ–‰ ์ž‘์—… ๋Œ€๊ธฐ Google Cloud
Polling
๋™์‹œ ์‹คํ–‰ ๋™์ผํ•œ ์›Œํฌํ”Œ๋กœ์˜ ๋™์‹œ ์‹คํ–‰ ๋˜๋Š” ๋™์‹œ ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›Œํฌํ”Œ๋กœ ๋‚ด๋ถ€์˜ ๋™์‹œ ์‹คํ–‰ ์ข…์† ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ์ž๋™ ์ˆ˜ํ–‰
์‹คํ–‰ ์ง€์—ฐ ์‹œ๊ฐ„ ๋ฐ€๋ฆฌ์ดˆ ์ดˆ
์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜ ์•„๋‹ˆ์š” ์˜ˆ(Apache Airflow)
ํ™•์žฅ ๋ชจ๋ธ ์„œ๋ฒ„๋ฆฌ์Šค(์ˆ˜์š”์— ๋”ฐ๋ผ ํ™•์žฅ๋˜๊ณ  0์œผ๋กœ ์ถ•์†Œ) ํ”„๋กœ๋น„์ €๋‹๋จ
์ฒญ๊ตฌ ๋ชจ๋ธ ์‚ฌ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜(์‹คํ–‰ ๋‹จ๊ณ„๋‹น) ํ”„๋กœ๋น„์ €๋‹ ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜
๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ์•„๋‹ˆ์š” ๋ฐฑํ•„, DAG ์žฌ์‹คํ–‰ ๊ธฐ๋Šฅ

  1. airflow.models.xcom ์†Œ์Šค ์ฝ”๋“œ. Apache Airflow ๋ฌธ์„œ. 2021๋…„ 8์›” 2์ผ. โ†ฉ