피드로 돌아가기
Durable Workflows on Postgres: What "You Don't Need Temporal" Actually Buys You
Dev.toDev.to
Backend

별도 오케스트레이터 없이 Postgres 트랜잭션 기반 Exactly-once 워크플로우 구현

Durable Workflows on Postgres: What "You Don't Need Temporal" Actually Buys You

Conor Dobbs2026년 6월 5일6intermediate

Context

분산 시스템의 다단계 작업 수행 중 장애 발생 시 중복 실행으로 인한 데이터 정합성 오류 및 비용 발생 문제 직면. 기존 Temporal과 같은 외부 오케스트레이터 도입은 인프라 복잡도 증가와 별도의 상태 관리 비용을 초래하는 한계 존재.

Technical Solution

  • DBOS의 Postgres 기반 Checkpointing 도입을 통한 워크플로우 상태 직접 관리
  • 작업 수행과 상태 기록을 단일 Postgres Transaction으로 묶어 원자적 커밋 보장
  • Integrity Constraints를 활용한 중복 워커의 경합 제어 및 실행 무결성 확보
  • SELECT ... FOR UPDATE SKIP LOCKED 구문 기반의 DB 큐 구현으로 별도 메시지 브로커 제거
  • SQL 쿼리를 통한 워크플로우 상태 추적 및 가시성 확보로 Observability 단순화
  • 외부 API 호출 등 DB 외부 시스템과의 상호작용 시 Idempotency Key 적용 필수 설계

1. 워크플로우 부하가 앱 트래픽과 비례하는지 확인하여 단일 DB 통합 여부 결정

2. 외부 시스템 API 호출 단계에 Idempotency Key가 설계되었는지 검토

3. 별도 오케스트레이터 도입 전 Postgres의 SKIP LOCKED 기반 큐로 대체 가능한지 분석

4. 상태 관리를 위한 DB I/O 증가가 메인 쿼리 성능에 미치는 영향 시뮬레이션

원문 읽기