Litestream이 이제 빠른 시점 복구가 가능해집니다

2 days ago 6

  • LitestreamSQLite 기반의 전체 스택 애플리케이션을 안전하게 객체 저장소에 백업하며, 이번에 가장 큰 기능 변경이 이루어짐
  • 기존 구조보다 효율적인 LTX 파일 포맷과 컴팩션 기법을 적용해 빠르고 효율적인 시점 복구가 가능해짐
  • Conditional write를 활용한 새로운 방식으로 리더 싱글톤 및 read replica 기능 구현을 단순화함
  • VFS 기반 read-replica 계층이 제공되어 다양한 환경에서 손쉽게 확장 가능함
  • 대폭 개선된 구조로 다수의 데이터베이스 동시 동기화가 가능해져 확장성이 높아짐

Litestream 소개 및 중요성

  • Litestream은 오픈소스 도구로서 SQLite를 기반으로 하는 다양한 전체 스택 애플리케이션을 객체 저장소에 안전하게 백업하는 기능을 제공함
  • SQLite의 임베디드 특성으로 인해 데이터가 한 서버에 종속되던 문제를 해결하고, 서버 장애 시에도 데이터 복구가 용이해짐

Litestream의 발전 과정

  • SQLite를 더 쉽게 활용하기 위해 Litestream이 2020년에 등장했음
  • Litestream은 SQLite 애플리케이션과 별도의 프로세스로 실행되며, WAL 체크포인팅 프로세스를 대체해 실시간으로 데이터 변경 사항을 S3와 같은 객체 저장소로 스트리밍함
  • 서버가 손실되어도, 객체 저장소에서 최신 상태로 데이터베이스를 효율적으로 복구할 수 있음
  • 이후 LiteFS라는 프로젝트가 추가 개발되어 read replica와 기본 장애조치(Primary Failover)까지 지원하는 등, SQLite를 Postgres와 같은 현대적 배포 구조로 활용할 수 있게 만듦
  • LiteFS와 Litestream 모두 장점이 있으나, Litestream은 더 널리 사용될 정도로 배포 및 사용이 쉬움

효율적인 시점 복구(Point-in-time Restore)

  • 이전 Litestream 설계는 모든 변경 사항을 지속적으로 기록해 S3에 전송했으나, 데이터가 잦게 변경되는 경우 복구 시 비효율적임
  • LiteFS에서는 트랜잭션 인지 기반의 접근법을 도입, 변경 페이지 범위를 정렬해서 기록하는 LTX 파일 포맷 사용
  • 여러 LTX 파일을 쉽게 병합(compaction)해 최신 버전만 남기는 방식으로, 데이터 복구 속도와 효율성을 대폭 향상시킴
  • 이 구조는 LSM 트리와 유사함
  • 새로운 Litestream에서도 LTX 파일 및 컴팩션 방식을 도입하여 많은 중복 저장 없이 정확한 시점 복구 지원이 가능해짐

CASAAS: Compare-and-Swap as a Service

  • Litestream은 SQLite 애플리케이션이 백업 시스템을 인지하지 않아도 작동해야 하며, 장애 등으로 프로세스가 죽는 경우 데이터 변경 누락이 발생 가능함
  • 이런 문제를 해결하기 위해 generation이라는 개념을 도입해 각 백업 세션과 그에 대한 로그 스트림을 고유하게 식별함
  • LiteFS에서는 Consul을 이용해 싱글 리더를 보장했으나, 외부 종속성 필요성 때문에 Litestream은 S3 등 객체 저장소의 conditional write 기능으로 단일 복제 경로(싱글톤)를 간편하게 구현함
  • 이에 따라 ephemeral 노드 환경에서도 혼동 없이 안정적인 동작이 가능해짐

경량 read replica 기능

  • LiteFS는 트랜잭션 인지를 위해 FUSE 파일시스템을 사용하지만, 이는 복잡성과 도입 부담이 있음
  • 이를 완화하기 위해 LiteVFS라는 SQLite Virtual Filesystem(VFS) 확장 모듈을 통해 FUSE 없이도 다양한 환경에서 동작 가능하게 설계됨
  • 향후 Litestream에도 동일한 VFS 기반 레이어를 적용하여 S3 등 객체 저장소에서 직접 페이지를 fetch하고 cache하는 read-replica 계층을 제공 예정임
  • 로컬 SQLite처럼 빠르지는 않으나, 캐싱 및 prefetching 전략을 통해 많은 사용 사례에서 만족스러운 성능 제공 가능성 기대함

오픈 소스 및 활용성

  • Litestream은 완전한 오픈소스이며, Fly.io에 종속되지 않고 어디서든 사용 가능함
  • 대량의 데이터베이스를 하나의 프로세스에서 동기화하는 기능이 추가되어, 수백~수천 개 데이터베이스도 효율적으로 백업/복제 가능해짐

SQLite와의 지속적 동반성장

  • SQLite는 산업 변화 속에서도 꾸준히 새로운 활용 사례를 창출하는 견고한 데이터베이스임
  • 최근 LLM 기반 코드 생성 에이전트와 같은 분야에서도, 실시간 데이터 롤백 및 분기가 중요해짐에 따라 Litestream의 발전된 시점 복구 기능이 중요한 기반이 될 수 있음
  • 향후 이러한 개선된 아키텍처는 롤백, 포크, 자동화 에이전트 대응 등 확장 기능에도 기여할 것임
  • 새로운 Litestream은 기존 디자인 대비 보다 우수하며, 확장성과 사용성을 모두 강화함

Read Entire Article