처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.03.27 32

S3 위에서 SQLite JOIN 쿼리를 250ms 안에? Turbolite가 보여주는 서버리스 DB의 가능성

Hacker News 원문 보기
S3 위에서 SQLite JOIN 쿼리를 250ms 안에? Turbolite가 보여주는 서버리스 DB의 가능성

SQLite를 클라우드 스토리지에서 직접 돌린다는 발상

요즘 SQLite의 인기가 정말 뜨겁죠. 원래 모바일 앱이나 임베디드 환경에서 쓰이던 가벼운 데이터베이스였는데, 최근에는 서버 애플리케이션에서도 적극적으로 활용하는 추세예요. 그런데 한 가지 고민이 있어요. SQLite는 로컬 파일 기반이라 서버리스(serverless) 환경이나 분산 시스템에서 쓰기가 까다롭다는 거예요.

Turbolite는 이 문제를 정면으로 돌파하는 프로젝트예요. SQLite의 VFS(Virtual File System)를 커스텀으로 구현해서, SQLite 데이터베이스 파일이 로컬 디스크가 아닌 Amazon S3(클라우드 오브젝트 스토리지)에 있어도 마치 로컬 파일처럼 읽을 수 있게 만든 거예요.

VFS가 뭔데요?

VFS는 말 그대로 "가상 파일 시스템"이에요. SQLite가 파일을 읽고 쓸 때 운영체제의 파일 시스템을 직접 호출하는 대신, 중간에 추상화 계층을 둬서 "파일을 어디서 어떻게 읽어올 건지"를 개발자가 직접 정의할 수 있게 해주는 인터페이스예요. 택배에 비유하면, 원래 택배 기사가 항상 우리 집 문 앞에서 물건을 가져가는데, VFS를 쓰면 "물건은 창고에 있으니 거기서 가져가세요"라고 알려주는 것과 비슷해요.

Turbolite는 이 VFS를 S3용으로 구현했어요. SQLite가 "이 부분의 데이터를 읽어와"라고 요청하면, Turbolite가 S3에 HTTP Range 요청을 보내서 필요한 바이트만 정확히 가져오는 거죠. 전체 DB 파일을 다운로드할 필요 없이, 쿼리에 필요한 페이지만 딱딱 가져오니까 효율적이에요.

250ms 미만의 콜드 쿼리, 어떻게 가능할까?

여기서 "콜드(cold)"라는 표현이 중요해요. 캐시가 전혀 없는 상태에서 처음 쿼리를 날렸을 때의 성능을 말하는 건데요, S3에서 데이터를 가져오는 거라 네트워크 지연이 불가피한데도 250ms 미만이라는 게 인상적이에요.

비결은 몇 가지가 있어요. 우선 SQLite의 B-tree 인덱스 구조를 활용해서 필요한 페이지만 최소한으로 요청해요. 인덱스가 잘 잡혀 있으면 수 GB짜리 DB에서도 실제로 읽어야 하는 데이터는 몇 개 페이지(보통 4KB 단위)에 불과하거든요. 그리고 S3의 Range 요청은 첫 바이트 응답 시간(TTFB)이 보통 50~100ms 정도인데, 필요한 페이지 요청을 병렬로 날리면 전체 지연을 최소화할 수 있어요.

JOIN 쿼리도 지원한다는 점이 눈에 띄는데요, JOIN은 여러 테이블의 데이터를 조합해야 하니까 읽어야 할 페이지 수가 늘어나잖아요. 이 상황에서도 250ms 미만을 달성했다는 건 페이지 프리페칭(미리 가져오기)이나 병렬 I/O가 잘 설계됐다는 뜻이에요.

어떤 상황에서 쓸 수 있을까?

가장 대표적인 유즈케이스는 분석용 읽기 전용 데이터베이스예요. 예를 들어 매일 배치로 데이터를 집계해서 SQLite 파일로 만들고 S3에 올려두면, 대시보드나 API 서버에서 별도의 데이터베이스 서버 없이 직접 쿼리할 수 있어요. 서버리스 함수(AWS Lambda 같은)에서 특히 매력적이죠. 데이터베이스 커넥션 풀을 관리할 필요도 없고, 서버를 상시 띄워둘 필요도 없으니까요.

비슷한 접근의 프로젝트로는 Litestream(SQLite를 S3에 복제), sql.js-httpvfs(HTTP 위에서 SQLite를 브라우저에서 쿼리), DuckDB(분석용 임베디드 DB로 S3 직접 쿼리 지원) 등이 있어요. Turbolite는 이들과 비교하면 SQLite의 기존 생태계를 그대로 활용하면서도 S3 백엔드를 투명하게 지원한다는 점에서 차별화돼요. 기존 SQLite 코드를 거의 수정 없이 쓸 수 있다는 뜻이거든요.

한국 개발자에게 주는 시사점

요즘 한국에서도 서버리스 아키텍처를 도입하는 팀이 많아지고 있잖아요. 그런데 서버리스에서 가장 골치 아픈 부분이 데이터베이스 연결이에요. Lambda에서 RDS 붙이려면 VPC 설정에 커넥션 관리에... Turbolite 같은 접근이면 읽기 워크로드에 한해서 이런 복잡함을 많이 줄일 수 있어요.

물론 쓰기가 안 되니까 범용 데이터베이스 대체는 어렵고, 지연 시간에 민감한 실시간 서비스에도 적합하지 않아요. 하지만 "데이터는 이미 만들어져 있고, 읽기만 하면 되는" 시나리오는 생각보다 많거든요. 내부 어드민 대시보드, 정적 분석 API, 설정값 조회 같은 경우에 한번 고려해볼 만해요.


한줄 정리: Turbolite는 SQLite의 VFS를 활용해 S3에 있는 DB 파일을 직접 쿼리할 수 있게 해주는 프로젝트로, 서버리스 환경에서 읽기 전용 데이터 조회의 새로운 가능성을 보여줘요.

혹시 SQLite를 서버 환경에서 활용해본 경험이 있으신가요? 어떤 상황에서 쓰셨는지 궁금해요!


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.