ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Quantify Your Life: Building a High-Performance Health Data Lake with InfluxDB, Grafana, and Python ๐Ÿš€
Dev.toDev.to
Database

Python ETL ํŒŒ์ดํ”„๋ผ์ธ๊ณผ InfluxDB ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ถ„์‚ฐ๋œ ๊ฑด๊ฐ• ์•ฑ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ผ ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ๋กœ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค.

Quantify Your Life: Building a High-Performance Health Data Lake with InfluxDB, Grafana, and Python ๐Ÿš€

wellallyTech2026๋…„ 3์›” 30์ผ5๋ถ„intermediate

Context

Apple Watch, Strava, MyFitnessPal ๋“ฑ ๊ฑด๊ฐ• ์•ฑ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ ํ”Œ๋žซํผ์— ๊ณ ๋ฆฝ๋˜์–ด ์žˆ์–ด ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„์ด ๋ถˆ๊ฐ€๋Šฅํ•œ็Šถๅ†ต์ด๋‹ค. ๋‹ค๋Ÿ‰์˜ ๊ฐœ์ธ ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ๊ฐ€ XML, JSON, CSV ๋“ฑ ์ด๊ธฐ์ข… ํ˜•์‹์œผ๋กœ ๋ถ„์‚ฐ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.

Technical Solution

  • Docker Compose๋กœ InfluxDB 2.7๊ณผ Grafana ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ฉ ์‹คํ–‰็Žฏๅขƒไธญ ๊ตฌ์ถ•ํ•œ๋‹ค
  • Python influxdb-client ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ Strava JSON ๋ฐ์ดํ„ฐ๋ฅผ InfluxDB Point ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ ์žฌํ•œ๋‹ค
  • Apple Health XML, Strava JSON, MyFitnessPal ๋ฐ์ดํ„ฐ๋ฅผ ์ •๊ทœํ™”ํ•˜์—ฌ unified time-series ํ˜•์‹์œผ๋กœ ์ €์žฅํ•œ๋‹ค
  • Grafana Flux ์ฟผ๋ฆฌ์–ธ์–ด๋กœ InfluxDB ๋ฐ์ดํ„ฐ ์›๋ณธ ๆŸฅ่ฏขํ•˜์—ฌ ์‹œ๊ณ„์—ด ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค

Impact

๊ฑด๊ฐ• ์ง€ํ‘œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ผ ์†Œ์Šค๋กœ ํ†ตํ•ฉํ•˜์—ฌ ์•ฑ ๊ฐ„ ์ „ํ™˜ ์—†์ด ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„ ๊ฐ€๋Šฅ

Key Takeaway

์‹œ๊ณ„์—ด ํŠน์„ฑ์„ ๊ฐ€์ง„ ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ๋Š” InfluxDB์˜ measurement-tag-field ๊ตฌ์กฐ๋กœ ์ •๊ทœํ™”ํ•˜๋ฉด ์ด๊ธฐ์ข… ์†Œ์Šค๋ฅผ unifiedํ•˜๊ฒŒ ๆŸฅ่ฏขํ•  ์ˆ˜ ์žˆ๋‹ค


๋ถ„์‚ฐ๋œ ๊ฑด๊ฐ• ์•ฑ ๋ฐ์ดํ„ฐ ํ™˜๊ฒฝ์—์„œ Python ETL ์Šคํฌ๋ฆฝํŠธ๋กœ Strava/Apple Health/MyFitnessPal ๋ฐ์ดํ„ฐ๋ฅผ InfluxDB๋กœ ์ ์žฌ ์‹œ ์ด๊ธฐ์ข… ํฌ๋งท์„ unified time-series๋กœ ์ •๊ทœํ™”ํ•˜์—ฌ Grafana์—์„œ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ

์›๋ฌธ ์ฝ๊ธฐ