2P by GN⁺ 4시간전 | ★ favorite | 댓글과 토론
  • AI 에이전트의 코드 실행을 위한 경량 샌드박스, 컨테이너 대비 100배 빠른 기동 속도와 10~100배 높은 메모리 효율 제공
  • V8 JavaScript 엔진의 isolate 기술 기반으로, 수 밀리초 내 시작되며 수 메가바이트만 사용하므로 요청마다 새 샌드박스를 생성하고 폐기하는 운용이 가능
  • 에이전트가 도구 호출 대신 TypeScript 코드를 직접 작성·실행하는 Code Mode 방식으로 토큰 사용량을 81%까지 절감
  • HTTP 필터링, 크레덴셜 인젝션, 가상 파일시스템 등 보안·유틸리티 라이브러리를 함께 제공하여 에이전트 개발 생태계 구축
  • 컨테이너 기반 샌드박스의 비용·지연·확장성 한계를 넘어, 소비자 규모의 에이전트 서비스를 가능하게 하는 인프라 전환

배경: 에이전트 코드 실행의 보안 문제

  • 에이전트(또는 MCP 서버)가 AI가 즉석에서 생성한 코드를 실행하려면, 해당 코드가 안전한 환경에서 동작해야 함
  • 앱 내에서 eval()로 직접 실행하면 악의적 사용자가 프롬프트 인젝션을 통해 취약점을 삽입할 수 있음
  • 애플리케이션과 외부 세계로부터 격리된 샌드박스가 필요하며, 코드가 접근해야 하는 특정 기능만 허용해야 함

기존 컨테이너 방식의 한계

  • 현재 업계 대부분은 Linux 기반 컨테이너를 샌드박스로 사용 중
  • 컨테이너는 부팅에 수백 밀리초, 실행에 수백 메가바이트 메모리 소요
  • 지연 방지를 위해 워밍(warm) 상태 유지가 필요하고, 기존 컨테이너를 여러 작업에 재사용하면 보안이 저하됨
  • 모든 최종 사용자가 에이전트를 갖고 각 에이전트가 코드를 작성하는 소비자 규모에서는 컨테이너로 충분하지 않음

Dynamic Worker Loader: 경량 샌드박스

  • Cloudflare Worker가 런타임에 코드를 지정하여 새로운 Worker를 자체 샌드박스 내에서 즉석 생성할 수 있는 API
  • 지난 9월 Code Mode 게시물에서 실험적 기능으로 소개되었으며, 현재 오픈 베타로 모든 유료 Workers 사용자에게 제공
  • Worker 생성 시 compatibilityDate, mainModule, modules로 코드를 지정하고, env로 RPC 스텁을 전달하며, globalOutbound으로 인터넷 접근을 차단하거나 인터셉트 가능

100배 빠른 속도

  • Dynamic Workers는 Cloudflare Workers 플랫폼이 8년간 사용해 온 동일한 샌드박싱 메커니즘인 V8 isolate 기반
  • isolate는 Google Chrome에서 사용하는 것과 동일한 V8 JavaScript 실행 엔진의 인스턴스
  • 시작에 수 밀리초, 메모리 사용량 수 메가바이트로, 컨테이너 대비 약 100배 빠르고 10~100배 메모리 효율적
  • 모든 사용자 요청마다 새 isolate를 생성하고, 코드 한 조각을 실행한 뒤 폐기하는 운용 가능

무제한 확장성

  • 많은 컨테이너 기반 샌드박스 제공업체가 글로벌 동시 샌드박스 수와 생성 속도에 제한을 부과
  • Dynamic Worker Loader는 플랫폼을 구동해 온 것과 동일한 기술의 API이므로 이러한 제한 없음
  • 초당 백만 건의 요청을 처리하되, 매 요청마다 별도의 Dynamic Worker 샌드박스를 로드하여 동시 실행 가능

제로 레이턴시

  • 일회성 Dynamic Workers는 보통 생성한 Worker와 동일한 머신, 동일한 스레드에서 실행
  • 워밍된 샌드박스를 찾기 위해 전 세계 통신이 불필요하며, 요청이 도착한 곳에서 바로 실행
  • Cloudflare의 수백 개 글로벌 로케이션 모두에서 지원

JavaScript 전용 실행 환경

  • 컨테이너 대비 유일한 제약은 에이전트가 JavaScript를 작성해야 한다는 점
  • Workers는 기술적으로 Python과 WebAssembly도 지원하지만, 에이전트가 즉석 생성하는 작은 코드 조각에는 JavaScript가 훨씬 빠르게 로드·실행됨
  • LLM은 모든 주요 언어에 능숙하며, JavaScript 학습 데이터가 방대
  • JavaScript는 웹의 특성상 샌드박싱을 위해 설계된 언어

TypeScript로 정의하는 도구 API

  • MCP는 플랫 도구 호출 스키마만 정의하고, OpenAPI는 REST API를 표현하지만 스키마 자체와 호출 코드가 모두 장황함
  • JavaScript에 노출되는 API에는 TypeScript가 단일한 최적 답
  • TypeScript 인터페이스는 동일한 OpenAPI 스펙 대비 훨씬 적은 토큰으로 API를 정확하게 기술 가능
  • Workers Runtime이 샌드박스와 호스트 코드 사이에 Cap'n Web RPC 브리지를 자동 설정하여, 에이전트가 로컬 라이브러리처럼 API를 호출 가능

