
AURA 구축기: AWS Bedrock 기반의 서버리스 AI 기반 피트니스 엔진 (Part 1)
요약
AWS Bedrock을 활용하여 사용자의 생체 데이터(HRV, 수면, 부하 등)를 분석하고 맞춤형 운동 및 식단 계획을 생성하는 서버리스 AI 피트니스 엔진 AURA의 구축 과정을 다룹니다. 보안을 위해 클라이언트 측 자격 증명을 배제한 서버리스 프록시 아키텍처를 설계했습니다.
핵심 포인트
- AWS Bedrock 기반의 서버리스 AI 아키텍처 설계
- HRV, 수면, 훈련 부하 등 다각적 생체 데이터를 반영한 개인화 엔진
- Zero Client-Side Credentials 원칙을 통한 보안 강화
- React, TypeScript, Capacitor를 활용한 모바일 프론트엔드 구성
서론 (Introduction)
현재 대부분의 피트니스 앱들은 운동 및 식단 계획을 생성하기 위해 정적인 템플릿을 사용하고 있습니다.
이 앱들은 기본적인 입력값(나이, 체중, 키, 그리고 아마도 체지방률)만을 가져올 뿐, 생성된 계획을 향상시킬 수 있는 다른 파라미터들(HRV(심박 변이도), 수면, Strain(부하), 그리고 훈련을 위한 신체 준비 상태 등)은 무시합니다.
예를 들어:
앱은 당신에게 매일 2,500 칼로리를 섭취하라고 말하면서, 당신이 어젯밤 4시간밖에 자지 못했고, HRV가 35% 급락했으며, 중추 신경계(Central Nervous System)가 지쳐 있다는 사실은 완전히 무시합니다.
데이터를 기반으로 당신에게 맞춤화된 운동 및 식단 계획을 생성할 수 있는 피트니스 앱을 만들겠다는 아이디어가 떠올랐습니다.
아이디어는 점점 커졌고, 저의 앱인 AURA athlete coach가 모든 것을 위한 허브가 되는 것이 더 낫겠다고 생각했습니다.
당신은 다음과 같은 것들을 할 수 있습니다:
- 당신의 필요(체중 감량, 근육 증가 및 유지)에 따라 일수와 하루 식사 횟수를 포함한 운동 및 식단 계획 생성
- 당신의 경로 선택 (Hypertrophy(근비대), Conditioning(컨디셔닝), Powerbuilding(파워빌딩), Longevity(장수))
- 각 근육 그룹과 주간 훈련 상태에 대한 더 나은 가시성을 위해 운동을 추적하고 기록할 수 있는 Lifter engine
- 목표를 더 잘 추적하기 위해 매일 먹는 음식을 기록하거나 MyFitnessPal을 통해 동기화할 수 있는 Macro 기능
- 진행 상황을 더 잘 볼 수 있도록 실제 사진을 기록하여 변화를 확인할 수 있는 Progress 기능
- 당신에 대한 모든 데이터(Recovery(회복), Strain(부하), Sleep(수면), Calories(칼로리), Stress(스트레스), Spo2(혈중 산소 포화도), Training Load(훈련 부하), Muscle Volume Group(근육 볼륨 그룹), Fitness Age(신체 나이) 및 노화 속도, Activity(활동) 및 소모량)를 포함하는 Pulse 기능
- 후속 질문을 하고 사용자의 질문에 답변할 수 있는 AI Chat 접속
상위 수준 아키텍처 및 시퀀스 흐름 개요 (High-Level Architecture & Sequence Flow Overview)
AURA 백엔드의 핵심 가이드 원칙은 'Zero Client-Side Credentials(클라이언트 측 자격 증명 제로)'입니다. 모바일 앱은 데이터베이스 키, AWS 자격 증명 또는 LLM API 토큰을 보유하지 않습니다. 모든 것은 인증되고 속도 제한(rate-limited)이 적용된 서버리스 프록시(serverless proxy)를 통해 흐릅니다.
High Level Diagram (상위 수준 다이어그램):
기술 스택 개요:
Frontend Mobile (프론트엔드 모바일): React, TypeScript, Capacitor, Tailwind CSS (커스텀 다크 글래스모픽 (Dark Glassmorphic) 디자인 시스템).
Compute (컴퓨팅): Private VPC 내에서 Node.js를 실행하는 AWS Lambda.
Database (데이터베이스): 커넥션 풀링 (connection pooling)을 위해 Amazon RDS Proxy로 관리되는 Amazon RDS PostgreSQL.
AI Core (AI 코어): 복잡한 운동/식단 계획 생성을 위한 Amazon Nova Pro, 실시간 코칭 채팅을 위한 Amazon Nova Lite를 실행하는 AWS Bedrock. 아랍어의 경우 Bedrock Guardrails (가드레일) 및 Prompt Caching (프롬프트 캐싱) 기능이 활성화된 Qwen3.5 32B를 사용합니다.
Media & Assets (미디어 및 에셋): 운동 영상 및 사용자가 저장한 진행 사진을 위한 Amazon S3. 진행 사진의 경우 KMS로 암호화된 presigned URLs (사전 서명된 URL)를 사용합니다.
Deep Dive 1: AWS Bedrock을 활용한 서버리스 AI 오케스트레이션 (Serverless AI Orchestration)
예측 불가능한 지연 시간(latency)과 클라이언트 측 키 노출 위험이 있는 제3자 LLM API에 의존하는 대신, 모든 AI 작업을 AWS Bedrock을 통해 라우팅했습니다.
사용자 요구 사항에 따라 3가지 모델을 사용했습니다:
- AI 코치와의 실시간 메시지를 위한 Nova Lite
- 운동 및 식단 계획 생성을 위한 Nova Pro
- 이집트 아랍어(Egyptian Arabic)를 위한 Qwen 3.5 32B
-
엄격한 JSON 출력 계약 (Strict JSON Output Contracts) 강제
LLM은 느슨한 지침이 주어졌을 때 일관된 JSON을 반환하는 데 악명이 높습니다. 앱 충돌을 방지하기 위해, Lambda 함수는 엄격한 JSON 스키마 계약을 제공하고 결정론적인 사후 검증(post-validation) 단계를 실행합니다. -
방언 및 의료 가드레일 (Dialect & Medical Guardrails)
AURA는 지역 코칭 방언(예: 도시 이집트 아랍어)을 지원하고 건강 도메인에서 작동하기 때문에, 시스템 프롬프트에는 명시적인 가드레일이 필요합니다:
-
방언 부정 제약 (Dialect Negative Constraints): 모델이 방언을 혼용하는 것을 방지하기 위해, 시스템 프롬프트는 해당 지역 이외의 키워드를 명시적으로 금지합니다.
-
의료 범위 경계 (Medical Scope Boundaries): AI는 의료 의사가 아닌 운동 수행 능력 코치 (athletic performance coach)로 엄격하게 프로그래밍되었습니다. 만약 사용자가 급성 흉통이나 심각한 관절 부상과 같은 위험 신호(red-flag) 증상을 언급하면, 모델은 즉시 피트니스 조언을 중단하고 의료진의 도움을 받도록 안내합니다.
심층 분석 2: 생체 데이터 원격 측정 및 자율 조절 (Biometric Telemetry & Autoregulation)
AI 코치는 입력되는 데이터만큼만 똑똑해집니다. AURA는 Android Health Connect 및 Apple HealthKit과 통합되어 읽기 전용 원격 측정 데이터 (telemetry)를 읽어옵니다:
-
심박 변이도 (Heart Rate Variability, HRV)
-
안정 시 심박수 (Resting Heart Rate, RHR)
-
수면 시간 및 수면 구조 (Sleep Duration & Sleep Architecture: 깊은 수면, REM, 얕은 수면)
-
활동 부하 및 걸음 수 (Active Strain & Step Counts)
UI/UX 및 게이미피케이션 (Gamification): 과학을 영화처럼 느끼게 만들기
사용자 경험이 지루한 의료 대시보드처럼 느껴진다면 기술적인 백엔드 (backend)는 아무런 의미가 없습니다. 우리는 다크 글래스모피즘 (dark glassmorphism), 고대비 네온 액센트 (high-contrast neon accents), 그리고 인터랙티브한 게이미피케이션을 중심으로 AURA의 프런트엔드 (frontend)를 구축했으며, 이에 더해 사용자가 원하는 테마를 선택할 수 있도록 허용하고 있습니다.
빛나는 진행 상태 링 (Glowing Progress Rings): 건강 점수에 따라 동적으로 적응하는 커스텀 HSL 글로우 필터를 사용한 벡터 SVG 링 (Green: 준비됨, Yellow: 주의, Red: 회복 낮음).
인터랙티브 3D 보상 금고 (Interactive 3D Reward Vaults): 평면적인 체크박스 대신, 성공 시 햅틱 피드백과 컨페티 (confetti) 오버레이가 포함된 수령 가능한 일일 보상 금고 (Daily Reward Vaults)를 도입했습니다.
단계별 퀵 챌린지 (Tiered Quick Challenges): 레벨 1부터 레벨 4까지의 운동 챌린지를 통해 단계별 XP (+100 ~ +500 XP)를 부여하며, 사용자가 더 멀리 나아가 일일 목표를 달성하도록 독려하기 위해 반복 가능한 프레스티지 배지 승수 (prestige badge multipliers: x1, x2, x3)를 제공합니다.
테마 커스터마이징 (Theme Customization): 모든 상단 헤더, 네비게이션 바, 글래스 카드에 지속적으로 적용되는 라이브 테마 프리셋 (Hyper Emerald, Solar Amber, Lava Crimson, Amethyst).
나머지 설정 및 솔루션은 파트 2에서 계속됩니다. 그동안 여기에서 웹사이트를 방문해 보세요.
그리고 앱의 스크린샷 몇 개를 보여드리겠습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기


