최근 SQLite이 핫하다:
1) 개발자들의 VPN @Tailscale은 SQLite로 돌아간다는 소식이 들리고
2) PaaS 플랫폼 @flydotio에서 @litestreamio를 인수했다고 하더니
3) @Cloudflare는 SQLite 기반 SQL DB인 D1을 발표했다
올해 22살인 SQLite는 왜 클라우드 시대에 전성기를 맞이하고 있나? 생각 정리:
SQLite는 다른 SQL DB (예: MySQL)보다 비교적 단순하다고는 하지만 사용량이 가장 높고, 꾸준한 사랑을 받는 DB다. 특히나 “보수” 개발자 - 그러니까 검증이 되지 않은 신기술 보단 기존 기술을 깊게 이해하고 잘 사용 하는 - 에게 많은 사랑을 받는다. 구조가 담백해 사용 및 운영이 쉽기 때문이다.
SQLite는 MySQL 같은 DBMS 보다 JSON/protobuf 쪽에 더 가깝다. *.sqlite 파일 하나에 모든 데이터가 담겨있고, sqlite lib을 사용해 읽고 쓴다. File format+library가 전부다.
담백한 구조 이면엔 비교적 부족한 기능성이 있다. 특히 write 성능에 제한이 커 스케일링의 어려움이 있다.
그렇다면 성능 제한이 분명한 SQLite이 다시 클라우드 시대에 주목받는 이유가 무엇일까?
두 가지 트렌드가 눈에 띈다:
1. 복잡해지는 클라우드 생태계에서 담백한 기술에 대한 갈증
2. 떠오르는 엣지 컴퓨팅 플랫폼 (Cloudflare Workers, Deno Deploy)
서비스 사용자들의 기대치가 높아진 만큼 서버 개발과 운영의 난이도가 올라가는 건 어쩔 수 없지만, 큰 고민 없이 트렌디한 기술을 받아들이는 건 조심할 필요가 있다.
예로 NoSQL 기술은 SQL DB 보다 큰 스케일링이 가능하다고 하지만, 대부분 서비스는 SQL DB의 한계를 만날 일이 없다.
SQLite도 오랫동안 많은 기능이 추가되었고 (예: concurrency, cte), "낮은" 수준의 성능도 요즘 하드웨어 발전을 생각하면 그리 낮은 것도 아니다. 많은 서비스의 요구사항은 SQLite 성능으로 충분할 가능성이 높다.
@Tailscale, @expensify 같은 큰 서비스도 SQLite로 돌아간다.
굳이 MySQL/PostgreSQL를 쓰지 않고 SQLite를 쓰는 건 조금 고집스러워 보이기도 하지만, 서버 스택의 담백함을 중요시하고 사용하는 툴에 대한 깊은 이해도를 우선시하는 "보수" 개발자에겐 SQLite는 매력적인 선택이다.
SQLite-생태계도 재미있는 발전이 많다 (litestream, dqlite, rqlite 등).
2. 엣지 컴퓨팅
Cloudflare Worker와 Deno Deploy 같은 개발자 친화적인 엣지 컴퓨팅 서비스들이 나타나며 진정한 "서버리스" 플랫폼의 가능성을 보여주고 있다.
위치 제약 없이 애플리케이션 로직을 돌리는 건 멋진 발전이다. 하지만 compute과는 달리 data는 아직 위치 제약에 자유롭지 못하다.
대부분 서비스가 사용하는 DB는 특정한 위치에 귀속되어 있어, 결국 DB가 필요한 서비스들엔 엣지 컴퓨팅의 큰 매력이 사라진다.
Globally distributed DB는 정말 어려운 기술적 문제이다. AWS/GCP/Azure 모두 기술적으로 대단한 솔루션을 제시하고 있다 (Dynamo/Spanner/Cosmos).
여기서 뜬금없이 SQLite이 등장한다. 앞서 말했듯 SQLite은 파일 하나에 모든 데이터가 저장되는데, 이 파일을 전 세계적으로 카피하는 건 CDN으로 쉽게 해결 가능하다.
Cloudflare/Fly 두 플랫폼의 기술팀들은 이 속성의 가능성을 보고 SQLite 기반 global DB 솔루션에 도전하는 듯하다.
문제는 어떻게 global write을 지원하냐다.
몇몇 의견을 보니, 하나의 DB 서버에 모든 데이터를 담는 기존 모델에 벗어나 SQLite의 장점을 살려 유저/어카운트마다 DB 파일을 두는 아예 새로운 모델을 제시할 수도 있을 거 같다. 악마는 디테일에 숨어있겠지만, 기술적으로 재미있는 발상이다.