HTTP 필터링과 크레덴셜 인젝션

  • globalOutbound 옵션으로 모든 HTTP 요청에 대한 콜백을 등록하여, 요청 검사·재작성·인증 키 주입·차단 등 수행 가능
  • 크레덴셜 인젝션(토큰 인젝션): 에이전트가 인증이 필요한 서비스에 HTTP 요청을 보낼 때, 나가는 요청에 크레덴셜을 추가하여 에이전트 자체는 비밀 크레덴셜을 알지 못하게 함
  • 잘 알려진 API가 에이전트 학습 데이터에 포함된 경우나 REST API 기반 라이브러리를 샌드박스 내에서 실행할 때 유용
  • 다만 호환성 요구가 없다면 TypeScript RPC 인터페이스가 HTTP보다 우수: 적은 토큰 소비, 더 간결한 호출 코드, API 표면을 정확하게 좁히기 용이

검증된 보안 아키텍처

  • isolate 기반 샌드박스는 하드웨어 가상 머신보다 복잡한 공격 표면을 가지며, V8의 보안 버그가 일반 하이퍼바이저보다 빈번
  • 약 10년간 isolate 기반 플랫폼을 보안해 온 경험 보유
  • V8 보안 패치를 Chrome보다 빠르게 수 시간 내 프로덕션 배포
  • 커스텀 2차 레이어 샌드박스와 리스크 평가 기반 동적 테넌트 코르도닝(cordoning) 적용
  • MPK 같은 하드웨어 기능을 활용한 V8 샌드박스 확장
  • TU Graz와 협력하여 Spectre 방어 등 새로운 방어 기법 개발
  • 악성 패턴 자동 스캔 및 차단/추가 샌드박싱 시스템 운용

헬퍼 라이브러리

Code Mode (@cloudflare/codemode)

  • 모델이 생성한 코드를 Dynamic Workers로 AI 도구에 대해 실행하는 것을 단순화하는 라이브러리
  • 핵심은 DynamicWorkerExecutor()로, 코드 정규화를 통해 일반적인 포매팅 오류를 처리하고 globalOutbound 페처에 직접 접근 가능
  • codeMcpServer({ server, executor })는 기존 MCP Server를 래핑하여 도구 표면을 단일 code() 도구로 대체
  • openApiMcpServer({ spec, executor, request })는 OpenAPI 스펙과 실행기를 받아 search()execute() 도구를 갖춘 완전한 MCP Server를 자동 구축

번들링 (@cloudflare/worker-bundler)

  • Dynamic Workers가 기대하는 사전 번들된 모듈을 생성
  • 소스 파일과 package.json을 제공하면 npm 의존성 해결, esbuild로 번들링, Worker Loader가 기대하는 모듈 맵 반환
  • createApp을 통해 서버 Worker, 클라이언트 JavaScript, 정적 에셋을 함께 번들링하는 풀스택 앱 지원
  • 콘텐츠 타입, ETag, SPA 라우팅을 처리하는 내장 에셋 서빙 포함

파일 조작 (@cloudflare/shell)

  • Dynamic Worker 내부에서 에이전트에게 가상 파일시스템 제공
  • state 객체의 타입화된 메서드로 read, write, search, replace, diff, glob, JSON 쿼리/업데이트, 아카이브 등 수행
  • 스토리지는 내구성 있는 Workspace(SQLite + R2)로 백업되어 실행 간 파일 유지
  • searchFiles, replaceInFiles, planEdits 같은 대규모 작업으로 RPC 왕복 최소화 — 개별 파일 루프 대신 한 번 호출
  • 배치 쓰기는 기본적으로 트랜잭셔널: 하나라도 실패하면 이전 쓰기 자동 롤백
  • 사전 빌드된 TypeScript 타입 선언과 시스템 프롬프트 템플릿 제공

활용 사례

Code Mode 활용

  • 에이전트가 순차적 도구 호출 대신 TypeScript 함수 하나를 작성하여 여러 API 호출을 체이닝, Dynamic Worker에서 실행 후 최종 결과만 반환
  • 중간 단계가 아닌 출력만 컨텍스트 윈도우에 들어가므로 레이턴시와 토큰 사용량 모두 감소
  • Cloudflare MCP 서버가 이 방식으로 구축: 전체 Cloudflare API를 단 2개 도구(search, execute) 와 1,000 토큰 미만으로 노출

커스텀 자동화 구축

  • Zite는 사용자가 채팅 인터페이스로 상호작용하는 앱 플랫폼을 구축 중
  • LLM이 배후에서 TypeScript를 작성하여 CRUD 앱 생성, Stripe·Airtable·Google Calendar 연결, 백엔드 로직 실행
  • 각 자동화가 자체 Dynamic Worker에서 실행되며, 해당 엔드포인트에 필요한 특정 서비스와 라이브러리에만 접근
  • Zite CTO Antony Toron: "즉각적이고, 격리되며, 안전한 실행 레이어"로서 벤치마크한 모든 플랫폼 중 속도와 라이브러리 지원에서 최고 성능, 현재 매일 수백만 건의 실행 요청 처리 중

AI 생성 애플리케이션 실행

  • AI로 완전한 애플리케이션을 생성하는 플랫폼 구축에 활용
  • 각 앱을 온디맨드로 생성하고, 다시 호출될 때까지 콜드 스토리지에 보관
  • 빠른 기동 시간으로 활발한 개발 중 변경 사항 미리보기 용이
  • 생성된 코드의 네트워크 요청을 차단하거나 인터셉트하여 AI 생성 앱의 안전한 실행 보장

가격 정책

  • 동적으로 로드된 Workers는 하루당 고유 Worker 로드 기준 $0.002 과금 (일반 Workers의 CPU 시간 및 호출 요금 별도)
  • AI 생성 "Code Mode" 사용 사례에서 모든 Worker가 일회성이므로 로드당 $0.002이며, 코드 생성을 위한 추론 비용 대비 일반적으로 무시할 수 있는 수준
  • 베타 기간 중 $0.002 요금 면제