Skip to content

bibibig-org/airbig

Repository files navigation

โœˆ๏ธ ์ „ ์„ธ๊ณ„ ๋น„ํ–‰ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ณตํ•ญ ๋Œ€์‹œ๋ณด๋“œ โœˆ๏ธ

๋ชฉ์ฐจ

  1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
    • ์ฃผ์ œ
    • ์ฃผ์ œ ์„ ์ • ์ด์œ 
  2. ํ”„๋กœ์ ํŠธ ์ตœ์ข… ๋ชฉํ‘œ
  3. ํ™œ์šฉ ๊ธฐ์ˆ  ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ
  4. ํ”„๋กœ์ ํŠธ ๋‚ด์šฉ
    • Infra
    • Data Pipeline
    • Data
      • ERD
      • ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
    • Dashboard
    • Cowork Tools
  5. ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ
    • ์ฃผ์š” ์‹œ๊ฐํ™” ๊ฒฐ๊ณผ
  6. ๊ฒฐ๋ก  ๋ฐ ํ–ฅํ›„ ๊ฐœ์„ ์‚ฌํ•ญ
    • ๊ฒฐ๋ก 
    • ํ–ฅํ›„ ๊ฐœ์„ ์‚ฌํ•ญ
  7. ํ”„๋กœ์ ํŠธ ์‹คํ–‰ ๋ฐฉ๋ฒ•

1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๐Ÿ“– 1-1. ์ฃผ์ œ

์ „ ์„ธ๊ณ„ ์‹ค์‹œ๊ฐ„ ๋น„ํ–‰ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ณตํ•ญ ๋ถ„์„

โœ”๏ธ 1-2. ์ฃผ์ œ ์„ ์ • ์ด์œ 

ํ•ญ๊ณต ์‚ฐ์—…์€ ๊ธ€๋กœ๋ฒŒํ™”๋œ ์„ธ์ƒ์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์ˆ˜๋งŽ์€ ๋น„ํ–‰๊ธฐ๊ฐ€ ๋™์‹œ์— ์šดํ•ญ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ™˜๊ฒฝ์—์„œ ์‹ค์‹œ๊ฐ„ ๋น„ํ–‰ ์ถ”์ ์€ ํ•ญ๊ณต ์•ˆ์ „, ๊ณตํ•ญ ๊ด€๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ํ•ญ๊ณต๊ธฐ ๊ฒฝ๋กœ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” OpenSky API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„ํ–‰๊ธฐ์˜ ์‹ค์‹œ๊ฐ„ ์œ„์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•จ์œผ๋กœ์จ, ํ•ญ๊ณต ์‚ฐ์—…์˜ ๋ฐ์ดํ„ฐ ํ™œ์šฉ ๊ฐ€๋Šฅ์„ฑ์„ ํƒ๊ตฌํ•˜๊ณ  ๊ณตํ•ญ ์šด์˜ ๋ฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„ ์— ๊ธฐ์—ฌํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

  1. ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ํ™œ์šฉ ๊ฒฝํ—˜: ์„ผ์„œ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘, ์ฒ˜๋ฆฌ, ์‹œ๊ฐํ™”ํ•˜๋Š” ๊ณผ์ •์„ ๊ฒฝํ—˜ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง ๋ฐ ๋Œ€์‹œ๋ณด๋“œ ์„ค๊ณ„ ์—ญ๋Ÿ‰์„ ๊ฐ•ํ™”ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ•ญ๊ณต ์‚ฐ์—…์˜ ์ค‘์š”์„ฑ: ํ•ญ๊ณต๊ธฐ์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ธฐ์ˆ ์€ ํ•ญ๊ณต ์šดํ•ญ์˜ ์•ˆ์ „์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•ญ๊ณต ์‚ฐ์—…์—์„œ ๋ฐ์ดํ„ฐ ํ™œ์šฉ์˜ ๊ฐ€๋Šฅ์„ฑ์„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.
  3. ์‚ฌ์šฉ์ž ์ค‘์‹ฌ์˜ ๋Œ€์‹œ๋ณด๋“œ ๊ฐœ๋ฐœ: ๊ณตํ•ญ ๊ด€๋ฆฌ์ž, ํ•ญ๊ณต ๊ด€์ œ์‚ฌ, ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๋“ฑ ๋‹ค์–‘ํ•œ ์ดํ•ด๊ด€๊ณ„์ž์—๊ฒŒ ํ•„์š”ํ•œ ์ง๊ด€์ ์ด๊ณ  ์œ ์šฉํ•œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์„ค๊ณ„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ™œ์šฉ์˜ ์‹ค์งˆ์ ์ธ ์‚ฌ๋ก€๋ฅผ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

