AI 요약
지속성 있는 워크플로우(Durable workflows)는 프로그램 실행 중 주기적으로 상태를 데이터베이스에 체크포인트하여, 시스템이 다운되거나 실패하더라도 마지막 저장 지점부터 안전하게 복구할 수 있도록 돕는 강력한 소프트웨어 아키텍처 패턴입니다. 그동안 이 패턴은 Temporal, Airflow, AWS Step Functions와 같은 외부 오케스트레이션 엔진을 통해 구현되어 왔습니다. 그러나 본 기사는 이 같은 외부 오케스트레이터 방식이 불필요하게 복잡하다고 지적하며, 널리 보급된 Postgres 데이터베이스를 직접 오케스트레이터로 사용하는 단순하고 효율적인 대안을 제시합니다. 이 아키텍처에서는 중앙 오케스트레이터 서버 대신 애플리케이션 서버들이 Postgres와 직접 통신하며 워크플로우 테이블을 폴링하고 작업을 수행합니다. Postgres의 강력한 잠금 기능과 무결성 제약 조건 덕분에 별도의 외부 시스템 없이도 안전하고 고신뢰성의 분산 작업 처리가 가능해집니다.
핵심 인사이트
- 외부 오케스트레이션 시스템의 한계: Temporal, Airflow, AWS Step Functions 등 기존의 도구들은 중앙 오케스트레이터가 상태 저장소와 워커 간의 작업을 중계하는 복잡한 단계를 거칩니다.
- Postgres 중심 아키텍처: 지속성 있는 워크플로우의 본질은 결국 '데이터베이스 상태 저장'이므로, 검증된 DBMS인 Postgres를 활용하면 별도의 오케스트레이터 서버를 구축할 필요가 없습니다.
- 동시성 제어의 단순화: Postgres의 데이터베이스 무결성 제약 조건(Integrity Constraints)과 락킹(locking) 메커니즘을 이용하면 복수의 워커가 동시에 실행되어 발생하는 중복 작업을 완벽히 방지하고 백오프(back off) 시킬 수 있습니다.
주요 디테일
- 작업 큐잉과 디큐(Dequeue): 클라이언트가 Postgres 내
workflows테이블에 엔트리를 생성하면, 애플리케이션 서버들이 이를 폴링하여 안전하게 작업을 가져가 수행합니다. - 체크포인트 간소화: 워커 역할을 하는 서버가 각 단계의 처리 결과를 오케스트레이터를 거치지 않고 Postgres에 직접 체크포인트하기 때문에 통신 오버헤드가 크게 줄어듭니다.
- 안전한 장애 복구: 특정 애플리케이션 서버에 장애가 발생하더라도, 다른 서버가 Postgres의 마지막 체크포인트를 기반으로 중단되었던 워크플로우를 즉시 이어서 실행할 수 있습니다.
- 인프라 슬림화: 이 방식을 도입하면 불필요한 중앙 오케스트레이터 관리 포인트가 제거되어 개발 및 유지보수 비용을 낮추고 아키텍처적 일관성을 높일 수 있습니다.
향후 전망
- 복잡한 대규모 인프라 운영 부담을 줄이기 위해, 많은 기업이 전용 오케스트레이터 도구 대신 이미 도입되어 있는 Postgres를 활용한 경량화 워크플로우 설계로 회귀할 가능성이 있습니다.
- DBOS 등과 같이 Postgres를 기반으로 분산 지속성 실행(Durable Execution)을 네이티브하게 지원하는 새로운 프레임워크와 라이브러리 생태계가 더욱 가파르게 성장할 것으로 전망됩니다.
