PgDog: Proxy를 통한 Postgres 수평 확장

PgDog는 수평적 확장성을 가능하게 함으로써 PostgreSQL의 확장성 한계를 해결하기 위해 설계된 고성능 프록시입니다. 데이터베이스 앞에 프록시를 배치함으로써, PgDog는 표준 PostgreSQL 인터페이스를 유지하면서 100 TB 이상의 테이블과 초당 100만 건의 쿼리(QPS)까지 확장할 수 있도록 지원합니다.

핵심 기능 및 배포

PgDog는 샤더(sharder), 커넥션 풀러(connection pooler), 로드 밸런서(load balancer) 역할을 수행합니다. 성능과 신뢰성을 위해 Rust로 작성되었으며, 멀티스레드 실행을 통해 사용 가능한 모든 CPU 코어를 활용할 수 있습니다.

주요 배포 특성은 다음과 같습니다:

  • Infrastructure Agnostic: 온프레미스, 프라이빗 클라우드 계정 또는 Docker 이미지를 사용하여 노트북에서도 배포할 수 있습니다.
  • Zero Application Changes: 사용자는 애플리케이션 설정에서 DATABASE_URL을 변경하는 것만으로 PgDog를 구현할 수 있으며, 애플리케이션 로직을 다시 작성할 필요가 없습니다.
  • Zero Dependencies: 설계 단계에서 숨겨진 서버리스 비용과 외부 의존성을 피합니다.

성능 및 프로덕션 상태

PgDog는 현재 수십 개의 배포 환경에서 200만 QPS 이상의 서비스를 제공하고 있으며, 20 TB 이상의 데이터를 샤딩했습니다. 이 프로젝트는 매주 목요일마다 새로운 버전을 출시하며 빠른 개발 주기를 유지하고 있습니다.

전통적인 Postgres 확장 방식과의 비교

전통적인 PostgreSQL 확장은 종종 복잡한 애플리케이션 계층의 샤딩이나 핵심 확장 기능(core extensions)의 사용을 요구합니다. PgDog의 프록시 기반 접근 방식은 Citus와 같은 도구와 달리 데이터베이스의 핵심 확장 기능이 아닌 데이터베이스 앞단의 레이어로 작동하므로, 배포를 단순화하고 핵심 데이터베이스 수정에 따른 리스크를 줄여줍니다.

사용자 경험 및 기술적 통찰

PgBouncer와 같은 도구에서 마이그레이션한 사용자들의 커뮤니티 피드백은 다음과 같은 몇 가지 기술적 장점을 강조합니다:

  • LISTEN/NOTIFY Support: 사용자들은 PgDog가 트랜잭션 풀러(transaction poolers)와 관련된 전형적인 LISTEN/NOTIFY 문제를 성공적으로 해결했다고 보고합니다.
  • Aurora Failover: "auto mode" 기능은 AWS Aurora 페일오버를 원활하게 지원하도록 설계되었습니다.
  • Aurora/RDS/EC2: Instacart에서 RDS, Aurora, EC2를 통해 분당 수십만 건의 식료품 배달 주문을 처리하며 Postgres를 확장했던 창립자들의 경험이 PgDog 프로젝트의 기술적 토대가 됩니다.

커뮤니티 우려 사항 및 한계

많은 사용자가 프록시의 안정성과 안정성을 칭찬하지만, 커뮤니티 토론에서는 몇 가지 기술적 우려 사항이 제기되었습니다:

  • Configuration Management: 일부 사용자는 데이터베이스가 빈번하게 생성되고 삭제되는 Kubernetes 멀티테넌시 환경에서 TOML 설정 파일 방식이 불편하다고 느꼈습니다.
  • Authentication Caching: 패스스루(passthrough) 중에 인증 요청이 캐싱되어, 역할(role) 비밀번호가 변경되었을 때 문제가 발생하는 사례가 보고되었습니다.
  • Operational Overhead: 확장은 해결된 문제이지만, 고가용성(HA) 및 메이저 버전 업그레이드(10-20분의 다운타임이 발생할 수 있음)는 자체 관리형 Postgres 사용자들에게 여전히 중요한 운영적 과제입니다.
  • Enterprise Edition: PgDog는 SLA 기반 지원을 제공하며 AWS에 최적화된 Enterprise 에디션을 제공하고 있습니다. 다만, 오픈 소스 버전과 Enterprise 버전 간의 구체적인 기능 차이점은 아직 상세히 공개되지 않았습니다.

자금 조달 및 로드맵

PgDog는 Basis Set, YC, Pioneer Fund로부터 550만 달러의 투자를 받은 3인 팀입니다. 이 자금은 오픈 소스 코어와 Enterprise 에디션을 지속적으로 개발하기 위한 충분한 운영 자금을 제공합니다.

Sources