2. ํ”„๋กœ์ ํŠธ ์ตœ์ข… ๋ชฉํ‘œ

  1. ์‹ค์‹œ๊ฐ„ ๋น„ํ–‰ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์‹œ๊ฐํ™”

    OpenSky API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ „ ์„ธ๊ณ„ ๋น„ํ–‰๊ธฐ์˜ ์‹ค์‹œ๊ฐ„ ์œ„์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ  ์ด๋ฅผ ์ง๊ด€์ ์ธ ์ง€๋„ ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋Œ€์‹œ๋ณด๋“œ์— ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  2. ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ์š”๊ตฌ๋ฅผ ๋ฐ˜์˜ํ•œ ๋Œ€์‹œ๋ณด๋“œ ์„ค๊ณ„

    ๊ณตํ•ญ ๊ด€๋ฆฌ์ž, ํ•ญ๊ณต ๊ด€์ œ์‚ฌ ๋“ฑ ๋‹ค์–‘ํ•œ ์ดํ•ด๊ด€๊ณ„์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์œ ์šฉํ•œ ์ •๋ณด์™€ ๋ถ„์„ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

  3. ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•

    ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์น˜ํ˜•ํƒœ๋กœ ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ €์žฅ์— ๋งž์ถค์ธ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋Œ€์‹œ๋ณด๋“œ์˜ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

  4. ํ•ญ๊ณต ๋ฐ์ดํ„ฐ ํ™œ์šฉ ๊ฐ€๋Šฅ์„ฑ ์ œ์‹œ

    ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ํ•ญ๊ณต ๋ฐ์ดํ„ฐ์˜ ํ™œ์šฉ ๊ฐ€๋Šฅ์„ฑ๊ณผ ์ž ์žฌ์  ๊ฐ€์น˜๋ฅผ ์ œ์‹œํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์˜์‚ฌ๊ฒฐ์ • ๋ฐ ์„œ๋น„์Šค ๊ฐœ์„ ์— ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค.

3. ํ™œ์šฉ ๊ธฐ์ˆ  ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ

์นดํ…Œ๊ณ ๋ฆฌ ๊ธฐ์ˆ /๋„๊ตฌ
๊ฐœ๋ฐœ ์–ธ์–ด Python3
ํ˜‘์—… ํˆด Slack, Zep
๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ Request, RestAPI (OpenSky API)
๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ/๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค PostgreSQL, Snowflake
๋ฐ์ดํ„ฐ ETL Airflow
์ธํ”„๋ผ AWS (EC2)
๋Œ€์‹œ๋ณด๋“œ Tableau

4. ํ”„๋กœ์ ํŠธ ๋‚ด์šฉ

๐Ÿ—๏ธ Infra

bibibig_archi_tokyo

๐Ÿ›ค๏ธ Data Pipeline

์ „์ฒด์ ์ธ ๋ฐ์ดํ„ฐ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. OpenSky REST API์—์„œ ์ „์„ธ๊ณ„ ํ•ญ๊ณต ์ •๋ณด ๋ฐ์ดํ„ฐ๋ฅผ ํฌ๋กค๋ง.
  2. ๋ฐ์ดํ„ฐ๋ฅผ Snowflake๋กœ ์ฝ์–ด์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชฉ์ ์— ๋งž๋Š” ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ฐ ์—…๋ฐ์ดํŠธ.
  3. Airflow๋ฅผ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•˜๋ฉฐ, EC2 ์œ„์— Docker๋ฅผ ์ƒ์„ฑ
  4. Airflow DAG๋ฅผ 5๋ถ„, 1์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋“ฑ์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ ์žฌ
  5. Snowflake์™€ Tableau๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๋Œ€์‹œ๋ณด๋“œ ์‹œ๊ฐํ™” ๋ฐ ๋ถ„์„

๐Ÿ’ฝ Data

1. ERD

แ„‡แ…ตแ„‡แ…ตแ„‡แ…ตแ†จ_ERD

2. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

  • ์š”์•ฝ
