PostgreSQL Distributed(PGD) 테스트 전략: 고가용성과 성능을 검증하는 방법
Abhijit Save
2025년 7월 15일
이 블로그는 Bharat Telange 및 Amruta Deolasee와 공동 작성되었습니다.
PostgreSQL Distributed(PGD)는 고가용성과 확장성을 제공하는 분산 데이터베이스입니다. PGD 팀은 강력하고 고성능인 제품을 제공하기 위해 철저하고 광범위한 테스트를 수행합니다.
이 글에서는 PGD의 품질과 성능을 검증하는 기능 테스트, 통합 테스트, 패키지 스모크 테스트, 성능 테스트, 탐색적 테스트와 지속적인 테스트 전략을 소개합니다.
PGD 테스트 방법론과 전략
지원 플랫폼과 버전 전반에서 성능과 품질을 보장하기 위해 PGD 팀은 다양한 최신 테스트 방법론을 사용합니다. 그 중심에는 지속적인 테스트(Continuous Testing)가 있으며, 이를 통해 문제를 조기에 발견하고 코드가 발전하는 과정에서도 제품의 무결성을 유지합니다.
PGD 지원 플랫폼
- Community PostgreSQL
- EDB Postgres Advanced Server
- EDB Postgres Extended Server
PGD 릴리즈별 지원 PostgreSQL 주요 버전
- PGD 4: PostgreSQL 12–14
- PGD 5: PostgreSQL 12–17
- PGD 6: PostgreSQL 14–17
이처럼 폭넓은 버전과 플랫폼을 대상으로 테스트해 PGD의 성능과 안정성을 검증합니다.
PGD의 주요 테스트 유형
- 기능 테스트(Functional Testing)
- 통합 테스트(Integration Testing)
- 패키지 스모크 테스트
- 성능 테스트
- 탐색적 테스트(Exploratory Testing)
PGD 기능 테스트
기능 테스트는 구조화된 화이트박스 테스트로, PGD의 모든 내부 구성요소와 기능을 심층적으로 검증합니다. 코드 커버리지, 루틴 결과의 예상 동작, 조건별 기능 수행 여부, 다양한 입력값 조합에 대한 검증이 포함됩니다. 테스트의 복잡성에 따라 두 가지 프레임워크를 사용합니다.
TAP 테스트
TAP(Test Anything Protocol) 프레임워크는 각 테스트에 격리된 독립 환경을 제공합니다. 따라서 서버 재시작, 장애 시뮬레이션, 고동시성(concurrency) 상황 등을 안전하게 시뮬레이션할 수 있습니다.
예시:
- 손상된 클러스터에서 다양한 DML 및 DDL의 기대 동작 확인
- 특정 코드 경로에서 강제 패닉 발생
- 동시 조인(concurrent joins) 테스트 등
회귀 테스트
단일 PostgreSQL 인스턴스 내의 여러 데이터베이스를 사용해 여러 노드를 시뮬레이션합니다. 출력값을 예상 결과와 정확히 비교할 수 있는 시나리오에 초점을 맞춥니다. 클러스터 유형 변경이나 서비스 재시작 없이 단순한 2개 이상의 노드 구성에서 수행되며, 일반적인 유닛 테스트처럼 개별 기능 또는 연산을 검증합니다.
예시:
- 노드 생성, 조인 및 파트 수행
- BDR 루틴의 유효/무효 입력값
- 유효/무효 DML 및 DDL
- BDR 뷰 및 카탈로그의 기대 결과 검증
PGD 통합 테스트
통합 테스트는 전체 PGD 스택을 대상으로 클러스터의 전반적인 건전성을 검증합니다. 내부적으로 AV(Architecture Verification)라고 부르며, EDB의 tpaexec 도구로 클러스터를 프로비저닝하고 테스트합니다. 테스트는 Docker 또는 AWS EC2 같은 클라우드 환경에서 수행하며, 테스트 스크립트는 Ansible 기반 YAML로 작성합니다.
고가용성(HA) 테스트 시나리오
- 클러스터를 다양한 손상 상태로 만들기(raft 과반 유무 포함)
- 기본 클러스터 또는 CAMO/커밋 스코프가 적용된 클러스터 테스트
- 일부 테스트에서는 지속적인 부하를 적용하고 특정 트랜잭션 상태만 검증
- 클러스터 상태에 따라 달라지는 PGD의 트랜잭션 처리와 각 상태의 일관성 및 건전성 검증
예시:
- 로컬/글로벌 라우팅이 설정된 기본 클러스터 테스트
- CAMO 분리 뇌(Split Brain) 상황 테스트
- 다양한 커밋 스코프 적용 시 테스트
- Proxy/Connection Manager 및 CLI 테스트(연결성, CLI 명령, raft 및 write leader 선출, failover, switchover 등)
- 지속적 부하 환경에서 다양한 시나리오 검증
패키지 기반 업그레이드 테스트
- PGD 마이너 및 메이저 업그레이드 커버
- 이전 버전 노드에서 PGD 및 관련 오브젝트를 생성한 후 새 노드를 추가하거나
pg_upgrade를 사용해 업그레이드 수행 - 다양한 운영 체제에서 패키지 설치 및 클러스터 상태 점검
패키지 스모크 테스트
각 지원 버전, 플랫폼, 아키텍처별로 패키지를 빌드할 때 프로덕션 저장소에 업로드하기 전 패키지의 기본 건전성을 스모크 테스트로 확인합니다.
PGD 성능 테스트
EDB Performance Regression Framework를 활용해 PGD의 성능 벤치마크와 회귀 테스트를 수행합니다. 주요 목적은 코드 변경으로 성능이 저하되지 않도록 검증하는 것입니다.
성능 테스트 주요 지표
- TPS(초당 트랜잭션 수)
- 지연 시간(Latency)
테스트는 표준 PGD6 Essential Setup에 고정된 워크로드를 사용하며, PGD6 클러스터와 Connection Manager의 성능을 포함해 평가합니다.
변경 사항이 PGD6의 성능에 부정적인 영향을 주지 않도록 주간 단위로 실행하며 결과는 모두 문서화합니다. 기준선을 바탕으로 성능을 비교해 편차 여부를 확인합니다.
탐색적 테스트
릴리즈 테스트 중 PGD 팀은 탐색적 테스트도 수행합니다. 정형화된 테스트 외에 잠재적인 문제를 식별하기 위한 내부 품질 개선 활동이며, 탐색 결과가 자동화 테스트 생성으로 이어지기도 합니다.
PGD의 지속적인 테스트 전략
| 테스트 유형 | 세부 설명 | 빈도 |
|---|---|---|
| PR 테스트 | 각 Pull Request마다 업그레이드 테스트, 회귀 테스트, 중요 TAP 테스트를 실행하여 코드 변경이 문제를 일으키지 않도록 확인합니다. 테스트를 통과하지 않으면 병합이 차단되며, 동료 리뷰도 요구됩니다. | 매 PR마다 |
| 야간/주간 실행 | 회귀 테스트와 전체 TAP 테스트를 PGD-PG 버전별로 야간 실행. 다양한 구성 매트릭스로 테스트. AV 테스트는 70%는 매일, 30%는 매주 수행. 성능 테스트는 주간 실행. | 매일 / 매주 |
| 릴리즈 전 실행 | 릴리즈 전 모든 지원 배포판에서 철저한 업그레이드 테스트 및 AV 테스트를 실행 | 매일 / 릴리즈 직전 |
PGD 테스트 전략의 핵심
PGD는 철저하고 광범위한 테스트를 거쳐 미션 크리티컬 고객 애플리케이션의 요구를 충족하는 신뢰성과 고성능을 제공합니다.
PostgreSQL Distributed(PGD) 테스트 FAQ
PostgreSQL Distributed(PGD)는 어떤 테스트를 수행하나요?
PGD 팀은 기능 테스트, 통합 테스트, 패키지 스모크 테스트, 성능 테스트, 탐색적 테스트를 수행합니다. Pull Request, 야간·주간 실행, 릴리즈 전 실행으로 이어지는 지속적인 테스트 전략도 운영합니다.
PGD 기능 테스트에서 TAP 테스트와 회귀 테스트는 어떻게 다른가요?
TAP 테스트는 테스트마다 격리된 환경에서 서버 재시작, 장애, 고동시성 상황 등을 시뮬레이션합니다. 회귀 테스트는 단일 PostgreSQL 인스턴스의 여러 데이터베이스로 노드를 시뮬레이션하고, 개별 기능이나 연산의 출력값을 예상 결과와 비교합니다.
PGD 통합 테스트는 어떤 환경에서 진행되나요?
통합 테스트는 전체 PGD 스택을 대상으로 하며 내부적으로 AV(Architecture Verification)라고 부릅니다. EDB의 tpaexec로 클러스터를 프로비저닝하고, Docker 또는 AWS EC2 환경에서 Ansible 기반 YAML 테스트 스크립트를 실행합니다.
PGD 성능 테스트에서 확인하는 주요 지표는 무엇인가요?
주요 지표는 TPS(초당 트랜잭션 수)와 지연 시간(Latency)입니다. EDB Performance Regression Framework를 사용해 코드 변경에 따른 성능 편차를 기준선과 비교합니다.
PGD 테스트는 얼마나 자주 실행되나요?
중요 테스트는 각 Pull Request마다 실행되며, 회귀 테스트와 TAP 테스트는 야간 단위로 실행됩니다. AV 테스트의 70%는 매일, 30%는 매주 수행되고 성능 테스트도 주간 단위로 진행됩니다.
작성자 소개
Bharat Telange, Amruta Deolasee, Abhijit Save는 PGD 테스트 팀 소속으로, 다양한 PGD 제품 릴리즈에서 폭넓은 테스트 경험을 보유하고 있습니다.