- 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 가능한 점이 큰 장점임