주요 컨텐츠로 이동

Apple HealthKit과 Databricks를 사용하여 건강 및 피트니스 목표를 추적하세요.

빅데이터를 활용한 건강 분석

Track health and fitness goals with Apple Healthkit & Databricks

Published: July 23, 2025

인사이트1분 이내 소요

작성자: Jesus Rodriguez

데이터는 우리의 삶, 특히 건강을 개선하는 데 강력한 도구가 될 수 있습니다. 피트니스 트래커, 건강 앱, 기타 모니터링 장비의 확산으로 이제 건강 데이터를 수집하고 분석하는 것이 그 어느 때보다 쉬워졌습니다. 이 데이터를 추적하고 분석함으로써 우리는 건강과 웰빙에 대한 중요한 인사이트를 얻을 수 있으며, 이를 바탕으로 보다 현명한 생활 습관과 결정을 내릴 수 있습니다.

 

건강 기기를 통해 모든 건강 지표를 한 곳에서 추적할 수 있게 되면서, 자신의 건강 상태를 쉽게 모니터링하고 정보에 기반한 결정을 내릴 수 있습니다. 이 블로그에서는 여러분이 가지고 있는 기기와 데이터를 어떻게 더 의미 있는 인사이트로 전환할 수 있는지 소개합니다. 본 예시는 Apple HealthKit을 활용해 고급 분석 및 머신러닝을 수행하고, 주요 KPI 및 지표를 시각화한 대시보드를 구축하는 과정을 보여줍니다. 주간 및 월간 건강 성과를 추적하여 나의 건강 목표 달성을 지원하는 것이 목표입니다. “You Are What You Measure”라는 블로그 글에서 영감을 받아, 나의 건강을 측정하고 개선해 나가고자 합니다. (GitHub 레포도 있으니 함께 해보세요!)

데이터 기반 피트니스 여정의 기반

우리가 손쉽게 접근할 수 있는 데이터의 양이 폭발적으로 증가하고, 데이터를 수집·변환·분석·시각화할 수 있는 도구가 넘쳐나는 오늘날, 오히려 압도당하기 쉽습니다. 레이크하우스 아키텍처는 모든 기능을 하나의 플랫폼에서 제공하여 이러한 데이터 활용을 단순화해줍니다. Delta Lake를 기반으로 하는 Databricks Lakehouse Platform은 데이터 웨어하우스 수준의 기능(예: ACID 트랜잭션, 거버넌스, 성능 등)을 데이터 레이크 수준의 유연성과 비용 효율로 제공합니다.

이 분석과 대시보드를 구동하기 위해 Apple HealthKit을 활용하며, HealthKit은 뛰어난 트래킹 기능 외에도 iOS 생태계 내 제3자 앱과의 데이터 공유 기능도 제공합니다. 이를 한 단계 더 발전시켜 우리는 레이크하우스 플랫폼 전체 기능을 활용할 것입니다. Apache Spark, Databricks SQL, MLflow의 조합을 통해 고급 인사이트, 집계, KPI 추적을 수행하며, 이를 통해 2023년 동안 스스로 건강 관리를 충실히 이행할 수 있도록 지원합니다. 이 블로그에서는 Delta Live Tables를 이용한 스트리밍 ETL 오케스트레이션, 메타데이터 기반 ETL 프레임워크를 통한 데이터 변환, 그리고 KPI 기반의 대시보드를 구성해 데이터 기반 행동을 유도하는 방법을 단계별로 설명합니다.

이후 블로그에서는 다음 내용을 다룰 예정입니다:

  • 건강 데이터를 내보내는 방법

  • Delta Live Tables로 스트리밍 ETL 오케스트레이션

  • 메타데이터 기반 ETL 프레임워크로 데이터 분류 및 변환

  • KPI 기반 대시보드 구성

  • 데이터 기반 행동 실천하기

준비

