피드로 돌아가기
InfoQInfoQ
Database

외부 오케스트레이터 제거한 PostgreSQL 네이티브 Durable Execution 구현

Microsoft Open-Sources PostgreSQL Extension for In-Database Durable Execution

Sergio De Simone2026년 6월 10일2advanced

Context

장기 실행 워크플로우 구현을 위해 cron, Message Queue, 외부 오케스트레이터를 개별적으로 연결해야 하는 아키텍처적 복잡성 존재. 분산 시스템 내 상태 복구 및 장애 대응을 위한 수동 상태 재구성 비용의 증가.

Technical Solution

  • PostgreSQL 내부에서 직접 워크플로우를 정의하고 실행하는 pg_durable 확장 모듈 도입
  • SQL 기반 DSL 및 특수 연산자(|=>, ~>)를 통한 순차 실행 및 결과 바인딩 구조 설계
  • Rust 기반의 duroxide 및 duroxide-pg 라이브러리를 활용한 Deterministic Replay와 Checkpointing 메커니즘 구현
  • 전용 스키마 내에 인스턴스, 히스토리, Work Queue를 지속성 있게 저장하여 Crash 및 Failover 시 마지막 체크포인트부터 자동 재개
  • 외부 Control Plane 없이 Background Worker만으로 구동되는 Minimal Architecture 지향
  • Parallel Execution 및 Join 연산을 통한 고효율 데이터 파이프라인 처리 구조 구축

1. 벡터 임베딩 파이프라인처럼 DB 내 데이터 처리와 외부 API 호출이 빈번한 워크플로우 검토

2. 분산 트랜잭션 복잡도를 낮추기 위해 상태 관리 로직을 애플리케이션 계층에서 DB 네이티브 계층으로 이동 가능성 분석

3. 외부 오케스트레이터 도입 전, DB Extension 기반의 경량 오케스트레이션으로 인프라 단순화 가능 여부 판단

원문 읽기