PostgreSQL 멀티 AZ 클러스터의 트랜잭션 가시성 문제: Jepsen 보고서 심층 분석

2025-05-03
PostgreSQL 멀티 AZ 클러스터의 트랜잭션 가시성 문제: Jepsen 보고서 심층 분석

최근 Jepsen 보고서는 Amazon RDS for PostgreSQL 멀티 AZ 클러스터에서 오랫동안 존재해 온 트랜잭션 가시성 문제를 강조합니다. 트랜잭션이 표시되는 순서는 프라이머리와 복제본에서 다릅니다. 이는 데이터 손실이나 손상을 유발하지 않으며, 단일 AZ 배포 또는 Aurora 데이터베이스에는 영향을 미치지 않습니다. 이 문제는 'Long Fork' 이상 현상과 관련이 있으며, 스냅샷 격리가 위반됩니다. 이 게시물에서는 근본 원인(ProcArray 및 WAL의 비동기 업데이트)을 자세히 설명하고, 이로 인해 일관성 없는 결과가 발생하는 방식을 보여줍니다(예: Alice와 Bob이 Hacker News 기사 순위를 다르게 관찰). 애플리케이션의 정확성에 영향을 미치는 경우는 드물지만, PostgreSQL 클러스터의 엔터프라이즈급 기능을 위해서는 수정이 필수적입니다. AWS는 PostgreSQL 커뮤니티와 협력하여 이 문제를 해결하고 있으며, 트랜잭션 순서에 대한 애플리케이션의 가정을 검토하거나 명시적 동기화 메커니즘을 사용하는 등의 해결 방법을 제공합니다.