Wasmer Edge นำประสิทธิภาพ Python ใกล้เคียงระบบดั้งเดิมมาสู่ WebAssembly พร้อมรองรับเฟรมเวิร์กครบครัน

ทีมชุมชน BigGo
Wasmer Edge นำประสิทธิภาพ Python ใกล้เคียงระบบดั้งเดิมมาสู่ WebAssembly พร้อมรองรับเฟรมเวิร์กครบครัน

Wasmer ได้เปิดตัวการรองรับ Python แบบเต็มรูปแบบสำหรับ WebAssembly บนแพลตฟอร์ม Edge ของพวกเขา โดยสัญญาว่าจะให้ประสิทธิภาพใกล้เคียงระบบดั้งเดิมพร้อมกับรักษาความสามารถในการแยกส่วน (sandboxing) แบบสมบูรณ์ การพัฒนานี้ตอบสนองความต้องการที่เพิ่มขึ้นสำหรับสภาพแวดล้อมการรัน Python ที่ปลอดภัย โดยเฉพาะสำหรับงาน AI และสถานการณ์โค้ดที่ไม่น่าเชื่อถือ

การประกาศนี้ได้จุดประกายความสนใจอย่างมากในชุมชนนักพัฒนา โดยหลายคนมองว่านี่เป็นโซลูชันที่มีศักยภาพสำหรับการรันโค้ด Python อย่างปลอดภัยในสภาพแวดล้อมการผลิต ต่างจากโซลูชันที่เน้นเบราว์เซอร์อย่าง Pyodide แนวทางของ Wasmer มุ่งเป้าไปที่แอปพลิเคชันฝั่งเซิร์ฟเวอร์พร้อมความเข้ากันได้กับเฟรมเวิร์กแบบเต็มรูปแบบ

การสนับสนุน Python ใหม่ของ Wasmer สัญญาว่าจะมอบประสิทธิภาพและความเข้ากันได้ที่ดีขึ้นสำหรับแอปพลิเคชัน WebAssembly
การสนับสนุน Python ใหม่ของ Wasmer สัญญาว่าจะมอบประสิทธิภาพและความเข้ากันได้ที่ดีขึ้นสำหรับแอปพลิเคชัน WebAssembly

การอ้างประสิทธิภาพแสดงผลลัพธ์ที่น่าประทับใจ

Wasmer อ้างว่าการใช้งาน Python ของพวกเขารันด้วยความเร็วที่แทบจะแยกแยะไม่ออกจากประสิทธิภาพ Python ดั้งเดิม โดยเบนช์มาร์กแสดงให้เห็นการรันที่เร็วกว่า 4 เท่าเมื่อเทียบกับการใช้งาน Python บน WebAssembly แบบก่อนหน้า บริษัทกำลังทดสอบการปรับปรุงที่อาจผลักดันประสิทธิภาพไปถึง 95% ของความเร็ว Python ดั้งเดิม ซึ่งจะเป็นความสำเร็จที่สำคัญสำหรับสภาพแวดล้อมการรันแบบแยกส่วน

อย่างไรก็ตาม ผู้ใช้ในช่วงแรกได้พบปัญหาบางอย่างกับการใช้งานปัจจุบัน กระบวนการคอมไพล์เริ่มต้นอาจใช้เวลาถึง 10 นาทีในการรันครั้งแรก เนื่องจากระบบคอมไพล์ Python ด้วยการปรับปรุง LLVM Wasmer รับทราบข้อจำกัดนี้และวางแผนที่จะแจกจ่ายไบนารีที่คอมไพล์แล้วเพื่อขจัดความล่าช้าในการคอมไพล์

การเปรียบเทียบประสิทธิภาพ

เมตริก Wasmer Python Previous WASM Python Native Python
ประสิทธิภาพปัจจุบัน เร็วกว่าเดิม 4 เท่า มาตรฐานอ้างอิง เป้าหมายการทดสอบ
การปรับปรุงที่วางแผนไว้ 95% ของความเร็วแบบ native ไม่มี 100%
Cold Start ~10 นาที (การรันครั้งแรก) แตกต่างกัน ทันที
การรันครั้งต่อไป เร็ว (มี cache แล้ว) แตกต่างกัน ทันที

การรองรับเฟรมเวิร์กแบบเต็มรูปแบบทำให้โดดเด่น

หนึ่งในแง่มุมที่น่าสนใจที่สุดของการใช้งานของ Wasmer คือการรองรับเฟรมเวิร์กอย่างครอบคลุม นักพัฒนาสามารถรันแอปพลิเคชัน FastAPI, Django, Flask และ Starlette โดยไม่ต้องปรับเปลี่ยนใดๆ แพลตฟอร์มยังรองรับ WebSockets, threading และไลบรารี Python ดั้งเดิมรวมถึง numpy, pandas และ Pillow

ความเข้ากันได้อย่างกว้างขวางนี้แก้ไขข้อจำกัดหลักที่พบในโซลูชันคู่แข่ง Cloudflare Workers กับ Pyodide ตัวอย่างเช่น ขาดการรองรับ WebSocket ความสามารถ threading และการรัน subprocess AWS Lambda ต้องการอแดปเตอร์และไม่รองรับ WebSockets โดยธรรมชาติ

การรองรับ Framework และ Library

รองรับอย่างเต็มรูปแบบ:

  • FastAPI (พร้อม WebSockets )
  • Django
  • Flask
  • Starlette
  • numpy
  • pandas
  • Pillow
  • LangChain
  • pyppeteer