Table Type Table Name Comment Source
FACT AIRPLANE_LOCATION ํ•ญ๊ณต๊ธฐ์˜ ์‹ค์‹œ๊ฐ„ ์œ„์น˜ ๊ฐ’(5๋ถ„ ๋‹จ์œ„ ๋ˆ„์  ์ ์žฌ) OpenSky REST API
FACT AIRPLANE_NOW_LOCATION ํ•ญ๊ณต๊ธฐ์˜ ์‹ค์‹œ๊ฐ„ ์ตœ์‹  ์œ„์น˜ ๊ฐ’ OpenSky REST API
FACT AIRPLANE_DEPARTURE_ARRIVAL ์กฐํšŒ ์‹œ๊ฐ„์— ํ•ด๋‹นํ•˜๋Š” ํ•ญ๊ณต๊ธฐ์˜ ์ถœ๋„์ฐฉ ์ •๋ณด OpenSky REST API
DIM AIRPORT_LOCATION IATA, ICAO ์ฝ”๋“œ์™€ ์œ„/๊ฒฝ๋„ ๊ฐ’์„ ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ด๋ธ” github/ip2location/ip2location-iata-icao
DIM AIRPORT_INFO IATA, ICAO ์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š” ๊ณตํ•ญ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ๊ตญํ† ๊ตํ†ต๋ถ€_์„ธ๊ณ„๊ณตํ•ญ_์ •๋ณด(๊ณต๊ณต๋ฐ์ดํ„ฐ) https://www.data.go.kr/data/3051587/fileData.do?recommendDataYn=Y
  • (FACT) AIRPLANE_LOCATION, AIRPLANE_NOW_LOCATION
    • Airflow Dag (5๋ถ„ ๊ฐ„๊ฒฉ)์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌ
    • ์ฝ”๋“œ
    • Dag ๊ตฌ์„ฑ
      • OpenSkyAPI์— /states/all์„ ์š”์ฒญ
      • Snowflake Conn์„ ์ด์šฉํ•ด INSERT ๋ฌธ์„ ์ž‘์„ฑ, excutemany๋กœ ํ•œ๋ฒˆ์— ์ ์žฌ
      • AIRPLANE_NOW_LOCATION ํ…Œ์ด๋ธ”์€ TRUNCATE TABLE์„ ํ†ตํ•ด ํ…Œ์ด๋ธ”์„ ๋น„์šด ๋’ค ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋งŒ ์ ์žฌ
  • (FACT) AIRPLANE_DEPARTURE_ARRIVAL
    • Airflow Dag (1์‹œ๊ฐ„ ๊ฐ„๊ฒฉ)์„ ํ†ตํ•ด (ํ˜„์žฌ๋กœ๋ถ€ํ„ฐ 25์‹œ๊ฐ„ ~ 24์‹œ๊ฐ„ ์ „) ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌ
      • AIRPLANE_DEPARTURE_ARRIVAL ๋ฐ์ดํ„ฐ๋Š” Opensky์ธก์—์„œ ์ผ ๋ฐฐ์น˜๋กœ ์ ์žฌ๋˜๊ณ  ์žˆ์–ด, 24์‹œ๊ฐ„ ์ด์ „ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Œ.
    • ์ฝ”๋“œ
    • Dag ๊ตฌ์„ฑ
      • OpenSkyAPI์— /api/flights/all์„ ์š”์ฒญ
      • Snowflake Conn์„ ์ด์šฉํ•ด INSERT ๋ฌธ์„ ์ž‘์„ฑ, excutemany๋กœ ํ•œ๋ฒˆ์— ์ ์žฌ
  • (DIM) AIRPORT_LOCATION, AIRPORT_INFO
    • Snowflake์— CSV๋ฅผ ํ†ตํ•œ 1ํšŒ์„ฑ ์ ์žฌ ์‹ค์‹œ

