Tailscale、16年前のSQLiteバグによるDB破損を特定

원제: Tailscale Traces Database Corruption to 16y/o SQLite WAL-Reset Bug

왜 중요한가

널리 사용되는 오픈소스 DB인 SQLite의 장기 미발견 버그가 실제 서비스 장애로 이어질 수 있음을 보여주는 사례로, DB 신뢰성 검증의 중요성을 재조명한다.

Tailscaleは2026年8月12日、2025年末から続いていたサービス障害の原因が、SQLiteのWALリセット処理に潜む16年前のバグであったと公式ブログで発表した。同社は数ヶ月にわたる詳細な調査を経てバグを特定・修正し、その経緯を公開した。

Tailscaleは同社の制어플레인 서버에서 2025년 말부터 서비스 안정성이 저하되기 시작했으며, 해당 상황은 공식 상태 페이지에서도 확인 가능했다고 밝혔다. 2026년 새해에도 불안정 상태가 지속되었으며, 대부분의 장애 원인은 SQLite 내부에 존재하는 단일 버그로 귀결되었다.

Tailscale의 제어 플레인은 내부적으로 여러 개의 조정 서버(샤드)로 분산되어 있으며, 각 테일넷은 하나의 샤드에 배정된다. 각 샤드는 SQLite 데이터베이스를 가지며, 단일 Go 프로세스가 독점적으로 해당 DB에 접근하는 구조로 운영된다. 이는 SQLite의 설계 의도에 부합하는 단일 쓰기 방식이다.

Tailscale은 2022년부터 SQLite를 주 데이터베이스로 채택하였으며, 그 이유로 신뢰성과 광범위한 사용 실적을 꼽았다. 백업 파이프라인으로는 수 분 간격으로 데이터베이스 전체 스냅샷을 생성해 S3 버킷에 업로드하는 방식을 사용하고 있다.

수개월간의 집중적인 포렌식 조사 끝에, 문제의 원인이 SQLite의 WAL(Write-Ahead Logging) 리셋 처리에 존재하는 16년 된 버그임을 확인하고 수정을 완료했다. 동사는 "고객들이 기대하는 안정적인 서비스를 수개월간 제공하지 못한 점에 대해 사과드린다"고 공식 입장을 밝혔다.

출처

tailscale.com — 원문 읽기 →