workers

2 개의 포스트

PlanetScale + Workers로 Postgres 및 MySQL 데이터베이스 배포하기 (새 탭에서 열림)

Cloudflare와 PlanetScale의 파트너십 강화를 통해 이제 Cloudflare Workers 사용자는 Postgres 및 MySQL 데이터베이스를 Cloudflare 대시보드 내에서 직접 생성하고 관리할 수 있게 되었습니다. 데이터베이스 사용료는 Cloudflare 계정으로 통합 청구되며, Cloudflare 스타트업 프로그램 크레딧이나 약정된 지불액(Committed Spend) 또한 PlanetScale 데이터베이스 결제에 활용 가능합니다. 이를 통해 개발자들은 별도의 인프라 관리 부담 없이 강력한 관계형 데이터베이스를 Cloudflare 생태계 안에서 완벽하게 통합하여 사용할 수 있습니다. **Cloudflare 대시보드를 통한 데이터베이스 통합 관리** - 사용자는 Cloudflare 대시보드 및 API를 통해 PlanetScale의 Postgres와 MySQL 데이터베이스를 즉시 배포할 수 있습니다. - 데이터베이스 사용 비용이 Cloudflare 청구서에 통합되어 단일한 결제 시스템으로 관리되므로, 셀프 서비스 및 엔터프라이즈 고객의 운영 효율성이 높아집니다. - pgvector와 같은 확장 기능을 지원하는 Postgres와 대규모 확장성을 제공하는 Vitess 기반 MySQL을 선택하여 애플리케이션 요구사항에 맞게 구성할 수 있습니다. **Hyperdrive를 활용한 고성능 연결 환경** - Cloudflare의 데이터베이스 연결 서비스인 Hyperdrive가 기본 통합되어 PlanetScale 데이터베이스와 Workers를 효율적으로 연결합니다. - Hyperdrive는 데이터베이스 커넥션 풀링(Connection Pooling)과 쿼리 캐싱을 자동으로 수행하여 쿼리 성능과 안정성을 대폭 향상합니다. - 개발자는 `wrangler.jsonc` 설정 파일에 간단한 바인딩 정보를 추가하고, 표준 Postgres 클라이언트(예: `pg` 라이브러리)를 사용하여 즉시 SQL 쿼리를 실행할 수 있습니다. **Smart Placement를 이용한 네트워크 지연 시간 단축** - Workers의 'Placement' 힌트 기능을 사용하여, Worker가 PlanetScale 데이터베이스와 가장 가까운 Cloudflare 데이터 센터에서 실행되도록 설정할 수 있습니다. - 기본적으로 Workers는 사용자 위치에서 실행되지만, 중앙 집중식 데이터베이스를 사용할 때는 DB 서버 근처에서 실행되도록 조정함으로써 네트워크 레이턴시를 획기적으로 줄일 수 있습니다. - 향후에는 데이터베이스 위치에 따라 자동으로 실행 위치를 최적화하여 지연 시간을 한 자릿수 밀리초(ms) 단위로 단축하는 기능이 제공될 예정입니다. 현재 Cloudflare 대시보드에서 PlanetScale 데이터베이스를 바로 연결하여 사용할 수 있으며, 다음 달부터는 Cloudflare를 통한 통합 결제가 정식으로 시작됩니다. 고성능 풀스택 애플리케이션 구축을 고려 중이라면, 전 세계 어디서나 빠른 응답 속도를 보장하는 Cloudflare Workers와 PlanetScale의 결합을 적극 활용해 보시기 바랍니다.

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