Vercel의 오픈소스 Workflow Development Kit(WDK)은 기존 async/await 함수를 충돌·재배포 후에도 중단 지점에서 정확히 재개되는 지속성 워크플로우로 변환하는 TypeScript 프레임워크다. use workflow와 use step 두 지시문만으로 메시지 큐, 재시도 로직, 상태 저장 계층을 언어 수준에 통합하며, 결정론적 재생(deterministic replay) 방식으로 신뢰성을 보장한다.
핵심 포인트- use workflow 지시문: 일반 비동기 함수를 지속성 워크플로우로 변환 — 별도 큐/스케줄러 없이 자동 상태 보존
- use step 지시문: 각 작업 단위를 자동 지속성·재시도가 있는 격리된 실행 단위로 컴파일
- 결정론적 재생: 각 스텝 입출력을 기록해 재시작 시 동일 입력으로 중단 지점 복원
- sleep("3d") 중 리소스 미소모 — 외부 이벤트 대기 시간 동안 컴퓨팅 비용 없음
- Worlds 추상화로 로컬/Vercel 프로덕션/커스텀 백엔드를 분리, 벤더 락인 없음
상세 정리- 기존 문제: 장시간 실행 워크플로우에서 서버 재시작·충돌 시 중간 상태 소실, 외부 이벤트 폴링 필요, 수동 재시도 구현 부담
- use workflow 동작: 함수 상단에 'use workflow' 추가만으로 지속성 활성화, 기존 async/await 코드 구조 그대로 유지
- use step 컴파일: 'use step'으로 묶인 각 단위가 별도 API 경로로 컴파일 → 단계별 입출력 자동 저장, 실패 시 해당 스텝부터만 재시작
- 결정론적 재생: 재시작 시 이전 스텝 결과를 로컬 기록에서 복원, 실제 외부 호출 없이 동일 흐름 재현
- sleep 구현: await sleep("3d")로 분~월 단위 일시중지, 기간 중 컴퓨팅 리소스 미보유, 알람 기반으로 정확히 재개
- 웹훅 대기: 결제 확인·사용자 승인·서드파티 API 응답 등 외부 이벤트 도착 시 폴링 없이 자동 워크플로우 재개
- 관찰성: 모든 스텝·입출력·일시중지·오류가 이벤트 로그에 저장, CLI + Web UI로 시각화, 일시정지·재생·시간 역행 디버깅 지원
- Worlds 계층: Local World(가상 인프라로 개발), Vercel World(프로덕션 자동 프로비저닝), Custom World(Postgres 참조 구현 등) — 클라우드 독립적
왜 읽나AI 에이전트 루프, 다단계 승인 플로우, 장시간 데이터 파이프라인처럼 중간 상태 보존이 중요한 서버리스 워크플로우를 구현하는 백엔드·풀스택 개발자.