Notion이 사용자 임의 코드를 대규모로 안전하게 실행하는 Notion Workers 시스템의 인프라 아키텍처를 공개했다. Vercel Sandbox 위에서 Firecracker 마이크로VM, 자격증명 주입 프록시, 동적 네트워크 정책, 파일시스템 스냅샷 4가지 핵심 기술을 조합해 격리·보안·성능·비용 효율성을 동시에 달성했다.
핵심 포인트- Firecracker 기반 마이크로VM으로 각 Worker를 강격리한다. 독립 커널/파일시스템/네트워크 스택을 가지며 실행 종료 후 삭제 또는 스냅샷으로 저장된다.
- 방화벽 프록시가 발신 요청을 가로채 API 키를 주입한다. 코드는 자격증명에 직접 접근할 수 없어 프롬프트 인젝션을 통한 시크릿 탈취를 차단한다.
- 런타임 중 네트워크 정책을 동적으로 변경한다. 의존성 설치 단계에는 인터넷 허용, 사용자 코드 실행 직전에는 송신을 차단한다.
- 파일시스템 스냅샷으로 의존성을 최초 1회만 설치하고 이후 호출에서 즉시 복원한다. CPU 사용 시간에만 과금해 I/O 대기 비용을 제거했다.
- 데이터 동기화, 커스텀 자동화, AI 에이전트 도구 호출 3가지 실행 패턴을 지원하며 수백만 사용자 동시 실행 규모를 목표로 한다.
상세 정리- 배경: Notion은 사용자가 Custom Agents를 코드로 확장하는 Notion Workers를 출시했다. 핵심 과제는 수백만 사용자의 임의 코드를 상호 격리하면서 보안과 성능을 모두 만족시키는 것이었다.
- 격리 요구사항: 한 Worker가 다른 Worker의 데이터나 상태에 접근하면 안 되고, 외부 API 키는 코드에 노출되면 안 되며, 기업 고객은 Worker의 네트워크 접근 범위를 제어해야 했다.
- Firecracker 마이크로VM 선택 이유: 컨테이너보다 강력한 격리가 필요했다. 마이크로VM은 독립 커널을 부팅해 게스트 간 커널 공유가 없고, 각 VM이 별도 파일시스템과 네트워크 스택을 가진다.
- 자격증명 주입 메커니즘: 방화벽 프록시가 VM의 발신 HTTP 요청을 가로채 API 키를 헤더에 삽입한다. 코드 내부에서 자격증명에 접근하지 못하므로 LLM 프롬프트 인젝션으로 시크릿을 빼낼 수 없다.
- 동적 네트워크 정책: 런타임 중 네트워크 정책 변경이 가능하다. 의존성 설치 시에는 npm 등 외부 레지스트리를 허용하고, 사용자 코드 실행 직전에 송신을 차단해 네트워크 공격 벡터를 제거한다.
- 파일시스템 스냅샷: 의존성 설치 후 파일시스템 상태를 스냅샷으로 저장한다. 이후 호출에서 스냅샷을 즉시 복원해 콜드 스타트 지연을 줄이고, 설치 단계를 반복하지 않는다.
- 과금 모델: CPU 사용 시간에만 과금한다. I/O 대기나 네트워크 응답 대기 시간은 비용에 포함되지 않아 에이전트 작업처럼 CPU 사용률이 낮은 워크로드에서 비용 효율이 높다.
- 플랫폼 추상화: Vercel Sandbox가 마이크로VM 관리, 자격증명 주입, 네트워크 정책 엔진의 복잡성을 처리한다. Notion은 개발자 경험 레이어에만 집중할 수 있었다.
- 실행 패턴 3가지: CRM/분석/지원 티켓 데이터를 주기적으로 동기화하는 데이터 동기화, 버튼 클릭으로 임의 코드를 실행하는 커스텀 자동화, AI 에이전트가 Worker를 도구로 호출하는 에이전트 도구 확장.
- 확장성 설계: 수백만 사용자의 동시 실행을 지원한다. 빠른 스냅샷 복원과 마이크로VM의 신속한 스핀업이 확장성의 핵심 요소다.
왜 읽나멀티 테넌트 코드 실행 환경, AI 에이전트 플러그인 인프라, 또는 신뢰할 수 없는 사용자 코드를 안전하게 실행해야 하는 플랫폼을 설계하는 백엔드·인프라 엔지니어에게 Firecracker 기반 샌드박스의 실전 아키텍처 레퍼런스다.