첫 단계는 데이터를 확보하는 것입니다. Apple HealthKit 데이터를 내보내는 방법은 여러 가지가 있으며, API를 활용해 직접 통합하거나 서드파티 앱을 사용할 수도 있습니다. 이번 예시에서는 HealthKit 공식 웹사이트에 소개된 방식대로 앱에서 직접 데이터를 내보내는 방법을 사용합니다:

  1. Health 앱에 걸음 수, 심박수 등 관련 데이터가 존재하는지 확인

  2. 건강 데이터를 내보내고 원하는 클라우드 저장소(Google Drive 등)에 업로드

  3. export.zip 파일이 Google Drive에 업로드되었는지 확인

상위 아키텍처 개요

아래 그림 1에 나타난 것처럼, 데이터는 시각화되기 전까지 여러 단계를 거치게 됩니다. 객체 스토리지에 데이터가 업로드되면, 메달리온 프레임워크를 통해 처리됩니다. 여기서는 원시 XML 데이터(브론즈)를 다양한 데이터셋으로 분해(실버)하고, 분 단위, 시간 단위, 일 단위로 KPI를 집계해 서빙 계층(골드)에서 활용 가능한 형태로 제공합니다.

Track health and fitness goals with Apple Healthkit & Databricks
Figure 1

데이터 검증 및 공유

데이터가 준비되었는지 확인하려면, Google Drive(또는 데이터를 업로드한 저장소)에 로그인하여 export.zip 파일이 있는지 확인하세요. 파일을 찾은 후, 링크 공유 설정이 “링크가 있는 모든 사용자에게 공개”로 되어 있는지 확인하고, 해당 링크를 복사해 이후 단계에서 사용하세요.

데이터 수집 및 전처리

데이터가 준비되었으니, 이제 Databricks에서 접근, 거버넌스, 적재를 위한 노트북 환경을 구성할 차례입니다. 먼저 필요한 라이브러리를 설치 및 import 하고, 이후 단계에서 반복 사용할 변수들을 설정합니다.

데이터 다운로드에는 Google Drive에서 파일을 효율적으로 다운로드할 수 있는 gDown 라이브러리를 사용합니다. 공유 링크와 목적 폴더를 설정하고 .zip 파일을 /tmp 디렉터리로 압축 해제하면 됩니다.

export.zip의 내용을 탐색해보면 다양한 데이터셋이 포함되어 있습니다. 여기에는 운동 경로(.gpx), 심전도(.csv), HealthKit 기록(.xml) 등이 있으며, 이번 예제에서는 대부분의 건강 지표가 기록되어 있는 export.xml에 집중합니다. 해당 파일에 수백만 개의 레코드가 포함되어 있을 수 있으므로, Apache Spark 드라이버 크기를 조정해야 할 수 있습니다. 자세한 내용은 GitHub를 참조하세요.

이어지는 분석을 위해 Bamboolib을 사용해 데이터프레임을 빠르게 탐색합니다. 이 툴은 저코드/노코드 방식으로 데이터 탐색, 전처리, 타입 변경, 집계 작업을 수행할 수 있어 데이터 품질 문제를 사전에 파악하는 데 유용합니다.

export.xml에는 55개 이상의 데이터 유형과 380만 개 이상의 레코드가 포함되어 있으며, value 컬럼의 null 값도 거의 없어 상당히 정제된 데이터셋임을 확인할 수 있습니다.

Track health and fitness goals with Apple Healthkit & Databricks

Track health and fitness goals with Apple Healthkit & Databricks
Figure 2

이제 데이터의 구조와 관계를 이해했으니, 이제 재미있는 부분으로 넘어가겠습니다!

Lakehouse + 메달리온 프레임워크로 GOLD를 향해!

XML 구조는 단순해 보이지만 실제로는 55개 이상의 건강 지표가 하나의 XML에 포함된 복잡한 구조입니다. 이를 Lakehouse 환경에서 메달리온(브론즈, 실버, 골드) 프레임워크를 적용하여 데이터 과학 및 BI 팀이 사용할 수 있도록 정제, 가공합니다.

