Erlang/OTP 위에서 JavaScript를? QuickBEAM의 등장!

by DD
2개월 전
조회수 18

QuickBEAM은 Erlang/OTP VM 내에서 JavaScript를 실행하는 런타임으로, SSR, 샌드박싱, OTP 상호 운용성을 제공함

TypeScript, npm 지원, 네이티브 DOM을 포함하며, Node.js 없이 풀스택 개발을 가능하게 함

JS 런타임은 감독(Supervision)되며 재시작 가능하고, 메모리/리덕션 제한 및 API 제어를 통해 샌드박싱을 지원함

커뮤니티에서는 Node.js 의존성 제거 및 Erlang/OTP 생태계와의 통합에 대한 높은 관심을 보임

QuickBEAM의 기술적 특징

QuickBEAM은 JavaScript 런타임을 Erlang/OTP 환경에 통합하여 OTP 프로세스(OTP Processes)로 관리한다. 각 런타임은 `Beam` 글로벌 객체를 통해 Elixir 코드 호출, 메시지 송수신, 프로세스 생성 및 모니터링, 런타임/시스템 상태 검사가 가능하다. 특히, 네이티브 DOM(Native DOM)을 지원하여 문자열 렌더링 단계를 거치지 않고 Erlang에서 직접 DOM을 읽을 수 있다는 점이 주목할 만하다.

성능 및 샌드박싱(Sandboxing) 전략

QuickBEAM은 메모리/리덕션 제한(Memory/Reduction Limits)을 통해 샌드박싱을 구현하여, 안전한 환경에서 JavaScript 코드를 실행한다. 벤치마크에 따르면, QuickBEAM은 QuickJSEx 0.3.1보다 함수 호출(Function Call)에서 최대 4.1배, 동시 JS 실행(Concurrent JS Execution)에서 1.35배 빠르다. 또한, Context Pool을 활용하여 대규모 연결(Thousands of Connections)을 처리할 수 있도록 설계되었다.

Node.js 호환성 및 TypeScript 지원

QuickBEAM은 Node.js API를 지원하며, 내장된 TypeScript 도구 체인을 통해 TypeScript 코드를 직접 평가(Evaluate)할 수 있다. npm 패키지(npm Packages)를 지원하여 Node.js 생태계와의 호환성을 높였으며, OXC를 사용하여 TypeScript 변환, 축소, 번들링을 수행한다. 개발자는 Node.js 없이도 QuickBEAM 환경에서 JavaScript 및 TypeScript 개발을 진행할 수 있다.

커뮤니티 반응 및 활용 사례

Hacker News 댓글에서는 QuickBEAM의 Node.js 의존성 제거(Node.js Dependency Removal) 및 Erlang/OTP와의 통합에 대한 긍정적인 반응이 주를 이룬다. 특히 기존 Node.js 패키지를 Elixir 환경에서 사용할 수 있다는 점에 높은 관심을 보였다. 실제 사례로는 Phoenix Channels를 활용한 실시간 채팅, AI 에이전트, LiveView 카운터, SSR, 규칙 엔진 등이 제시되었다.

Show HN: QuickBEAM – run JavaScript as supervised Erlang/OTP processes