추가 인프라 없이 Postgres + 백그라운드 워커만으로 동작, 별도 컨테이너나 외부 서비스 불필요
큐 관리·상태 추적·크래시 복구·단계 조정·재시도를 모두 담당하는 오케스트레이션 엔진 역할, 사용자는 SQL만 작성
pg_durable 없이 구현할 경우
3개 집계를 병렬 실행 후 대시보드를 갱신하면서 재시도와 크래시 복구까지 넣으려면 300줄 이상의 보일러플레이트 필요
직접 구축해야 하는 항목: 큐 설정 및 구성, 워커 관리 및 폴링, 메시지 처리 및 상태 추적, 에러 처리 및 재시도, 수동 단계 조정
예시 코드에는 job_queue, job_results, job_state, workflow_steps, step_variables, scheduled_jobs 등 다수의 상태 테이블과 폴링 워커, 워크플로 진행, 크래시 복구, 병렬 실행 코디네이터, 변수 전달, 스케줄링, 정리 함수가 포함
스케줄링의 next_run 계산에는 외부 cron 파서 라이브러리가 추가로 요구됨
pg_durable로 구현할 경우
동일한 병렬 집계 + 대시보드 갱신을 단일 df.start() 호출로 표현, & 연산자로 fan-out 후 ~> 로 join 처리
예: 3개 쿼리가 병렬로 분기된 뒤 refresh dashboard 단계로 합류해 결과 생성
라이브 실행 예시에서 3단계 병렬 실행 후 join → dashboard ready까지 1.9초만에 durable하게 완료
큐 관리, 상태 추적, 크래시 복구, 단계 조정, 재시도를 모두 pg_durable이 처리
주요 특징
Durable by default
모든 단계가 PostgreSQL에 상태를 체크포인트로 기록, 크래시·재시작·연결 끊김에도 워크플로 생존
중단된 지점에서 정확히 그대로 재개
Automatic retries
flaky 작업을 위한 재시도 로직 내장, 단계 실패 시 해당 단계만 재시도되고 나머지 워크플로는 계속 진행
수동 에러 처리 코드 불필요
Full observability in SQL
모든 워크플로 상태가 Postgres 테이블에 저장, 실행 이력 조회·단계 출력 확인·실패 디버깅을 표준 SQL로 수행
외부 대시보드 불필요
Parallel execution
& 연산자 또는 df.join() 으로 독립 작업을 fan-out, 집계·API 호출·ETL 단계를 자동 조정과 함께 동시 실행
만들 수 있는 패턴
ETL Pipelines
cleanup → transform → load를 순차 보장과 함께 연결, 각 단계가 이전 단계를 대기하고 실패 시 파이프라인을 깔끔히 중단 (~> sequence, |=> variables)
Parallel Aggregation
사용자 수 집계 + 매출 합산 + 재고 확인을 동시에 수행, 여러 쿼리로 fan-out 후 전체 완료 대기 (&, df.join())
Order Processing
주문 ID를 캡처해 검증·처리·완료 단계로 전달, 단계 간 변수가 자동 흐름 (|=> capture, $var substitution, df.sleep())
Scheduled Jobs
cron 스케줄로 API 폴링·레코드 아카이브·데이터 동기화, 루프가 영구 실행되며 재시작에도 생존 (@> loop, df.wait_for_schedule())
Conditional Branching
대기 작업·행 수·플래그를 확인해 처리 또는 건너뛰기 분기, 분기 로직이 애플리케이션이 아닌 SQL에 위치 (df.if(), ?> conditional)
Multi-step Validation
데이터 가져오기 → 스키마 검증 → 비즈니스 규칙 확인 → 승인/거부, 각 단계가 체크포인트되어 실패해도 진행 상황 유실 없음
Database Maintenance
autovacuum 차단 요소·테이블 bloat·wraparound 위험을 탐지해 검토용으로 노출, 승인 대기 후 재시작에도 durable하게 교정 (?> conditional, df.wait_for_signal(), @> loop)
Azure Functions & HTTP
df.http() 로 Azure Functions나 허용된 HTTPS 엔드포인트를 SQL에서 직접 호출, 문서 청킹·행 보강·레코드 분류를 인라인 처리
Human-in-the-Loop Approval
일상 작업은 자동 승인하고 고위험 작업(대형 청구서, 파괴적 작업)은 사람의 승인 신호 전까지 일시 정지 (df.wait_for_signal(), df.if())
AI 기반 작성 지원
워크플로를 평문 영어로 설명하면 Copilot이 올바른 durable-function SQL을 생성, 문법 학습 없이 원하는 내용만 기술
저장소에 재사용 가능한 에이전트 스킬 pg-durable-sql 포함, GitHub Copilot 및 기타 에이전트에 연산자·변수 치환·루프·병렬 join 등 올바른 SQL 생성법을 학습시킴
오픈소스 제공
대기 명단·락인 없이 완전 오픈소스로 제공, 저장소를 클론·빌드해 자신의 PostgreSQL에서 즉시 실행
노트북·서버·클라우드 어디서나 durable orchestration을 적용 가능
Azure HorizonDB 매니지드 옵션
Azure HorizonDB는 Microsoft의 새 PostgreSQL 클라우드 서비스로, pg_durable이 내장되어 작성한 durable function을 그대로 유지하면서 엔터프라이즈 확장·보안·AI 추가
최대 3× 빠른 성능, 스토리지 자동 확장 최대 128 TB, 컴퓨트 스케일아웃 최대 3,072 vCore
Microsoft Defender 실시간 위협 탐지, Microsoft Entra ID 신원 관리
Filtered DiskANN 벡터 검색, 시맨틱 랭킹, 인데이터베이스 AI 모델 큐레이션
Microsoft Fabric 근실시간 미러링, VS Code 통합, GitHub Copilot 연계
내장 AI 파이프라인
HorizonDB가 pg_durable의 durable 실행 위에 매니지드 엔드투엔드 AI 파이프라인을 계층화, 각 단계가 체크포인트·재시도·크래시 안전