Hyperlight WASM: เร็ว ปลอดภัย และไม่ต้องมี OS
(opensource.microsoft.com)- Hyperlight Wasm คือส่วนขยายล่าสุดของเทคโนโลยี เครื่องเสมือนน้ำหนักเบาพิเศษ (VM) อย่าง Hyperlight ที่ Microsoft บริจาคให้ CNCF โดยใช้สำหรับรันเวิร์กโหลด WebAssembly (บนพื้นฐานของ Component Model) ได้อย่างรวดเร็วและปลอดภัย
- แตกต่างจาก VM แบบดั้งเดิมตรงที่ไม่ต้องมี OS หรืออุปกรณ์เสมือน โดย เปิดให้ใช้งานเฉพาะ memory slice และ CPU ทำให้บูตได้เร็วภายใน 1~2ms
- สามารถรัน wasm component ที่เขียนด้วยหลากหลายภาษา (C, Rust, Go, Python, JS ฯลฯ) ได้ ภายใต้การป้องกันของไฮเปอร์ไวเซอร์
คุณสมบัติหลักของ Hyperlight Wasm
-
ประสิทธิภาพที่เร็วกว่่า VM แบบดั้งเดิม
- VM แบบดั้งเดิม: เริ่มต้นอุปกรณ์ → โหลดเคอร์เนล → บูต OS → รันแอปพลิเคชัน (ประมาณ 125ms)
- Hyperlight Wasm: รันได้เพียงสร้าง memory slice + โหลด Wasm (1~2ms และในอนาคตตั้งเป้าไว้ที่ <1ms)
- ความเร็วในการรันนี้เหมาะกับ การประมวลผล serverless แบบ on-demand หรือ การจัด warm pool ให้น้อยที่สุด
-
รันได้หลายภาษาแม้ไม่มีระบบปฏิบัติการ
- ใช้พื้นฐานจากมาตรฐาน WASI และ WebAssembly Component Model จึงสามารถรันคอมโพเนนต์ที่เขียนจากภาษาส่วนใหญ่ได้
- ฝัง wasmtime runtime มาในตัว ทำให้ ภาษาแบบ interpreter อย่าง Python, JavaScript, C# ก็รันได้พร้อม runtime
- ในมุมของนักพัฒนา เพียงคอมไพล์ไปยัง target
wasm32-wasip2ก็สามารถรันบน Hyperlight ได้
-
ความปลอดภัยที่ดีขึ้น (sandbox สองชั้น)
- โครงสร้างป้องกันสองชั้นด้วย Wasm sandbox + VM sandbox ที่อิงไฮเปอร์ไวเซอร์
- แม้ผู้โจมตีจะหลุดออกจาก wasm ได้ ก็ยังต้องข้าม VM sandbox เพิ่มอีกชั้น
ตัวอย่างการพัฒนา: รันเซิร์ฟเวอร์ UDP Echo ที่สร้างด้วย Rust
- ดาวน์โหลดและคอมไพล์ไบนารี wasm ด้วย CLI
wkg - แปลงไฟล์นิยามอินเทอร์เฟซ WASI (
.wit) เป็นไบนารีเพื่อสร้าง binding - ใช้
hyperlight_component_macroและhost_bindgen!เพื่อ สร้าง binding ของ import/export interface ของ Wasm แบบอัตโนมัติ - กำหนดลอจิกของ echo server ผ่านการ implement อินเทอร์เฟซ UdpSocket
- สร้าง sandbox ของ
hyperlight-wasmเพื่อโหลดและรัน wasm component -
Ahead-of-Time compilation
- ใช้เครื่องมือ
hyperlight-wasm-aotเพื่อคอมไพล์ wasm แบบ AOT ช่วยลดเวลาในการรัน - รันเซิร์ฟเวอร์ด้วย
cargo runและทดสอบ UDP ได้ด้วยคำสั่งnc -u
- ใช้เครื่องมือ
การขยายความสามารถและแผนในอนาคต
- Hyperlight Wasm มีแผนรองรับ สถาปัตยกรรม Arm64 นอกเหนือจาก x86
- ปัจจุบันยังต้อง implement อินเทอร์เฟซ WASI เอง แต่ในอนาคตมีแผน จัดเตรียม binding พื้นฐานมาให้
- มีแผนทำให้สามารถ sandbox บริการง่าย ๆ เช่น HTTP server ได้อย่างรวดเร็ว
แนวทางการเข้าร่วมคอมมูนิตี้โอเพนซอร์ส
- Hyperlight เป็นโครงการโอเพนซอร์สของ Microsoft ที่เผยแพร่ภายใต้ Apache 2.0 license และอยู่ใน CNCF Sandbox
- Hyperlight Wasm มีเป้าหมายเพื่อ มอบสภาพแวดล้อมรันงานที่รวดเร็วและปลอดภัย เหมาะกับ cloud-native computing
- สามารถดูโค้ดและร่วมพัฒนาได้ผ่าน GitHub repository
👉 GitHub repository: hyperlight-wasm
2 ความคิดเห็น
Hyperlight - ตัวจัดการเครื่องเสมือนน้ำหนักเบา (VMM) | GeekNews
ความคิดเห็นบน Hacker News
เมื่อไม่กี่เดือนก่อน ฉันเริ่มใช้ WebAssembly อย่างจริงจังเพื่อสร้างไลบรารี backend authentication ที่ทำงานได้ในหลายภาษา
เมื่อไม่กี่เดือนก่อน เราได้เปิดตัว Hyperlight ซึ่งเป็น VMM แบบ lightweight
น่าตื่นเต้นมาก
ดูน่าสนใจ
เจ๋งดี
โปรเจ็กต์เจ๋ง ๆ และน่าสนใจทั้งหมดทำให้รู้สึกว่า WASM ประสบความสำเร็จทุกที่ยกเว้นในเบราว์เซอร์
มีไอเดียไหมว่าจะเอาสิ่งนี้ไปใส่ในการตั้งค่า Proxmox ได้อย่างไร?
อินสแตนซ์เริ่มต้นและถูกจัดการอย่างไร?
โดยพื้นฐานแล้ว มี VM (wasm) สำหรับ sandbox โปรแกรมในฮาร์ดแวร์ VM ซึ่งเป็น abstraction สำหรับแยกโปรแกรมภายใน user-space process (Linux process)
เป็น unikernel/library OS หรือไม่?