json-configuration

2 개의 포스트

추상 구문 트리(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 에이전트나 복잡한 데이터 파이프라인을 코드로 작성한 후, 대시보드에서 자동으로 생성된 다이어그램을 통해 로직의 의도대로 흐름이 구성되었는지 즉시 확인할 수 있습니다. 시각화된 그래프는 코드 가독성을 보완하며, 특히 비동기 병렬 작업이 많은 워크플로우의 디버깅과 관리에 유용합니다.

Vale을 사용하여 문서 편집 프로세스를 개선 (새 탭에서 열림)

데이터독(Datadog)은 대규모 오픈 소스 기여자와 수많은 제품군을 보유한 환경에서 문서의 일관성과 품질을 유지하기 위해 'Vale'이라는 오픈 소스 산문 린터(Linter)를 도입했습니다. 이를 통해 수동 편집에 드는 리소스를 대폭 줄이고, 스타일 가이드를 코드로 관리함으로써 문서 검토 과정을 자동화하는 성과를 거두었습니다. 결과적으로 작성자가 코드를 제출하기 전 단계에서부터 스스로 문서를 수정할 수 있는 '시프트 레프트(Shift-left)' 문화를 정착시켜 전체적인 문서화 효율을 높였습니다. ### 대규모 문서 기여 관리의 한계 * 데이터독 문서팀은 약 14명의 작가가 1,400명 이상의 기여자(내부 개발자 및 외부 기여자)가 생성하는 문서를 관리하며, 작가 1인당 개발자 비율은 200대 1에 달합니다. * 2023년 한 해에만 35개 이상의 제품과 수백 개의 API, 통합 서비스에 대해 20,000개 이상의 풀 리퀘스트(PR)를 처리했습니다. * 당번 작가는 하루 평균 40개 이상의 PR을 검토해야 하므로, 수동으로 모든 문법, 어조, 스타일 가이드를 확인하는 것은 물리적으로 불가능한 상황이었습니다. ### Vale를 활용한 문서 스타일 린팅 자동화 * 오픈 소스 CLI 도구인 Vale를 작성 환경과 CI(지속적 통합) 워크플로우에 통합했습니다. * GitHub Actions를 통해 PR이 생성될 때마다 Vale이 HTML 및 마크다운 파일을 스캔하여 스타일 규칙 위반 사항을 자동으로 댓글로 남깁니다. * 너무 긴 문장, 불필요한 수식어 사용, 오래된 타자기 습관(이중 공백 등)을 자동으로 감지하여 작가가 검토하기 전에 기여자가 스스로 수정할 수 있게 합니다. ### 스타일 가이드의 코드화 (Codifying Style Guide) * 과거에는 컨플루언스(Confluence)나 위키 등에 흩어져 있던 편집 가이드라인을 `datadog-vale`이라는 오픈 소스 프로젝트를 통해 코드 형태로 변환했습니다. * YAML 형식을 사용하여 검증하고자 하는 스타일 규칙을 정의하며, 정규 표현식(RegEx)을 통해 특정 패턴(예: 옥스퍼드 콤마 누락)을 감지합니다. * 특정 단어(simply, easily 등)를 지양하게 하는 `words.yml`, 라틴어 약어 대신 쉬운 영어를 쓰게 하는 `abbreviations.yml` 등의 규칙을 통해 일관된 어조를 유지합니다. * 휴고(Hugo) 숏코드와 같이 스타일 검사에서 제외해야 할 영역은 정규 표현식으로 필터링하여 오탐지를 방지합니다. ### 실용적인 제언 대규모 팀이나 프로젝트를 운영하고 있다면 스타일 가이드를 단순히 문서로만 남기지 말고, Vale와 같은 도구를 사용해 자동화된 규칙으로 변환하는 것이 좋습니다. 데이터독이 공개한 `datadog-vale` 규칙을 참고하면 옥스퍼드 콤마 사용이나 전문 용어 관리 등을 손쉽게 자신의 프로젝트에 적용해 볼 수 있습니다.