๐Ÿ“‹ Dashboard

  • ์ตœ๊ทผ 1๊ฐœ์›” ๊ฐ„ ์ „์„ธ๊ณ„ ํ•ญ๊ณต ๋Œ€์‹œ๋ณด๋“œ แ„Žแ…ฌแ„€แ…ณแ†ซ1แ„€แ…ขแ„‹แ…ฏแ†ฏแ„€แ…กแ†ซ_แ„Œแ…ฅแ†ซแ„‰แ…ฆแ„€แ…จแ„’แ…กแ†ผแ„€แ…ฉแ†ผแ„ƒแ…ขแ„‰แ…ตแ„‡แ…ฉแ„ƒแ…ณ

  • ์‹ค์‹œ๊ฐ„ ๋น„ํ–‰ ๋ชจ๋‹ˆํ„ฐ๋ง แ„‰แ…ตแ†ฏแ„‰แ…ตแ„€แ…กแ†ซแ„‡แ…ตแ„’แ…ขแ†ผแ„†แ…ฉแ„‚แ…ตแ„แ…ฅแ„…แ…ตแ†ผ

  • ์‹ค์‹œ๊ฐ„ ๋น„ํ–‰๊ธฐ ์œ„์น˜ ์ •๋ณด Chart

  • แ„‰แ…ตแ†ฏแ„‰แ…ตแ„€แ…กแ†ซ_แ„‡แ…ตแ„’แ…ขแ†ผแ„€แ…ต_แ„‹แ…ฑแ„Žแ…ตแ„Œแ…ฅแ†ผแ„‡แ…ฉ_แ„Žแ…กแ„แ…ณ
  • ํ˜„ ์‹œ๊ฐ ๋น„ํ–‰ ์ค‘์ธ ๋น„ํ–‰๊ธฐ์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ์ง€๋„์— ํ‘œ์‹œ

  • SPI๋ฅผ ํ™œ์šฉํ•ด ํŠน์ˆ˜ ๋ชฉ์  ํ•ญ๊ณต๊ธฐ ์—ฌ๋ถ€๋ฅผ ์ƒ‰๊น”๋กœ ๊ตฌ๋ถ„ํ•ด ํ‘œ์‹œ

    • ์ฃผํ™ฉ์ƒ‰ : ํŠน์ˆ˜ ๋ชฉ์  ํ•ญ๊ณต๊ธฐ
    • ํŒŒ๋ž€์ƒ‰ : ์ผ๋ฐ˜ ํ•ญ๊ณต๊ธฐ
    Dimension ํ•ญ๊ณต๊ธฐ
    X axis ๊ฒฝ๋„
    Y axis ์œ„๋„
  • ์‹ค์‹œ๊ฐ„ ๋…ธ์„  ์ •๋ณด Chart

  • แ„‰แ…ตแ†ฏแ„‰แ…ตแ„€แ…กแ†ซ_แ„‚แ…ฉแ„‰แ…ฅแ†ซ_แ„Œแ…ฅแ†ผแ„‡แ…ฉ_แ„Žแ…กแ„แ…ณ
    • ์‹ค์‹œ๊ฐ„ ๋น„ํ–‰ ๊ฒฝ๋กœ๋Š” ๋น„ํ–‰ ์ค‘์ธ ํ•ญ๊ณต๊ธฐ์˜ ์ถœ๋ฐœ-๋„์ฐฉ ๊ณตํ•ญ ์œ„/๊ฒฝ๋„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ
    • ํ˜„ ์‹œ๊ฐ ๋น„ํ–‰ ์ค‘์ธ ๋น„ํ–‰๊ธฐ์˜ ํ•ญ๊ณต ๊ฒฝ๋กœ๋ฅผ Line Chart๋กœ ์‹œ๊ฐํ™”
    Line ๋น„ํ–‰๊ธฐ์˜ ๊ฒฝ๋กœ(์ถœ๋ฐœ-๋„์ฐฉ)
    X axis ๊ฒฝ๋„
    Y axis ์œ„๋„
  • ์‹ค์‹œ๊ฐ„ ๋น„ํ–‰ ๊ตญ๊ฐ€ ์ˆœ์œ„

    • ํ˜„ ์‹œ๊ฐ ๋น„ํ–‰ ์ค‘์ธ ๋น„ํ–‰๊ธฐ์˜ ๊ตญ๊ฐ€ ์ˆœ์œ„๋ฅผ ๋ช…๋„์™€ ํฌ๊ธฐ๋กœ ํ‘œํ˜„
    • ๊ตญ๊ฐ€ ์„ ํƒ์‹œ ๊ตญ๊ฐ€๋ช…, ๋น„ํ–‰ ์ˆ˜, ์ˆœ์œ„ ์ฐจ๋ก€๋กœ ์ •๋ณด ์ œ๊ณต
    • แ„‰แ…ตแ†ฏแ„‰แ…ตแ„€แ…กแ†ซ_แ„‡แ…ตแ„’แ…ขแ†ผ_แ„€แ…ฎแ†จแ„€แ…ก_แ„‰แ…ฎแ†ซแ„‹แ…ฑ
  • ์‹ค์‹œ๊ฐ„ ์ถœ๋„์ฐฉ ๊ณตํ•ญ ์ˆœ์œ„ TOP 20

    • ํ˜„ ์‹œ๊ฐ ๋น„ํ–‰ ์ค‘์ธ ๋น„ํ–‰๊ธฐ์˜ ์ถœ๋ฐœ/๋„์ฐฉ ๊ณตํ•ญ ์ˆœ์œ„๋ฅผ ๊ตญ๊ฐ€ ๊ธฐ์ค€์œผ๋กœ ๋‚˜์—ด
  • ๊ณตํ•ญ ์ถœ๋„์ฐฉ ์ •๋ณด

  • แ„€แ…ฉแ†ผแ„’แ…กแ†ผ_แ„Žแ…ฎแ†ฏแ„ƒแ…ฉแ„Žแ…กแ†จ_แ„Œแ…ฅแ†ผแ„‡แ…ฉ

    • ๊ณตํ•ญ ๋ณ„/๊ตญ์  ๋ณ„ ์ถœ๋„์ฐฉ ๋น„ํ–‰๊ธฐ ์ˆ˜

      • ํ•ด๋‹น ์‹œ๊ฐ๋Œ€์— ์ถœ๋„์ฐฉํ•œ ๋น„ํ–‰๊ธฐ์˜ ๊ณตํ•ญ/๊ตญ๊ฐ€ ํ‘œํ˜„
      Dimension ๊ณตํ•ญ / ๊ตญ๊ฐ€
      X axis ์‹œ๊ฐ„(์‹œ)
      Y axis Count
    • ์ถœ๋ฐœ/๋„์ฐฉ ๊ณตํ•ญ TOP 10

      • ์ถœ๋ฐœ/๋„์ฐฉ ๊ณตํ•ญ ์ˆœ์œ„๋ฅผ ๋ช…๋„์™€ ํฌ๊ธฐ๋กœ ํ‘œํ˜„
      • ๊ณตํ•ญ ์„ ํƒ์‹œ ์ˆœ์œ„, ๋น„ํ–‰ ์ˆ˜ ์ •๋ณด ์ œ๊ณต
      • แ„Žแ…ฎแ†ฏแ„‡แ…กแ†ฏ:แ„ƒแ…ฉแ„Žแ…กแ†จ_แ„€แ…ฉแ†ผแ„’แ…กแ†ผ_TOP10
    • ์ถœ๋ฐœ-๋„์ฐฉ ๊ณตํ•ญ ๋ณ„/๊ตญ๊ฐ€ ๋ณ„ ๋…ธ์„  ์ •๋ณด

      • ๋น„ํ–‰๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๋น„ํ–‰ํ•œ ๊ฒฝ๋กœ (๊ตญ๊ฐ€-๊ตญ๊ฐ€ / ๊ณตํ•ญ-๊ณตํ•ญ) ์ •๋ณด๋ฅผ ํ‘œํ˜„
      Dimension ๊ณตํ•ญ / ๊ตญ๊ฐ€
      X axis Count
      Y axis ์ถœ๋ฐœ ๊ณตํ•ญ - ๋„์ฐฉ ๊ณตํ•ญ
  • ๊ณตํ•ญ ํฌํ™”๋„

  • แ„€แ…ฉแ†ผแ„’แ…กแ†ผ แ„‘แ…ฉแ„’แ…ชแ„ƒแ…ฉ แ„แ…กแ†ทแ„Œแ…ต แ„†แ…ขแ†ธ

  • ์ตœ๊ทผ 1๊ฐœ์›” ๊ฐ„ ๋„์ฐฉ ๋น„ํ–‰๊ธฐ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ณตํ•ญ ๋ณ„ ํฌํ™”๋„ ํ‘œํ˜„

    • ๊ณตํ•ญ ์œ„์น˜ ์ •๋ณด ์ œ๊ณต
    • ํฌ๊ธฐ์— ๋”ฐ๋ผ ํฌํ™”๋„ ์ •๋„ ํ‘œํ˜„
  • ๊ตญ๊ฐ€ ๋น„ํ–‰ ์ •๋ณด

    • แ„€แ…ฎแ†จแ„€แ…กแ„‡แ…ตแ„’แ…ขแ†ผแ„Œแ…ฅแ†ผแ„‡แ…ฉ

    • ๋ถ„๊ธฐ ๋ณ„ ์ „์ฒด ๋น„ํ–‰ ์ˆ˜๋ฅผ ๊ตญ๊ฐ€ ๋ณ„๋กœ ํ‘œํ˜„

      • ๋น„ํ–‰ ์ˆ˜๋ฅผ ์ „์ฒด์ ์ธ ์›์˜ ํฌ๊ธฐ๋กœ ํ‘œํ˜„
    • แ„€แ…ฎแ†จแ„€แ…กแ„‡แ…งแ†ฏ_แ„‡แ…ฉแ„‹แ…ฒ_แ„€แ…ฉแ†ผแ„’แ…กแ†ผ_แ„€แ…ขแ„‰แ…ฎ

    • ๊ตญ๊ฐ€๋ณ„๋กœ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๊ณตํ•ญ ๊ฐœ์ˆ˜๋ฅผ ํ‘œํ˜„

      • ๊ตญ๊ฐ€ ํด๋ฆญ์‹œ ๊ณตํ•ญ ๊ฐœ์ˆ˜, ์ˆœ์œ„๋ฅผ ์ œ๊ณต