Delta 형식으로 데이터를 적재하면 원시 데이터를 유지하면서도 다양한 이점을 누릴 수 있습니다.

ETL 과정에서는 Delta Live Tables(DLT)를 사용하여 데이터 처리 과정을 자동화하고 단순화합니다. DLT는 체크포인트 처리, 자동 확장, 데이터 유효성 검증(expectations), 파이프라인 가시성 확보 등 수많은 기능을 선언형으로 설정할 수 있어 엔지니어링 리소스를 절감합니다.

데이터 탐색 및 처리

이후의 분석은 페이로드 내 데이터를 정의하는 type 컬럼을 기준으로 진행됩니다. 예를 들어 HeartRate 타입은 ActiveEnergyBurned 타입과는 다른 지표들을 추적합니다. 아래에서 볼 수 있듯이, 우리의 XML 파일에는 Apple HealthKit이 추적하는 55개 이상의 지표가 포함되어 있습니다 (적어도 제 경우에는 그렇습니다 – 사용 환경에 따라 다를 수 있습니다).

각 소스는 Apple HealthKit이 추적하는 고유한 건강 지표를 나타내며, 이는 전체적인 건강 상태의 다양한 측면을 반영합니다. 예를 들어, 운동 시 환경 소음 수준(데시벨), 위도/경도, 심박수, 칼로리 소모 등의 지표가 포함됩니다. 이들은 고유한 측정 항목일 뿐 아니라, 운동 단위, 일 단위, 초 단위 등 서로 다른 시간 단위로 수집되어 매우 풍부한 데이터셋을 구성합니다.

정제 작업

파이프라인 전체에서 데이터 품질 문제를 추적하고 관리하는 것은 중요합니다. 앞서 탐색한 결과에 따르면 일부 값이 잘못 측정된 경우도 있어 데이터의 왜곡 가능성이 존재합니다 (예: 심박수가 200 이상??). 다행히도 DLT(Delta Live Tables)는 기대값(expectations)과 파이프라인 메트릭을 통해 이러한 데이터 품질 문제를 손쉽게 관리할 수 있습니다.

DLT의 expectation은 이벤트에 대해 기대하는 특정 조건입니다 (예: IS NOT NULL, x > 5 등). 이 조건에 따라 DLT는 여러 동작을 수행할 수 있습니다. 예를 들어, 단순 추적만 수행하는 dlt.expect, 조건에 맞지 않는 데이터를 제외하는 dlt.expect_or_drop, 조건 불만족 시 테이블/파이프라인 자체를 실패시키는 dlt.expect_or_fail 등이 있습니다. 더 자세한 정보는 관련 문서를 참조해 주세요.

메타데이터의 힘!

앞서 언급했듯이, 각 type은 건강에 대한 고유한 인사이트를 제공합니다. 55개 이상의 서로 다른 유형과 지표를 관리하는 것은 매우 복잡하며, 새로운 지표와 데이터 소스가 지속적으로 유입되기 때문에 더욱 어려워집니다. 이를 단순화하고 모듈화하기 위해 메타데이터 기반 프레임워크를 활용합니다.

다음 단계에서는 10개 이상의 고유한 데이터 소스를 개별 실버 테이블로 분리하고, 해당 테이블마다 필요한 컬럼과 전처리를 적용하여 ML 및 BI 활용이 가능한 구조로 가공합니다. 우리는 메타데이터 기반 프레임워크를 사용하여 브론즈 테이블에서 특정 값을 선택하고 이를 실버 테이블로 변환하는 작업을 간소화하고 가속화합니다.

이러한 변환은 브론즈 테이블의 type 컬럼을 기준으로 이루어지며, 이 예제에서는 일부 데이터 소스만을 추출하지만, 메타데이터 테이블은 새로운 데이터 소스가 추가될 때 쉽게 확장할 수 있도록 설계되어 있습니다. 이 메타데이터 테이블에는 source_name, table_name, columns, expectations, comments 등의 컬럼이 포함되어 있으며, 이는 DLT 프레임워크의 작동을 지시하는 역할을 합니

