영화 제작사이자 배급사인 A24가 자사 AI 연구소(A24 Labs)에서 개발한 '퍼프그레스(Puffgres)'를 오픈소스 프로젝트로 공개했습니다. 퍼프그레스는 PostgreSQL(포스트그레스) 데이터베이스의 엔티티(entity)를 벡터 데이터베이스인 터보퍼퍼(turbopuffer)에 논리적 복제(logical replication) 방식으로 자동으로 미러링(mirroring)하는 서비스입니다. 이는 개발자들이 Postgres 데이터를 벡터 DB에 수동으로 동기화하는 번거로움과 데이터 불일치 위험을 해소하기 위해 고안되었습니다.
퍼프그레스의 핵심 철학은 Postgres를 진실의 원천(source of truth)으로 삼고, 벡터 DB의 상태는 Postgres에서 '파생(derive)'되도록 하는 것입니다. 기존에는 Postgres와 벡터 DB에 각각 데이터를 삽입(upsert)해야 했고, 이 과정에서 데이터 불일치나 부분적인 실패가 발생하기 쉬웠습니다. 퍼프그레스는 이러한 이중 데이터베이스 호출을 없애고, 개발자가 토큰화(tokenization)나 임베딩(embedding) 같은 '바보 같은(dumb)' 자바스크립트(JavaScript) 변환 로직만 작성하면, 논리적 복제, 재시도(retry), 배치 처리(batching) 등을 서비스가 자동으로 처리합니다. 이 서비스는 Postgres 내부에 전용 스키마(schema)를 사용하여 자체 상태를 유지하므로, 중단 후에도 변경 사항을 잃지 않고 작업을 재개할 수 있습니다. 또한, 테이블과 터보퍼퍼 네임스페이스(namespace)를 연결하는 '설정(configs)'과 타입스크립트(TypeScript) 기반의 '변환(transform)'을 통해 데이터 매핑 및 조작을 정의하며, 이러한 설정은 불변(immutable)으로 유지되어 복잡한 데이터 변경 문제를 방지합니다.
이러한 접근 방식은 데이터 관리의 복잡성을 줄이고 개발 효율성을 크게 향상시킬 수 있습니다. 특히, 벡터 임베딩(vector embedding)을 활용하는 AI 애플리케이션 개발 시 데이터 동기화에 드는 시간과 노력을 절감할 수 있습니다. A24는 내부적으로 수십만 개의 행(row)을 가진 테이블에서 퍼프그레스를 성공적으로 사용하고 있으며, 초당 60만 건 이상의 이벤트를 처리하고 100만 건의 트랜잭션에서 50번째 백분위수(p50) 배치 지연 시간(batch latency)이 10마이크로초(µs) 미만이라는 벤치마크 결과를 공개했습니다. 이는 데이터 일관성과 성능이라는 두 마리 토끼를 잡으려는 기업들에게 매력적인 솔루션이 될 수 있습니다. 마틴 클렙만(Martin Kleppmann)의 '데이터베이스를 뒤집어엎기(Turning the database inside out)'와 브라이언 캔트릴(Bryan Cantrill)의 '도구 제작의 중요성(The Primacy of Toolmaking)'이라는 기술 강연에서 영감을 받았다고 밝힌 것처럼, 반복적인 작업을 자동화하고 데이터 흐름을 단순화하는 것이 현대 소프트웨어 개발의 중요한 방향임을 시사합니다.