๐Ÿ—ฃ๏ธCowork Tools

  • Notion: ์ฝ”๋“œ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ํ˜‘์—…

      1. ๋งค์ผ ์˜ค์ „ 10:00 ์Šคํฌ๋Ÿผ ํšŒ์˜ ์ง„ํ–‰ํ•˜์—ฌ Daily to do ์ž‘์„ฑ ๋ฐ ์ง„ํ–‰ ์ƒํ™ฉ ๋ณด๊ณ 
      1. ํ”„๋กœ์ ํŠธ ์ผ์ • แ„‚แ…ฉแ„‰แ…งแ†ซ_แ„Œแ…ตแ†ซแ„’แ…ขแ†ผแ„‰แ…กแ†ผแ„’แ…ชแ†ผ
    • แ„‚แ…ฉแ„‰แ…งแ†ซ_แ„ƒแ…กแ†ฏแ„…แ…งแ†จ
      1. ์ฃผ์ œ ์„ ์ • ํšŒ์˜ แ„Œแ…ฎแ„Œแ…ฆแ„‰แ…ฅแ†ซแ„Œแ…ฅแ†ผแ„’แ…ฌแ„‹แ…ด_แ„‡แ…ตแ„‡แ…ตแ„‡แ…ตแ†จ
  • Slack: ํŒ€ ๋‚ด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

      1. ํŒ€์ฑ„๋„์—์„œ ๋น„๋™๊ธฐ์  ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜
      1. ํŒ€์ฑ„๋„ ์บ”๋ฒ„์Šค์—์„œ ํ•„์š”ํ•œ ๊ณต์œ  ์‚ฌํ•ญ ์ž‘์„ฑ แ„‰แ…ณแ†ฏแ„…แ…ขแ†จ_แ„แ…ตแ†ทแ„Žแ…ขแ„‚แ…ฅแ†ฏ
  • Slack: ํšŒ์˜ ์ฑ„๋„

  • แ„‡แ…ตแ„‡แ…ตแ„‡แ…ตแ†จ_แ„‰แ…ณแ†ฏแ„…แ…ขแ†จ_แ„€แ…กแ†ซแ„‹แ…ตแ„’แ…ฌแ„‹แ…ด

5. ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ

  1. ์‹ค์‹œ๊ฐ„ ๋น„ํ–‰ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์‹œ๊ฐํ™”
    • OpenSky API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „ ์„ธ๊ณ„ ๋น„ํ–‰๊ธฐ์˜ ์‹ค์‹œ๊ฐ„ ์œ„์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜์ง‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋น„ํ–‰๊ธฐ์˜ ํ˜„์žฌ ์œ„์น˜(์œ„๋„, ๊ฒฝ๋„), ๊ฒฝ๋กœ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ํƒœ๋ธ”๋กœ(Tableau)๋ฅผ ํ™œ์šฉํ•œ ์ง€๋„ ๊ธฐ๋ฐ˜ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋น„ํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ํ‘œํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  2. ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•
    • Apache Airflow๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ๋ณ€ํ™˜(ETL), ์ €์žฅ ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๊ณ  ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์น˜(batch) ์ฒ˜๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•˜๊ณ , ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด โ€˜Snowflakeโ€™๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์•ˆ์ •์ ์ธ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ์ €์žฅ ๊ณผ์ •์—์„œ์˜ ํŠธ๋žœ์žญ์…˜ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  3. ํ•ญ๊ณต ๋ฐ์ดํ„ฐ ํ™œ์šฉ ๊ฐ€๋Šฅ์„ฑ ๊ฒ€์ฆ
    • ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ์‹ค์‹œ๊ฐ„ ํ•ญ๊ณต ๋ฐ์ดํ„ฐ์˜ ํ™œ์šฉ ๊ฐ€๋Šฅ์„ฑ์„ ์ž…์ฆํ•˜๋ฉฐ, ๊ณตํ•ญ ์šด์˜ ์ตœ์ ํ™” ๋ฐ ํ•ญ๊ณต ์•ˆ์ „์„ฑ ํ–ฅ์ƒ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์˜์‚ฌ๊ฒฐ์ •์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์ œ์‹œํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์‹œ๊ฐํ™” ๊ฒฐ๊ณผ

  1. ์‹ค์‹œ๊ฐ„ ๋น„ํ–‰๊ธฐ ์œ„์น˜ ์ •๋ณด ์‹œ๊ฐํ™”
    • ์ „ ์„ธ๊ณ„ ํ•ญ๊ณต๊ธฐ์˜ ์‹ค์‹œ๊ฐ„ ์œ„๊ฒฝ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€๋„์— ์‹œ๊ฐํ™”ํ•˜์—ฌ, ํ˜„์žฌ ์šดํ•ญ ์ค‘์ธ ํ•ญ๊ณต๊ธฐ๋“ค์˜ ์œ„์น˜๋ฅผ ํ•œ๋ˆˆ์— ํ™•์ธ ๊ฐ€๋Šฅ.
  2. ๋น„ํ–‰๊ธฐ ํ•ญ๊ณต ๊ฒฝ๋กœ ์‹œ๊ฐํ™”
    • ํŠน์ • ํ•ญ๊ณตํŽธ์˜ ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ๋„์ฐฉ์ง€๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„.
  3. ๊ณตํ•ญ ์ถœ๋„์ฐฉ ๋น„ํ–‰ ์ •๋ณด ์‹œ๊ฐํ™”
    • ์ฃผ์š” ๊ณตํ•ญ์˜ ์ถœ๋ฐœ ๋ฐ ๋„์ฐฉ ํ•ญ๊ณตํŽธ ํ˜„ํ™ฉ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ณตํ•ญ๋ณ„ ํ˜ผ์žก๋„ ๋ฐ ์šด์˜ ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„.

6. ๊ฒฐ๋ก  ๋ฐ ํ–ฅํ›„ ๊ฐœ์„ ์‚ฌํ•ญ

