추상 구문 트리(AST)를 사용하여 워크플로 코드를 시각적 다이어그램으로 변환하는 방법 (새 탭에서 열림)
Cloudflare Workflows는 코드로 작성된 복잡한 실행 로직을 추상 구문 트리(AST) 분석을 통해 시각적인 다이어그램으로 변환하여 제공합니다. 기존의 선언적 방식(JSON, YAML)과 달리 자유로운 코드 작성이 가능한 동적 실행 모델을 채택하고 있어, 정적 분석을 통해 비동기 관계와 실행 흐름을 파악하는 것이 핵심입니다. 이를 통해 개발자는 병렬 처리, 루프, 조건문이 포함된 복잡한 워크플로우의 구조를 대시보드에서 한눈에 파악하고 검증할 수 있습니다.
동적 실행 모델과 시각화의 도전 과제
- Cloudflare Workflows는 순차적인 정적 실행이 아닌, 런타임이 코드를 읽으며 단계를 만날 때마다 엔진에 실행을 넘기는 동적 모델을 따릅니다.
await를 사용하지 않은 단계(step)들은 기본적으로 병렬로 실행되며, 엔진은 실행 시점에 전체 경로를 미리 알 수 없기 때문에 시각화를 위한 별도의 분석이 필요합니다.- 개발자가 작성한 유연한 제어 흐름(Promise.all, 루프, 중첩 함수 등)을 정확한 그래프 형태로 표현하기 위해 정적 분석 기술이 도입되었습니다.
AST를 활용한 코드 파싱 및 그래프 생성
- 워크플로우 배포 시점에 스크립트를 캡처하여 추상 구문 트리(AST)로 파싱하고, 전체 구조를 분석하는 과정을 거칩니다.
- 코드 내에서
Promise와await사이의 관계를 추적하여, 어떤 작업이 블로킹(Blocking)되는지 또는 병렬로 연결되는지를 식별합니다. - 내부 서비스를 통해
WorkflowEntrypoints와 각 단계(step) 호출을 연결하는 중간 그래프를 생성한 뒤, 이를 기반으로 최종 다이어그램을 렌더링합니다.
번들링 및 압축된 코드의 처리
- 배포되는 코드는 보통 esbuild와 같은 번들러에 의해 압축(Minify) 및 변형되어 가독성이 매우 낮은 상태가 됩니다.
- 난독화된 JavaScript 코드 내에서도
step.do와 같은 핵심 호출 패턴을 정확히 찾아내어 워크플로우의 논리적 단계를 복구합니다. - 번들러마다 다른 압축 방식에도 대응할 수 있도록 AST 기반의 탐색 로직을 최적화하여, 복잡한 비동기 에이전트 로직도 정확하게 시각화합니다.
개발자는 이제 AI 에이전트나 복잡한 데이터 파이프라인을 코드로 작성한 후, 대시보드에서 자동으로 생성된 다이어그램을 통해 로직의 의도대로 흐름이 구성되었는지 즉시 확인할 수 있습니다. 시각화된 그래프는 코드 가독성을 보완하며, 특히 비동기 병렬 작업이 많은 워크플로우의 디버깅과 관리에 유용합니다.