-
OpenWorkers는 V8 기반에서 JavaScript를 실행하는 오픈소스 런타임으로, 엣지 컴퓨팅을 자체 인프라에서 구현할 수 있음
-
KV 저장소, PostgreSQL, S3/R2 호환 스토리지, 서비스 바인딩, 환경 변수 및 시크릿을 지원
-
fetch, ReadableStream, crypto.subtle 등 주요 Web API를 포함해 Cloudflare Workers와 높은 호환성 유지
-
V8 Isolate 샌드박스, 크론 스케줄링, Docker Compose 기반 배포 등으로 간단한 셀프호스팅 가능
- 약 7년간 발전해온 프로젝트로, 벤더 종속 없는 JavaScript 실행 환경을 목표로 함
OpenWorkers 개요
-
OpenWorkers는 Rust로 작성된 Cloudflare Workers 호환 런타임으로, V8 Isolate를 이용해 JavaScript를 실행
- 엣지 컴퓨팅의 장점을 자체 서버 환경에서도 활용 가능
- 오픈소스로 공개되어 자유롭게 배포 및 수정 가능
주요 기능
-
바인딩(Bindings) 기능을 통해 다양한 외부 리소스와 연동
-
KV 스토리지: get, put, delete, list 지원
-
PostgreSQL 데이터베이스 연동
-
S3/R2 호환 스토리지 지원
-
서비스 바인딩, 환경 변수 및 시크릿 관리 포함
-
Web API 지원
-
fetch, Request, Response, ReadableStream 등 표준 API 제공
-
crypto.subtle, TextEncoder/Decoder, Blob, setTimeout, AbortController 포함
아키텍처
- 시스템은 nginx 프록시, 대시보드, API, 로그 서비스, 러너(runner) , PostgreSQL, NATS, 스케줄러 등으로 구성
- 각 러너는 V8 Isolate 내에서 코드를 실행하며, CPU 100ms, 메모리 128MB 제한 적용
-
5~6 필드 크론 문법을 지원하는 내장 스케줄러 포함
- Cloudflare Workers와 문법 호환성 유지
셀프호스팅
- 배포는 단일 PostgreSQL 데이터베이스와 Docker Compose 파일만으로 가능
-
git clone, .env 설정, docker compose up 명령으로 손쉽게 실행
- 마이그레이션 및 토큰 생성 절차 포함
개발 배경
- 약 7년간의 개발 과정을 거쳐 완성된 프로젝트
- 초기에는 vm2로 JS 샌드박싱을 실험, 이후 Cloudflare Workers 모델에 영감을 받아 발전
-
Deno-core를 거쳐 현재는 rusty_v8 기반으로 재작성
- 목표는 Cloudflare Workers 수준의 개발 경험(DX) 을 제공하면서 벤더 종속을 제거한 자체 서버 실행 환경 구축
- 향후 실행 기록 및 재생 기능을 통한 결정적 디버깅(deterministic debugging) 기능 추가 예정