AI 요약
테일스케일(Tailscale)이 2023년 말부터 6개월간 19차례 발생한 SQLite 데이터베이스 손상 사고의 원인을 추적한 결과, 16년 된 SQLite 내부 버그가 원인이었음을 밝혔다. 단일 Go 프로세스가 SQLite를 독점적으로 사용하는 단일-라이터 설계였음에도 불구하고, WAL(Write-Ahead Logging) 리셋 과정에서 발생한 버그가 데이터베이스 손상을 초래했다. 테일스케일은 수개월간의 집중적인 포렌식 조사 끝에 버그를 식별하고 수정했으며, 고객에게 서비스 불안정에 대해 사과했다.
핵심 포인트
- 2023년 8월부터 2024년 초까지 6개월간 19차례의 SQLite 데이터베이스 손상 사고 발생
- 원인은 16년 전부터 존재했던 SQLite의 WAL 리셋 관련 버그로 확인됨
- 테일스케일은 2022년부터 SQLite를 주요 데이터베이스로 사용 중이었으며, 백업 파이프라인은 S3 버킷에 전체 SQLite 파일을 업로드하는 방식
- 제어 플레인은 여러 코디네이션 서버(샤드)로 분할되어 있으며, 각 샤드는 단일 Go 프로세스가 SQLite 데이터베이스를 독점 접근
향후 전망
- SQLite 커뮤니티와 협력하여 해당 버그 수정이 공식 릴리스에 반영될 것으로 예상
- 테일스케일은 이번 경험을 바탕으로 데이터베이스 무결성 모니터링을 강화할 것으로 보임
출처:hackernews
