피드로 돌아가기
pg_durable - PostgreSQL을 위한 내구성 SQL 함수
GeekNewsGeekNews
Database

pg_durable - PostgreSQL을 위한 내구성 SQL 함수

인프라 추가 없이 PostgreSQL만으로 구현한 Durable Function 오케스트레이션

xguru2026년 6월 6일18advanced

Context

분산 워크플로 구현 시 큐 관리, 상태 추적, 재시도 로직 등 방대한 보일러플레이트 코드가 필수적임. 외부 오케스트레이터 도입 시 데이터 저장소와 실행 상태 간의 동기화 문제 및 인프라 복잡성 증가라는 한계가 존재함.

Technical Solution

  • PostgreSQL 내부에 상태 체크포인트를 기록하는 SQL DSL 기반의 오케스트레이션 엔진 설계
  • 모든 실행 단계의 상태를 DB 테이블에 저장하여 크래시 발생 시 중단 지점부터 정확히 재개하는 Durable by default 구조 채택
  • & 연산자를 통한 Parallel fan-out과 ~> 연산자를 이용한 Sequential join으로 복잡한 워크플로 제어 로직을 SQL 수준에서 추상화
  • df.http()를 통한 외부 API 호출 및 df.wait_for_signal()을 이용한 Human-in-the-Loop 승인 프로세스 통합
  • 데이터베이스 스냅샷 및 PITR(Point-in-Time Recovery)을 통해 워크플로 상태와 데이터를 원자적으로 복구하는 일관성 확보

1. 단순 SQL 쿼리를 넘어선 복잡한 상태 머신이 필요한 ETL 파이프라인 검토

2. 외부 큐 서비스 도입 전 DB 기반의 Durable Function으로 인프라 단순화 가능성 타진

3. 비즈니스 로직의 DB 내재화에 따른 버전 관리 및 테스트 전략 수립 여부 확인

원문 읽기