PgDog - 별도 확장없이 Postgres를 샤딩할수 있는 도구

1 week ago 6

  • Rust로 개발된 PostgreSQL용 트랜잭션 풀러 및 논리 복제 관리자로, 수평적 확장과 샤딩 자동화 기능 제공
  • 익스텐션 없이 간편하게 PostgreSQL 데이터베이스를 샤딩 가능, 수백 개 데이터베이스와 수십만 연결 관리에 최적화됨
  • 애플리케이션 계층(OSI 7)에서 동작하는 DB 로드 밸런서로, SELECT는 리플리카로, 나머지는 프라이머리로 자동 라우팅 가능
  • PgBouncer처럼 트랜잭션/세션 풀링을 지원하면서도, 쿼리를 파싱하여 샤드로 자동 라우팅결과 병합까지 수행
  • COPY 및 로지컬 리플리케이션을 이용해 데이터를 샤드로 자동 분배하거나 기존 DB를 무중단 샤딩할 수 있음
  • 구성은 TOML 파일로 간단하게 정의할 수 있으며, 런타임 재구성 가능
  • Postgres 확장을 이용하는 Citus와 달리 DB의 외부 프록시여서 RDS, Cloud SQL 등에서도 사용 가능

프로젝트 소개 및 주요 가치

  • PgDog는 PostgreSQL 데이터베이스를 쉬운 샤딩과 논리 복제, 트랜잭션 풀링, L7 부하 분산 등 전방위적인 수평확장을 지원하는 오픈소스 솔루션임
  • Rust 언어로 개발되어 고성능보안성을 확보함
  • PgDog는 익스텐션 설치 없이, 단일 프록시 배포만으로도 샤딩, 데이터 분산, 장애 복구, 및 유연한 로드밸런싱을 실현함
  • 경쟁 제품(예: PgBouncer, PgCat 등)과 달리, 자동 샤딩 및 논리 복제까지 모두 지원하며, 운영 중 설정 변경 및 실시간 모니터링이 가능한 점이 강점임

주요 기능

부하 분산 (Load Balancer)

  • PgDog는 OSI 7계층 애플리케이션 레벨 프록시로, 여러 PostgreSQL 복제본·기본 노드로 쿼리를 분산하여 장애·부하 방지 역할 수행
  • 분산 전략은 라운드로빈, 무작위, 최소 연결 등 다양하게 제공
  • 쿼리 종류를 판별하여 SELECT는 복제본, 그외 쓰기 쿼리는 기본 노드로 자동 전달하게 분기 처리
  • 건강 체크(Healthcheck) 및 장애 발생 시 자동 페일오버 수행, 네트워크 오류나 하드웨어 장애에도 가용성 보장

트랜잭션 풀링

  • PgDog는 PgBouncer 처럼 트랜잭션·세션 풀링을 통한 효율적인 커넥션 자원 관리로, 수십만 개의 클라이언트도 소수의 백엔드 연결로 커버 가능함

샤딩

  • 쿼리 구문을 직접 파싱하여 샤딩 키 추출 및 최적 라우팅 알고리듬 적용
  • 다중 샤드 데이터베이스 간 교차 샤드 쿼리도 지원하며, 결과를 메모리상에서 통합 후 투명하게 클라이언트로 전달
  • COPY 명령 실행 시 CSV 파싱을 통한 데이터 멀티샤드 분배 지원, 대용량 적재에 편리
  • PostgreSQL 논리 복제 프로토콜을 기반으로 무중단 백그라운드 동기화, 운영 중 실시간 샤드 추가 및 확장 가능

모니터링

  • PgBouncer 스타일의 관리 데이터베이스OpenMetrics 엔드포인트 모두 지원
  • Datadog 등 외부 모니터링 및 대시보드 예제 제공

구성 및 런타임

  • 주요 환경: Kubernetes(Helm 차트 제공), Docker, 로컬 환경(Rust 빌드)에서 손쉽게 배포·테스트 가능
  • 통상적으로 2개의 설정 파일(pgdog.toml, users.toml)만 작성하면 최소 샤딩 및 유저 기반 운영 환경 구성 완료
  • 설정 값은 대부분 실시간으로 수정 가능하며, 프로세스 재시작 없이 동적으로 반영

성능 및 라이선스

  • PgDog는 Rust와 Tokio 기반의 고성능 비동기 네트워크 프록시로, 데이터 이동 최소화 및 성능 저하 억제에 집중
  • 벤치마크 결과를 공식 문서에 제공하여 성능 기준 설정 가능
  • AGPL v3 오픈소스 라이선스 적용, 기업 내부 사용 및 사설 커스터마이징에 완전 개방
  • 단, 퍼블릭 클라우드 서비스 제공 기업은 코드 수정 시 그 내역을 공유해야 하는 조건 존재

프로젝트 현황 및 기여

  • 현재는 초기 단계로 얼리어답터의 자체 도입을 권고, 기능별 안정화는 꾸준히 업데이트
  • 기능별 테스트 및 벤치마크도 지속적으로 진행
  • 오픈소스 커뮤니티의 기여 환영, 자세한 내용은 Contribution Guidelines 참고

결론

  • PgDog는 운영 환경에서 PostgreSQL의 수평적 확장성, 고가용성, 자동 샤딩을 필요로 하는 개발팀 및 기업 현장에 뛰어난 솔루션 제공
  • 별도의 익스텐션이나 복잡한 인프라 구축 없이도, 신속히 적용 및 Customizing 가능한 점이 큰 장점임

Read Entire Article