Track health and fitness goals with Apple Healthkit & Databricks
Figure 3

우리는 Python API에서 제공하는 반복(loop) 기능을 활용하여 메타데이터 테이블을 DLT(Databricks Live Tables) 파이프라인에 통합합니다. SQL과 Python 기능을 혼합할 수 있다는 점에서 DLT는 개발과 변환 작업에 매우 강력한 프레임워크가 됩니다. Delta 테이블을 읽어들이며(데이터프레임으로 변환할 수 있는 Spark 지원 데이터라면 무엇이든 가능), table_iterator 함수를 사용해 실버 테이블에 필요한 메타데이터 변수들을 반복문을 통해 추출합니다.

Track health and fitness goals with Apple Healthkit & Databricks
Figure 4

이 짧은 코드 조각과 메타데이터 테이블을 통해 브론즈 테이블에서 데이터를 읽고, 10개 이상의 하위 실버 테이블로 추출 및 고유 컬럼을 제공할 수 있습니다. 이 과정은 "DLT_bronze2silver" 노트북에서 정의되어 있으며, 여기에는 자동 수집(autoloader) 및 메타데이터 기반 실버 테이블 변환이 포함되어 있습니다. 아래는 Apple HealthKit에서 제공되는 다양한 소스를 기반으로 생성된 DLT DAG 예시입니다.

Track health and fitness goals with Apple Healthkit & Databricks
Figure 5

그리고 깨끗한 데이터셋!

Track health and fitness goals with Apple Healthkit & Databricks
Figure 6

마지막으로, 여러 흥미로운 데이터셋을 결합합니다 — 이 예에서는 심박수 및 운동 관련 정보입니다. 이후에는 보조 지표(예: 심박수 영역)를 생성하고, 분 단위 및 일 단위의 집계를 수행하여 향후 분석을 더 빠르고 효율적으로 처리할 수 있도록 만듭니다. 이 작업은 저장소 내 'DLT_AppleHealth_iterator_Gold' 노트북에 정의되어 있습니다.

데이터가 준비되고 정제된 이후에는, 나의 건강 여정을 시각화하고 추적하기 위한 대시보드를 구성할 수 있습니다. 이 예시에서는 Databricks SQL 내 기능을 활용해 간단한 대시보드를 구축하였으며, 운동 시간, 심박수 변화, 운동 강도, 평균값, 단기 및 장기 트렌드 등 나의 목표 달성에 도움이 되는 핵심 성과 지표(KPI)를 추적할 수 있도록 했습니다. 물론 Power BI나 Tableau와 같은 다른 시각화 도구에 익숙하다면, Databricks는 기존 워크플로우와도 완전히 통합될 수 있습니다.

아래는 7일 및 30일 평균 기준으로 나뉘어진 관련 지표가 포함된 간단한 대시보드 예시입니다. KPI와 시간의 흐름을 한 눈에 볼 수 있어, 활동 프로그램을 계획하고 지속적으로 개선해 나가는 데 도움이 됩니다!

Track health and fitness goals with Apple Healthkit & Databricks
Figure 7

이처럼 풍부한 데이터셋을 바탕으로 머신러닝 분석도 가능합니다. 데이터 사이언티스트는 아니지만, 저는 AutoML의 내장 기능을 활용해 골드 및 실버 테이블 기반으로 체중 감량 예측 모델을 만들었습니다! AutoML은 직관적이고 쉽게 모델을 훈련하고, 하이퍼파라미터 튜닝을 자동화하며, MLflow와 통합하여 실험 추적 및 모델 서빙을 할 수 있도록 지원합니다.

Track health and fitness goals with Apple Healthkit & Databricks
Figure 8

마무리하며

이 실습을 통해 Databricks와 플랫폼의 다양한 강력한 기능에 대한 유용한 입문이 되었기를 바랍니다.

이제 여러분 차례입니다! 데이터를 활용하여 긍정적인 방향으로 행동을 변화시켜보세요. 직접 실험을 시작해보세요.

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요