Hyperlight WASM
hyperlight-wasm is a rust library crate that enables Wasm Modules and components to be run inside lightweight Virtual Machine backed Sandbox. It is built on top of Hyperlight.
빠르고, 안전하고 OS-Free
- Hyperlight Wasm은 Microsoft가 CNCF에 기부한 초경량 가상 머신(VM) 기술 Hyperlight의 최신 확장 버전으로, WebAssembly(Component Model 기반) 워크로드를 빠르고 안전하게 실행함
- 전통적인 VM과 달리 OS나 가상 디바이스 없이 메모리 슬라이스와 CPU만 노출, 1~2ms의 빠른 부팅 시간 제공
- 다양한 언어(C, Rust, Go, Python, JS 등)로 작성된 wasm 컴포넌트를 하이퍼바이저 보호 하에 실행 가능
Hyperlight Wasm의 주요 특징
- 전통적인 VM 대비 빠른 성능
- 전통적인 VM: 디바이스 초기화 → 커널 로딩 → OS 부팅 → 애플리케이션 실행 (약 125ms)
- Hyperlight Wasm: 메모리 슬라이스 생성 + Wasm 로딩만으로 실행 가능 (1~2ms, 미래에는 <1ms 목표)
- 빠른 실행 속도는 온디맨드 서버리스 실행 또는 최소한의 warm pool 구성에 유리
- 표준인 WASI와 WebAssembly Component Model 기반으로 대부분의 언어에서 작성된 컴포넌트 실행 가능
- wasmtime 런타임을 내장하여 Python, JavaScript, C# 등 인터프리터 언어도 런타임 포함 형태로 실행 가능
- 개발자 입장에서는 단순히 wasm32-wasip2 타겟으로 컴파일하면 Hyperlight에서 실행 가능
- Wasm 샌드박스 + 하이퍼바이저 기반 VM 샌드박스의 이중 보호 구조
- 공격자가 wasm을 탈출하더라도 VM 샌드박스를 추가로 우회해야 함
개발 예시: Rust 기반 UDP Echo 서버 실행
- wkg CLI로 wasm 바이너리 다운로드 및 컴파일
- WASI 인터페이스 정의 파일(.wit)을 바이너리로 변환하여 바인딩 생성
- hyperlight_component_macro와 host_bindgen!을 통해 Wasm의 import/export 인터페이스 바인딩 자동 생성
- UdpSocket 인터페이스 구현을 통해 echo 서버 로직 정의
- hyperlight-wasm 샌드박스를 생성해 wasm 컴포넌트 로딩 및 실행
- Ahead-of-Time 컴파일
- hyperlight-wasm-aot 도구를 이용해 wasm을 AOT 컴파일하여 실행 시간 단축
- cargo run으로 서버 실행, nc -u 명령으로 UDP 테스트 가능
확장성 및 향후 계획
- Hyperlight Wasm은 x86뿐 아니라 Arm64 아키텍처 지원 예정
- 현재는 WASI 인터페이스를 직접 구현해야 하지만, 향후 기본 바인딩 제공 예정
- HTTP 서버 등 간단한 서비스를 빠르게 샌드박싱 가능하게 할 계획
오픈소스 커뮤니티 참여 안내
- Hyperlight는 Apache 2.0 라이선스로 공개된 Microsoft의 오픈소스 프로젝트이며, CNCF Sandbox에 등록됨
- Hyperlight Wasm은 클라우드 네이티브 컴퓨팅에 적합한 빠르고 안전한 실행 환경 제공을 목표로 함
- GitHub 저장소를 통해 코드 확인 및 기여 가능