회사에서 1인 개발자로 여러 서버/서비스를 관리하고 있는데, 종종 "지난달 말에 이 데이터가 어떻게 되어 있었어?"라는 질문을 받곤 합니다.
그때마다 pg_dump 백업을 찾아서 임시 DB를 띄우고, 복원하고, 쿼리 날리고, 정리하는 과정을 반복하는 게 너무 번거로워서 직접 만들게 되었습니다.
Snaplake는 DB 테이블을 주기적으로 Parquet 파일로 스냅샷하고, 백업 복원 없이 DuckDB로 바로 SQL 조회할 수 있는 셀프호스팅 도구입니다.

주요 기능

  • 스냅샷 캡처 — PostgreSQL, MySQL 테이블을 Apache Parquet 파일로 저장. Cron 기반 자동 스냅샷과 보관 정책(일별/월별) 지원
  • SQL 쿼리 — DuckDB 기반으로 어떤 시점의 스냅샷이든 바로 SQL 조회. 테이블 조인, 집계, CSV/JSON 내보내기 가능
  • 스냅샷 비교 — 두 시점의 스냅샷을 나란히 놓고 행 단위 diff. 추가/삭제/변경된 행을 색상으로 구분
  • 유연한 스토리지 — 로컬 파일시스템 또는 S3 호환 스토리지(AWS S3, MinIO 등)

기술 스택

  • Backend: Kotlin, Spring Boot 3.4, Java 21
  • Query Engine: DuckDB (Parquet 파일 직접 쿼리)
  • Frontend: React 19, TypeScript, Vite
  • 메타데이터 저장: SQLite
  • 인증: JWT + Argon2

Docker 한 줄로 바로 시작할 수 있습니다.

docker run -d --name snaplake -p 8080:8080 -v snaplake-data:/app/data abcdkh1209/snaplake:latest  

비싼 데이터 관측 도구를 도입하기 어려운 소규모 팀이나 1인 개발자에게 유용할 것 같습니다. 피드백 환영합니다!