피드로 돌아가기
Dev.toFrontend
원문 읽기
19KB 단일 HTML 기반의 Zero-install 오프라인 위키 설계
I built an offline wiki that fits in a single 19 KB HTML file
AI 요약
Context
기존 오프라인 위키 솔루션의 과도한 앱 용량과 네트워크 의존성으로 인한 배포 제약 발생. 특히 file:// 프로토콜 기반의 단순 실행 환경에서 Service Worker와 IndexedDB 사용이 불가능한 기술적 한계 존재.
Technical Solution
- file:// 환경의 제약을 극복하기 위해 외부 의존성 없는 단일 HTML 구조 및 sessionStorage 기반의 In-memory 데이터 관리 설계
- 데이터 무결성 보장을 위해 SHA-256 해시와 Merkle Root를 결합한 구조적 검증 체계 도입
- WebCrypto API의 ECDSA P-256 알고리즘을 통한 발행자 서명 검증으로 서버 없는 환경에서의 Tamper-proof 구현
- 데이터 비대화 방지를 위해 Sequence CRDT 대신 LWW-Map 구조를 채택하여 Tombstone 누적 문제 해결
- 시간 동기화 오류 방지를 위해 Wall-clock 대신 Lamport Clock을 적용한 논리적 충돌 해결 메커니즘 설계
- 신뢰 기반의 Trusted-snapshot compaction 방식을 통해 서버 없이도 효율적인 데이터 압축 및 베이스라인 갱신 구현
실천 포인트
1. file:// 환경 지원 필요 시 Service Worker/IndexedDB 의존성 제거 검토
2. 서버 없는 분산 환경의 데이터 무결성 확보를 위해 Merkle Tree와 비대칭 키 서명 도입 고려
3. 오프라인 동기화 설계 시 시계 드리프트 문제를 피하기 위해 Lamport Clock 같은 논리 시계 적용
4. CRDT 도입 시 히스토리 누적으로 인한 QuotaExceededError 가능성을 분석하고 LWW-Map 등 경량 구조 검토