๊ฒฐ๋ก 

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” OpenSky API๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ํ•ญ๊ณต ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ด๋ฅผ ๋Œ€์‹œ๋ณด๋“œ๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž์™€ ๊ณตํ•ญ ์šด์˜์ž์—๊ฒŒ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ๋น„ํ–‰๊ธฐ ์œ„์น˜ ์ •๋ณด, ํ•ญ๊ณต ๊ฒฝ๋กœ, ๊ณตํ•ญ ์ถœ๋„์ฐฉ ์ •๋ณด ๋“ฑ์„ ์ง๊ด€์ ์œผ๋กœ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํ•ญ๊ณต ์‚ฐ์—…์—์„œ ๋ฐ์ดํ„ฐ ํ™œ์šฉ์„ ํ†ตํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋„์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ๋ณธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ์ฒ˜๋ฆฌ, ์ €์žฅ, ์‹œ๊ฐํ™” ์ „๋ฐ˜์— ๊ฑธ์นœ ๊ธฐ์ˆ ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ํ™œ์šฉํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง์˜ ์‹ค๋ฌด์  ์—ญ๋Ÿ‰์„ ๊ฐ•ํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ๋œ ๋Œ€์‹œ๋ณด๋“œ๋Š” ์‹ค์‹œ๊ฐ„ ํ•ญ๊ณต ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ ํ•ญ๊ณต ์‚ฐ์—…์˜ ๋ฐ์ดํ„ฐ ํ™œ์šฉ ๊ฐ€๋Šฅ์„ฑ์„ ์ œ์‹œํ•˜๋ฉฐ, ๊ณตํ•ญ ์šด์˜๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํ–ฅํ›„ ๊ฐœ์„ ์‚ฌํ•ญ

  1. ํ•ญ๊ณต๊ถŒ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์ฝ”๋“œ ๊ณ ๋„ํ™”
    • a. ํ˜„์žฌ Github ๋‚ด GetTicketPriceData.py์™€, dag_get_airticket_price.py๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ
    • b. ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ๊ฐ€์žฅ ๋งŽ์ด ์ด์šฉํ•˜๋Š” ํ•ญ๊ณต ๋…ธ์„  100๊ฐœ์˜ ํ‰๊ท  ๊ตฌ๋งค ๊ฐ€๊ฒฉ์„ ๊ตฌํ•˜๊ณ ์ž ํ•˜์˜€์œผ๋‚˜, ๋„ค์ด๋ฒ„ ํ•ญ๊ณต๊ถŒ ํฌ๋กค๋ง ์‹œ 150๊ฑด ์ด์ƒ์˜ POST ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์•ฝ 1์‹œ๊ฐ„์˜ Time Out์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์ ์„ ํ™•์ธํ•˜์˜€์Œ (503 ์—๋Ÿฌ ๋ฐ˜ํ™˜, VPN ๋“ฑ์œผ๋กœ IP ์ „ํ™˜ ์‹œ ์ •์ƒ ๊ฐ’ ๋ฐ˜ํ™˜)
    • c. ๊ณ ๋„ํ™” ๋‹จ๊ณ„์—์„œ ์ด์šฉ ๊ฐ€๋Šฅํ•œ IP ๋Œ€์—ญ๋Œ€๋ฅผ ๋‹ค์ˆ˜ ํ™•๋ณดํ•˜์—ฌ, 503 ์—๋Ÿฌ ๋ฐ˜ํ™˜์‹œ ์ƒˆ๋กœ์šด IP๋ฅผ ํ†ตํ•ด ์š”์ฒญํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋Œ€์‘ ์ฝ”๋“œ ์ž‘์„ฑ ํ•„์š”
  2. ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Spark ํด๋Ÿฌ์Šคํ„ฐ ๋„์ž…
    • ํ˜„์žฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ pandas๋กœ ์ด๋ฃจ์–ด์กŒ์œผ๋ฉฐ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Apache Spark ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ๋ถ„์‚ฐํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ณ , ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์ž‘์—…์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ ๋„์ž…์œผ๋กœ ๋น„์šฉ ํšจ์œจํ™”
    • Amazon S3๋ฅผ ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ๋กœ ํ™œ์šฉํ•˜์—ฌ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์ด๊ณ  ๋น„์šฉ ํšจ๊ณผ์ ์œผ๋กœ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • S3์˜ ํ™•์žฅ์„ฑ์„ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์ €์žฅ์†Œ ๋ฌธ์ œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. SQL ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์กฐํšŒ๋ฅผ ์œ„ํ•œ Athena ํ™œ์šฉ
    • S3์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ Amazon Athena๋ฅผ ํ†ตํ•ด SQL ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ๋กœ ๋ถ„์„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ฐ ํƒ์ƒ‰์„ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด ๋Œ€์‹œ๋ณด๋“œ์™€ ์—ฐ๋™ํ•˜๊ฑฐ๋‚˜ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์ž‘์—…์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ์ตœ์ ํ™” ๋ฐฉํ–ฅ
    • Spark ํด๋Ÿฌ์Šคํ„ฐ์™€ S3 ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ๋ฅผ ์—ฐ๊ณ„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ์ฒ˜๋ฆฌ, ์ €์žฅ ๋ฐ ์กฐํšŒ ๊ณผ์ •์„ ๋”์šฑ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Spark์˜ ๊ณ ๊ธ‰ ์—ฐ์‚ฐ ์ตœ์ ํ™” ๋ฐ ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…”๋‹ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๋†’์ด๊ณ , ๋ถ„์„ ์‹œ๊ฐ„ ๋‹จ์ถ• ๋ฐ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ๋ฐ์ดํ„ฐ ์ •ํ™•๋„์™€ ๋‹ค์–‘์„ฑ ๊ฐœ์„ 
    • OpenSky API ์™ธ์—๋„ ํ•ญ๊ณต์‚ฌ API์™€ ๊ฐ™์€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ •ํ™•์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ ์ •์ œ๋ฅผ ํ†ตํ•ด ๋ณด๋‹ค ๊นจ๋—ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  7. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋ฐ ๊ธฐ๋Šฅ ๊ฐ•ํ™”
    • ๋Œ€์‹œ๋ณด๋“œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋”์šฑ ์ง๊ด€์ ์ด๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์œผ๋กœ ๊ฐœ์„ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ™œ์šฉ์˜ ์ ‘๊ทผ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
    • ๋ชจ๋ฐ”์ผ ๋ฐ ํƒœ๋ธ”๋ฆฟ ํ™˜๊ฒฝ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐ˜์‘ํ˜• UI๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.
    • ํ•ญ๊ณต ์ง€์—ฐ ์˜ˆ์ธก, ํ˜ผ์žก ๊ณตํ•ญ ๊ฒฝ๊ณ , ํšจ์œจ์  ๊ฒฝ๋กœ ์ถ”์ฒœ ๋“ฑ์˜ ๊ณ ๊ธ‰ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์„œ๋น„์Šค์˜ ๊ฐ€์น˜๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

