클라우드 단어와 충돌
SQLite 가 자기를 serverless 라고 부를 때, 그건 AWS Lambda 나 Cloudflare Workers 가 말하는 serverless 와 다른 의미야. 진짜로 서버 프로세스 자체가 없어. 백그라운드 데몬 없고, 연결할 소켓 없고, 네트워크 프로토콜 자체가 없어.
대신 SQLite 는 네 앱이 링크 하는 라이브러리야. 앱이 SQLite 함수를 호출하면, 라이브러리가 디스크 파일을 직접 읽고 써. DB 엔진이 네 앱 프로세스 안에서 — 앱 메모리, CPU, file descriptor 를 같이 써가며 — 도는 거야.
이 아키텍처가 가져오는 함의가 깊어:
- Latency overhead 0 — 네트워크 round-trip 없음. PK SELECT 가 로컬 파일에서 ~0.01 ms. localhost Postgres 도 TCP 라서 ~1–10 ms 걸려.
- Connection pooling 불필요 — PgBouncer 없음,
max_connections없음, connection leak 버그 없음. - 인증 레이어 없음 — 접근 제어가 파일 시스템 권한으로 이뤄져. SQL
GRANT안 써. - 배포 없음 — 바이너리 보내면 DB 엔진이 같이 따라가.
Tip: in-process 라서 SQLite 는 edge compute, embedded 시스템, 모바일 앱, CLI 도구, Cloudflare Workers / Fly Machines 류 serverless 함수처럼 persistent 한 DB 연결을 못 쓰는 환경에 딱이야.
반대로도 똑같이 사실이야: 다른 머신의 웹 서버 10 개가 같은 logical DB 에 동시에 쓰는 시나리오면 SQLite 는 잘못된 도구야. '네트워크 프로토콜 없음' 속성은 양날의 검이거든.