9P by GN⁺ 11일전 | ★ favorite | 댓글 2개
  • 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_macrohost_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 저장소를 통해 코드 확인 및 기여 가능

👉 GitHub 저장소: hyperlight-wasm

Hacker News 의견
  • 몇 달 전부터 WebAssembly를 본격적으로 사용하여 여러 언어에서 작동하는 백엔드 인증 라이브러리를 만들기 시작했음

    • Extism을 기반으로 하여 인터페이스 복잡성을 줄였음
    • 마법 같은 경험이었음
    • WASM은 흥미로운 위치에 있음
    • 최소한의 핵심 사양으로 가치를 증명했음
    • 이제 WASI와 Component Model을 위한 더 큰 API 표면을 구현하려는 큰 추진력이 있음
    • 커뮤니티의 많은 사람들이 이 방향에 대해 우려하고 있음
    • 개인적으로 WASM이 너무 복잡해져서 대형 기술 기업만 구현과 실험이 가능한 웹 브라우저의 길을 걷지 않기를 바람
  • 몇 달 전 Hyperlight라는 경량 VMM을 발표했음

    • 약 1밀리초 만에 새로운 VM을 생성할 수 있음
    • 오늘 Wasmtime 런타임 기반의 Hyperlight Wasm 게스트를 발표하게 되어 기쁨
    • VM의 게스트 OS 없이 WASI 인터페이스 위에서 Wasm Component 바이너리를 실행할 수 있게 됨
    • 이 게시물에서 작동 방식을 설명하고 예제를 통해 설명함
  • 매우 기대됨

    • WASM/WASI가 90년대 JVM의 꿈으로 성장하길 바람
    • 여러 플랫폼에서 쉽게 포팅하고 테스트할 수 있는 메모리 안전 개발 타겟이 될 수 있음
    • WASM은 브라우저 이상의 많은 것들을 위해 사용될 수 있기를 바람
  • 흥미로워 보임

    • WASM으로 Cloudflare Workers나 Lambda와 같은 것을 직접 구현하고 싶을 때 사용할 수 있는 사례인가?
  • 멋짐

    • 여기서의 가치 추가는 무엇인지 이해하려고 함
    • wasmtime를 통해 실행하는 것과 어떻게 다른가?
  • 모든 멋지고 흥미로운 프로젝트들이 WASM이 브라우저를 제외한 모든 곳에서 성공적이라는 생각이 듦

    • Web Assembly에서 Web을 빼고 다른 이름을 붙여야 할지도 모름
  • 프로모스 설정에 이걸 어떻게 넣을 수 있을지 아이디어가 있는가?

    • 이게 베어 메탈에서 작동하도록 설계된 것으로 이해하고 있음
    • 여분의 베어 메탈 x86이 없어서 약간 어색함
    • 그냥 VM에 넣고 중첩 가상화를 받아들여야 할 것 같음
  • 인스턴스는 어떻게 시작되고 관리되는가?

    • 어떤 API를 통해서인가?
    • Wasm Component 바이너리에 연결된 Wasm Components의 트리를 실행하고, 기능을 위임하며, 수명 주기를 관리할 수 있는 기능을 줄 수 있는가?
  • 기본적으로 하드웨어 VM에서 프로그램을 샌드박스하기 위한 VM(wasm)이 있고, 이는 사용자 공간 프로세스(Linux 프로세스)에서 프로그램을 격리하기 위한 추상화임

    • 프로그램을 격리하기 위해 Unix 프로세스를 사용하는 것에 대해 생각해 본 적이 있는가?
  • 유니커널/라이브러리 OS인가?