# PocketBase – 단일 파일로 제공되는 오픈소스 실시간 백엔드

> Clean Markdown view of GeekNews topic #24697. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=24697](https://news.hada.io/topic?id=24697)
- GeekNews Markdown: [https://news.hada.io/topic/24697.md](https://news.hada.io/topic/24697.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-11-29T09:38:44+09:00
- Updated: 2025-11-29T09:38:44+09:00
- Original source: [pocketbase.io](https://pocketbase.io/)
- Points: 3
- Comments: 1

## Topic Body

- **PocketBase**는 데이터베이스, 인증, 파일 저장소, 관리 대시보드를 포함한 **단일 파일형 오픈소스 백엔드**  
- **스키마 빌더**, **데이터 검증**, **실시간 구독**, **REST API**를 갖춘 내장형 고성능 데이터베이스 구조  
- 이메일/비밀번호 및 **OAuth2 로그인(Google, Facebook, GitHub, GitLab)** 지원으로 사용자 관리 간소화  
- 로컬 또는 **S3 스토리지**에 파일을 안전하게 저장하고, 데이터베이스 레코드에 미디어를 연결해 **썸네일 자동 생성** 가능  
- 독립 실행형 앱 또는 **Go·JavaScript 확장 가능한 프레임워크**로 활용 가능해, 경량 맞춤형 백엔드 구축에 유용  

---
### PocketBase 개요
- PocketBase는 **단일 실행 파일로 동작하는 오픈소스 백엔드 플랫폼**  
  - 데이터베이스, 인증, 파일 저장, 관리 대시보드를 통합 제공  
  - 별도 서버 구성 없이 빠르게 실행 가능한 구조  

### 데이터베이스 기능
- **스키마 빌더**와 **데이터 검증**, **실시간 구독**, **REST API**를 지원하는 내장형 데이터베이스 포함  
  - 실시간 데이터 변경 감지 및 구독 기능 제공  
  - REST API를 통해 손쉽게 데이터 조회, 생성, 수정, 삭제 가능  

### 사용자 인증
- 앱 사용자 관리 및 **이메일/비밀번호 기반 로그인** 지원  
- **OAuth2 인증**을 통해 Google, Facebook, GitHub, GitLab 계정으로 가입 및 로그인 가능  

### 파일 저장소
- 파일을 **로컬 또는 S3 스토리지**에 안전하게 저장 가능  
  - 데이터베이스 레코드에 미디어 파일을 첨부할 수 있음  
  - 업로드 시 **썸네일 자동 생성** 기능 제공  

### 확장성과 개발자 지원
- PocketBase는 **독립 실행형 애플리케이션**으로 사용하거나, **Go 및 JavaScript 훅(hook)** 을 통해 확장 가능한 **프레임워크**로 활용 가능  
  - 개발자는 자체 로직을 추가해 맞춤형 백엔드 구현 가능  

### JavaScript SDK 예시
- JavaScript SDK를 통해 PocketBase 서버와 상호작용 가능  
  - 예시 코드에서는 `example` 컬렉션의 레코드 목록 조회, 단일 레코드 조회·삭제·생성, 실시간 구독 및 구독 해제 기능을 보여줌  
  - `pb.collection('example').getList()`, `getOne()`, `create()`, `delete()`, `subscribe()` 등의 메서드 제공

## Comments



### Comment 46953

- Author: neo
- Created: 2025-11-29T09:38:45+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=46075320) 
- “SQLite는 확장성이 없다”는 말은 대부분 **조기 최적화의 착각**임  
  실제로 WAL 경합 한계에 부딪히는 경우는 드물고, 단일 바이너리의 단순함이 분산 시스템의 복잡함보다 훨씬 낫다고 생각함  
  요즘은 작은 프로젝트조차 DB 클러스터와 Redis 캐시를 당연히 붙이지만, **Pocketbase**는 CRUD 앱의 99%에서 병목이 DB가 아니라 네트워크 지연과 개발자의 관리 시간임을 보여줌
  - 대부분의 앱은 기술적 병목보다 **사용자 확보**가 더 어려운 병목임
  - 나는 개인 블로그를 가장 저렴한 DigitalOcean droplet에 올리고 SQLite를 사용 중임  
    Rust CLI 벤치마크로 테스트해봤는데, 같은 머신에서 MySQL이나 Postgres보다 성능이 더 좋았음  
    이런 규모의 프로젝트엔 SQLite가 최적임
  - 하지만 **decimal 타입 부재** 때문에 금융 연산에는 SQLite를 쓰기 어려움  
    애플리케이션 쪽에서 모든 계산을 처리해야 해서 번거로움

- Pocketbase를 보면 바로 **업보트**를 누름  
  여러 프로덕션 앱에서 사용 중인데 매우 안정적임  
  가끔 깨지는 변경이 있지만, 전반적으로 훌륭하고 확장성도 좋음  
  필요한 기능이 없을 때는 약간 까다롭지만 숙련된 개발자라면 충분히 해결 가능함
  - “문서를 읽을 시간도 없고 AI 도구에만 의존하려면 Pocketbase를 쓰지 말라”는 FAQ 문구가 정말 마음에 듦
  - 나도 같은 생각임. JS로 확장해봤는데 아주 잘 작동함  
    다만 개발자가 혼자라서 향후 유지보수가 걱정됨  
    그래도 **프론트와 백을 분리**해야 할 때 정말 좋은 선택임
  - 어떤 종류의 프로덕션 앱을 Pocketbase로 운영 중인지 궁금함

- 개인 프로젝트와 내부 툴에 Pocketbase를 애용함  
  [PocketPages](https://pocketpages.dev/)와 함께 쓰면 파일 기반 라우팅과 템플릿을 쉽게 쓸 수 있음  
  자동 **DB 마이그레이션** 기능 덕분에 스키마 변경을 버전 관리에 포함시킬 수 있음  
  심지어 Gemini 프로토콜 서버를 붙여서 Lagrange로 개인 지식 그래프를 탐색함
  - Raspberry Pi 5에 호스팅하려는데 성능 요구가 어떤지, Supabase와 비교해 특이한 제약이 있는지 궁금함
  - Lagrange가 무엇인지 모르겠음. LLM이나 지식 그래프 관련 프로젝트로는 안 보임

- Pocketbase는 GUI로 설정 가능한 **백엔드 서버**임  
  거의 코드 없이도 작동하는 백엔드를 만들 수 있어서 프로토타입, MVP, 간단한 앱에 적합함  
  이런 개념은 Firebase가 대중화시켰음
  - 구체적으로 어떤 일을 하는지 궁금함  
    내가 짜는 백엔드는 수백~수천 줄의 코드가 필요한데, 그걸 어떻게 대체하는지 알고 싶음  
    이런 툴로 만들 수 있는 앱의 범위가 궁금함
  - 홈페이지 예시를 보니 **Parse**를 떠올리게 함

- 사이드 프로젝트에서 Pocketbase를 써봤는데 정말 인상 깊었음  
  Django로 오래 일해왔는데, 중소형 프로젝트에서는 전통적인 백엔드를 직접 만드는 것보다 Pocketbase가 훨씬 잘 맞음  
  질문 있으면 기꺼이 답변 가능함
  - Django의 GIS 통합이 훌륭한데, Pocketbase는 어떤지 궁금함  
    그리고 PostgreSQL도 지원하는지, 아니면 SQLite 전용인지 알고 싶음
  - 기존 SQLite 기반 백엔드에서 **마이그레이션**이 얼마나 쉬운지도 궁금함
  - 나도 개인 프로젝트에서 써봤는데, LLM들이 Pocketbase와의 상호작용을 자꾸 혼동함  
    그래서 Claude Skill을 만들어봤는데, 혹시 비슷한 경험이 있는지 궁금함

- **Trailbase**는 같은 개념을 Rust로 구현한 버전임
  - TrailBase의 [비교 페이지](https://trailbase.io/comparison/pocketbase/)가 있음
  - 예시에서 **curl 명령어**를 생략하지 않은 점이 마음에 들어서 Trailbase에 호감이 생김
  - Pocketbase는 SQLite 기반이지만 NULLABLE 컬럼을 지원하지 않아 불편했음  
    그래서 Trailbase로 갈아탐
  - Trailbase는 엔드포인트에서 JS를 실행할 수 있음  
    즉, 전체 앱을 호스팅할 수도 있음  
    [가이드 링크](https://trailbase.io/getting-started/first-ui-app/#custom-endpoints)
  - 이런 점을 보면 Pocketbase 쪽이 더 매력적일 수도 있음

- Pocketbase를 사이드 프로젝트의 **인증 레이어**로 사용 중임  
  [kavla.dev](https://kavla.dev/)에서 운영 중이며, 훅 시스템이 훌륭함  
  [Go 이벤트 훅 문서](https://pocketbase.io/docs/go-event-hooks/) 덕분에 인프라 자동화도 쉽게 구현 가능함

- SQLite와 DuckDB로 MVP를 빠르게 만들었지만, 나중에 **백업과 프로덕션화 단계**에서 후회했음  
  처음부터 Supabase로 시작했으면 더 수월했을 것 같음

- 나는 Pocketbase로 **OpenSOHO**를 만들었고, 덕분에 개발 시간을 크게 절약했음  
  백엔드를 재활용하도록 약간 수정했지만 어렵지 않았음  
  스크린샷만 봐도 Pocketbase의 흔적이 바로 보임  
  [GitHub 링크](https://github.com/rubenbe/opensoho/)

- Pocketbase의 SQLite 백업이 걱정돼서, 실행 중에도 **sqlite3_rsync**로 백업할 수 있는 도구 [sqlrsync.com](https://sqlrsync.com)을 직접 만들었음  
  MVP는 작동 중이며, Cloudflare Durable Objects 기반이라 빠르고 안정적임  
  피드백 환영함
  - 나도 SQLite를 좋아함. **litestream**으로 지속 복제를 쓰고 있는데, 혹시 [SQLite rsync](https://sqlite.org/rsync.html)를 사용하는지 궁금함
  - SQLite의 **온라인 백업 API**를 써봤는지 궁금함. 원시 파일 접근은 피하는 게 좋을 듯함
  - sqlrsync와 litestream의 차이점이 무엇인지 알고 싶음
