Skip to content

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에서 실행 가능
  • 보안성 향상 (2중 샌드박스)
    • 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 저장소를 통해 코드 확인 및 기여 가능

See also

Favorite site