7. ํ”„๋กœ์ ํŠธ ์‹คํ–‰ ๋ฐฉ๋ฒ•

์ ์žฌ ์ค€๋น„

OpenSky ์›น ์‚ฌ์ดํŠธ ํšŒ์› ๊ฐ€์ž… - https://opensky-network.org/

Snowflake ๊ณ„์ • ์ค€๋น„

๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ ๋ณต์ œ

git clone https://github.com/bibibig-org/airbig.git

airflow_variable.env ํŒŒ์ผ ์ˆ˜์ •

AIRFLOW_VAR_OPENSKY_ID="YourOpenSkyID"
AIRFLOW_VAR_OPENSKY_PW="YourOpenSkyPW"
AIRFLOW_VAR_SNOWFLAKE_ACCOUNT="YourSnowflakeAccount"
AIRFLOW_VAR_SNOWFLAKE_ID="YourSnowflakeID"
AIRFLOW_VAR_SNOWFLAKE_PW="YourSnowflakePW"
AIRFLOW_VAR_SNOWFLAKE_DATABASE="BIBIBIG"
AIRFLOW_VAR_SNOWFLAKE_SCHEMA="BRONZE_STATE_DATA"

snowflake_table_schema ํด๋” ์•„๋ž˜ SQL ์‹คํ–‰ (Snowflake Table ์ƒ์„ฑ, DDL)

  • ์‹คํ–‰ ์ˆœ์„œ
    1. INIT_DATABASE_SCHEMA.sql ๊ตฌ๋ฌธ ์‹คํ–‰
    2. ๋‚˜๋จธ์ง€ .sql ํŒŒ์ผ ์‹คํ–‰
    3. AIRPLANE_LOCATION_DATA.csv, AIRPORT_INFO_DATA.csv๋Š” snowflake์— ๋™์ผํ•œ ๋ช…์นญ์„ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ์ ์žฌ

ํ”„๋กœ์ ํŠธ ์‹คํ–‰

docker compose up

ํ™œ์„ฑํ™” ํ•  Dag ์„ ํƒ

  • upload_location_data_sql_insert : ์‹ค์‹œ๊ฐ„ ํ•ญ๊ณต๊ธฐ ์œ„์น˜๋ฅผ ์—…๋กœ๋“œ (Snowflake์— ์ง์ ‘ Insert)
  • upload_location_data : ์‹ค์‹œ๊ฐ„ ํ•ญ๊ณต๊ธฐ ์œ„์น˜๋ฅผ ์—…๋กœ๋“œ (csv ์—…๋กœ๋“œ)
  • opensky_flights_etl_dept_arrival_to_snowflake : ํ•ญ๊ณต๊ธฐ์˜ ์ตœ๊ทผ 1์‹œ๊ฐ„ ๋‚ด ์ถœ/๋„์ฐฉ ์ •๋ณด ์—…๋กœ๋“œ (Snowflake์— ์ง์ ‘ Insert)
  • upload_ticket_price_naver : ์ตœ๋‹ค ์ด์šฉ ๊ฒฝ๋กœ์˜ ๋„ค์ด๋ฒ„ ํ•ญ๊ณต๊ธฐ ๊ฐ€๊ฒฉ ์กฐํšŒ (์†Œ๋Ÿ‰ ์กฐํšŒ ๊ฐ€๋Šฅ)

Tableau๋‚˜ ์™ธ๋ถ€ BI๋กœ Snowflake๋ฅผ ์—ฐ๊ฒฐ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published