1. 제로 클라우드(Zero-cloud) 아키텍처의 설계 원칙
전통적인 웹 애플리케이션은 데이터를 중앙 서버에 저장하고 관리하지만, Pain Tracker는 이를 완전히 뒤집은 ‘제로 클라우드’ 방식을 채택했습니다. 이 아키텍처의 핵심 요소는 다음과 같습니다.
- 데이터 저장의 로컬화: 모든 통증 기록, 약물 복용 이력, 개인 메모는 사용자의 브라우저 내 IndexedDB에만 저장됩니다. 서버는 데이터베이스를 보유하지 않으며, 사용자의 데이터를 수집하거나 분석할 수 없습니다.
- 서버의 역할 최소화: 중앙 서버는 오직 애플리케이션을 구동하기 위한 정적 자산(HTML, JavaScript, CSS)을 제공하는 역할만 수행합니다. 이는 서버 침해 사고가 발생하더라도 사용자 데이터는 안전함을 의미합니다.
- 오프라인 우선(Offline-first): PWA(Progressive Web App) 기술을 적용하여 인터넷 연결이 불안정한 환경에서도 데이터 입력 및 조회가 가능하며, 모든 처리는 클라이언트 측에서 즉각적으로 이루어집니다.
2. 강력한 클라이언트 측 암호화 메커니즘
데이터의 보안성을 극대화하기 위해 브라우저 수준에서 구현된 최신 보안 기술을 활용합니다.
- Web Crypto API 활용: 외부 라이브러리에 의존하지 않고 브라우저 표준 API를 사용하여 암호화 작업을 수행함으로써 공급망 공격의 위험을 줄였습니다.
- AES-GCM 256비트 암호화: 데이터의 기밀성뿐만 아니라 무결성까지 보장하는 AES-GCM 알고리즘을 사용합니다. 모든 데이터는 디스크에 저장되기 직전에 암호화되며, 메모리 상에서만 일시적으로 복호화됩니다.
- 비밀번호 기반 키 유도(PBKDF2): 사용자가 설정한 비밀번호는 서버로 전송되지 않습니다. 대신 PBKDF2 알고리즘을 통해 브라우저 내에서 암호화 키를 생성하며, 이 키는 브라우저 세션이 종료되면 안전하게 파기됩니다.
3. 데이터 소유권과 사용자 경험의 조화
기술적 제약 속에서도 사용자에게 최적의 경험을 제공하기 위한 기능들이 포함되어 있습니다.
- 데이터 시각화 및 분석: 로컬에 저장된 데이터를 바탕으로 통증의 양상을 그래프와 차트로 시각화합니다. 서버의 도움 없이 브라우저의 연산 능력만으로 복잡한 데이터 분석을 수행합니다.
- 안전한 데이터 내보내기: 사용자는 자신의 데이터를 JSON 형식으로 내보내어 백업하거나 다른 기기로 이전할 수 있습니다. 이 과정에서도 데이터는 암호화된 상태를 유지하거나 사용자의 명시적 선택에 의해서만 복호화됩니다.
- 의료진과의 협업: 진료 시 사용자는 자신의 기기를 직접 보여주거나, 로컬에서 생성된 암호화되지 않은 PDF 리포트를 일시적으로 생성하여 의료진에게 전달할 수 있습니다. 이는 데이터 유출 경로를 최소화하는 전략입니다.
4. 개발 동기와 철학적 배경
이 프로젝트는 개발자가 직접 겪은 신체적 고통과 그 과정에서 느낀 데이터 프라이버시에 대한 불안감에서 시작되었습니다. 대다수의 건강 관리 앱이 비즈니스 모델을 위해 사용자 데이터를 상업적으로 이용하는 현실에서, ‘나를 위한 도구’를 직접 만듦으로써 기술이 어떻게 개인의 권리를 보호할 수 있는지 증명하고자 했습니다. 이는 오픈 소스 정신과 결합되어 누구나 자신의 프라이버시를 지키며 건강을 관리할 수 있는 기반을 마련했습니다.