เร็วๆ นี้:

  • certifi
  • psycopg2
  • gunicorn / gevent
  • Pyarrow
  • scipy
  • การรองรับ SQLite

ความปลอดภัยและการแยกส่วนขับเคลื่อนความสนใจในการนำมาใช้

ผลกระทบด้านความปลอดภัยได้สร้างการอภิปรายอย่างมากในหมู่นักพัฒนา หลายคนกำลังสำรวจ WebAssembly เป็นทางเลือกแทน Docker containers สำหรับการรันโค้ดที่ไม่น่าเชื่อถือ โดยเฉพาะในสถานการณ์ที่เกี่ยวข้องกับสคริปต์ที่สร้างโดย AI หรือโค้ดที่ผู้ใช้ส่งมา

ฉันต้องการสามารถรันโค้ดจากแหล่งที่ไม่น่าเชื่อถือ (คนอื่น ผู้ใช้แอปพลิเคชัน SaaS ของฉัน LLMs) ในสภาพแวดล้อมที่ฉันสามารถควบคุมรัศมีการระเบิดได้หากมีสิ่งผิดปกติเกิดขึ้น

แม้ว่า Docker containers จะให้การแยกส่วน แต่นักพัฒนาบางคนแสดงความกังวลเกี่ยวกับช่องโหว่การหลบหนีคอนเทนเนอร์ โดยเฉพาะเมื่อต้องจัดการกับโค้ดที่สร้างโดย AI ที่อาจเป็นอันตราย การออกแบบ WebAssembly เป็นสภาพแวดล้อมการรันแบบแยกส่วนเสนอชั้นความปลอดภัยเพิ่มเติมที่ดึงดูดนักพัฒนาที่ทำงานกับสถานการณ์โค้ดที่ไม่น่าเชื่อถือ

การใช้งานทางเทคนิคและข้อจำกัดปัจจุบัน

แนวทางของ Wasmer เกี่ยวข้องกับการคอมไพล์ตัวแปล Python เป็น WebAssembly แทนที่จะแปลงโค้ด Python โดยตรง พวกเขาได้ใช้งานการรองรับ dynamic linking สำหรับไฟล์ .so/.dylib/.wasm และสร้าง Python Package Index ของตนเองด้วยไลบรารีดั้งเดิมยอดนิยมที่คอมไพล์สำหรับ WASIX (ส่วนขยาย WebAssembly System Interface ของพวกเขา)

ข้อจำกัดปัจจุบันรวมถึงเวลาคอมไพล์เริ่มต้นที่ยาวนานและแพ็กเกจที่ขาดหายไปบางส่วน ไลบรารียอดนิยมอย่าง scipy, certifi และ psycopg2 ยังอยู่ในระหว่างการพัฒนา แม้ว่า numpy และแพ็กเกจสำคัญอื่นๆ จำนวนมากจะพร้อมใช้งานแล้วผ่าน package index ที่กำหนดเองของพวกเขา

แพลตฟอร์มรองรับทั้งการรันไทม์ผ่าน Wasmer CLI และการปรับใช้ไปยัง Wasmer Edge สำหรับแอปพลิเคชันแบบเซิร์ฟเวอร์เลส การทดสอบเริ่มต้นแสดงให้เห็นว่าระบบสามารถจัดการแอปพลิเคชันที่ซับซ้อนรวมถึงการประมวลผลภาพด้วย Pillow และแม้กระทั่งการควบคุมเบราว์เซอร์อัตโนมัติด้วย pyppeteer

การเปรียบเทียบแพลตฟอร์ม

คุณสมบัติ Wasmer Edge Cloudflare Workers AWS Lambda
WebSockets จำกัด (ผ่าน API Gateway )
Threading
Subprocesses
Native Libraries จำกัด จำกัด
ความซับซ้อนในการตั้งค่า ต่ำ ปานกลาง สูง (ต้องใช้ adapters )
การรองรับ Framework รองรับได้อย่างสมบูรณ์ จำกัด ต้องปรับแต่ง

มองไปข้างหน้า

การใช้งาน Python ของ Wasmer แสดงถึงก้าวสำคัญไปสู่การนำ WebAssembly มาใช้จริงสำหรับแอปพลิเคชันฝั่งเซิร์ฟเวอร์ แม้ว่าความล่าช้าในการคอมไพล์เริ่มต้นและความพร้อมใช้งานของแพ็กเกจยังคงเป็นความท้าทาย แต่การผสมผสานของประสิทธิภาพใกล้เคียงระบบดั้งเดิม การรองรับเฟรมเวิร์กอย่างครอบคลุม และความสามารถในการแยกส่วนที่แข็งแกร่ง ทำให้นี่เป็นตัวเลือกที่น่าสนใจสำหรับนักพัฒนาที่แสวงหาสภาพแวดล้อมการรัน Python ที่ปลอดภัย

ความสำเร็จของการใช้งานนี้อาจมีอิทธิพลต่อการนำ WebAssembly มาใช้อย่างกว้างขวางสำหรับงานฝั่งเซิร์ฟเวอร์ โดยเฉพาะในสถานการณ์ที่ความปลอดภัยและการแยกส่วนเป็นข้อกังวลสำคัญ

อ้างอิง: Python on the Edge: Fast, sandboxed, and powered by WebAssembly