3 คะแนน โดย GN⁺ 2024-10-11 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

Wasm คือ CGI แบบใหม่

  • บทบาทของ Wasm: Wasm(WebAssembly) กำลังเตรียมนำการเปลี่ยนแปลงครั้งใหม่มาสู่โมเดลของเว็บแอปพลิเคชัน โดยมุ่งเน้นไปที่การทำให้สร้างและดูแลรักษาแอปพลิเคชันประสิทธิภาพสูงได้ง่ายขึ้น
  • โมเดลเว็บแอปพลิเคชันในอดีต: CGI ได้เปลี่ยนเว็บจากคลังเอกสารให้กลายเป็นเครือข่ายของแอปพลิเคชัน FastCGI ถูกพัฒนาขึ้นเพื่อแก้ปัญหาด้านประสิทธิภาพ และต่อมาได้พัฒนาไปสู่ serverless computing
  • Serverless computing: Serverless computing อย่าง Amazon Lambda ทำให้ต้องจัดการ "ฟังก์ชัน" แทนการจัดการเซิร์ฟเวอร์ ซึ่งมีข้อดีคือสามารถขยายได้อย่างรวดเร็วตามปริมาณคำขอ

Wasm บนเซิร์ฟเวอร์

  • ความสามารถในการขยายของ Wasm: Wasm ไม่ได้ทำงานได้แค่ในเบราว์เซอร์ แต่ยังรันบนเซิร์ฟเวอร์ได้ด้วย ซึ่งมอบโมเดลการแยกส่วนที่เบากว่าสำหรับแอปพลิเคชันฝั่งเซิร์ฟเวอร์
  • สภาพแวดล้อมการรัน Wasm: โมดูล Wasm ทำงานอยู่บน virtual machine และสามารถคอมไพล์มาจากหลายภาษาได้ ซึ่งอาจช่วยเพิ่มประสิทธิภาพในสภาพแวดล้อม serverless

จุดแลกเปลี่ยนของ Wasm

  • เธรดและการคอมไพล์แบบ JIT: Wasm ไม่รองรับเธรดโดยพื้นฐาน และไม่สามารถทำ JIT compile ได้ ซึ่งอาจส่งผลต่อประสิทธิภาพ
  • อินเทอร์เฟซหน่วยความจำ: การย้ายข้อมูลระหว่างโมดูล Wasm กับโฮสต์อาจต้องมีการคัดลอกข้อมูล ซึ่งอาจส่งผลต่อประสิทธิภาพ

แนวโน้มในอนาคต

  • การพัฒนาของ Wasm: เมื่อสภาพแวดล้อมการรันและเครื่องมือพัฒนาของ Wasm พัฒนามากขึ้น ภาษาสคริปต์ต่าง ๆ จะมี Wasm runtime ของตนเอง ซึ่งอาจช่วยเพิ่มความเร็วในการทำงานของแอปพลิเคชันได้อย่างมาก
  • Edge computing: Wasm ทำให้สามารถประมวลผลใกล้กับผู้ใช้ผ่าน edge computing ได้ ซึ่งช่วยเพิ่มประสิทธิภาพ

# สรุปโดย GN⁺

  • Wasm กำลังขับเคลื่อนการเปลี่ยนแปลงครั้งใหม่ของโมเดลเว็บแอปพลิเคชัน และช่วยให้สร้างกับดูแลแอปพลิเคชันประสิทธิภาพสูงได้ง่ายขึ้น
  • การผสานกันของ serverless computing และ Wasm ช่วยลดความซับซ้อนของการจัดการเซิร์ฟเวอร์ และมีข้อดีคือขยายได้อย่างรวดเร็วตามปริมาณคำขอ
  • Wasm ไม่ได้ทำงานได้แค่ในเบราว์เซอร์ แต่ยังรันบนเซิร์ฟเวอร์ได้ด้วย ซึ่งมอบโมเดลการแยกส่วนที่เบากว่าสำหรับแอปพลิเคชันฝั่งเซิร์ฟเวอร์
  • การพัฒนาของ Wasm อาจทำให้ภาษาสคริปต์ต่าง ๆ มี Wasm runtime ของตนเอง และช่วยเพิ่มความเร็วในการทำงานของแอปพลิเคชันได้อย่างมาก
  • ทำให้สามารถประมวลผลใกล้กับผู้ใช้ผ่าน edge computing ได้ ซึ่งช่วยเพิ่มประสิทธิภาพ

1 ความคิดเห็น

 
GN⁺ 2024-10-11
ความคิดเห็นจาก Hacker News
  • Amazon ได้เริ่มยุคของ serverless computing ด้วย Lambda ส่วน Google App Engine เปิดตัวก่อน Lambda อยู่ 6 ปี

  • ยากที่จะเข้าใจความแตกต่างระหว่าง WASM กับเทคโนโลยีก่อนหน้าอย่าง Java Applets, ActiveX, Silverlight และ Macromedia Flash คิดว่าเราได้เรียนรู้บทเรียนเกี่ยวกับการรันโค้ดคอมไพล์จากบุคคลที่สามที่ไม่น่าเชื่อถือในเว็บเบราว์เซอร์แล้ว

  • JIT compilation ทำไม่ได้ เพราะด้วยเหตุผลด้านความปลอดภัยจึงไม่อนุญาตให้สร้างโค้ด WASM แบบไดนามิก ซึ่งเป็นความสามารถที่จำเป็นต่อการทำสิ่งอย่างการ hot reload โค้ดให้เรียบร้อย

  • คิดว่าข้ออ้างด้านความปลอดภัยไม่น่าเชื่อถือ เพราะสามารถ hot reload JS หรือสร้างโค้ดใน runtime ได้ และยังสามารถ reload WASM runtime แบบไดนามิกพร้อมคงหน่วยความจำไว้ได้ แต่ประสบการณ์ผู้ใช้น่าจะไม่สะดวก

  • หาสาเหตุที่ทำให้เป็นไปไม่ได้ในเชิงเทคนิคไม่เจอ ถ้าเป็นมาตรการด้านความปลอดภัยก็น่าจะเลี่ยงได้ง่าย

  • WASM bytecode มีแนวคิดคล้ายกับ .NET IL, Java bytecode และสิ่งอื่น ๆ ที่ออกแบบมาเพื่อ JIT compilation

  • คิดว่าโปรเจกต์ WASM ยังขาดทิศทางที่ชัดเจนและความมุ่งมั่นที่จะทำให้สำเร็จ ฟีเจอร์พื้นฐานหลายอย่างก็ยังขาดอยู่

    • รวมถึง hot reload, threading แบบไม่ต้องแฮ็ก, native interface กับ DOM, การรองรับ API ด้านกราฟิก/การประมวลผลที่มี overhead ต่ำ และการเข้าถึง audio ระดับต่ำ
  • WASM แทนที่ VM ของภาษาเฉพาะด้วย VM แบบอเนกประสงค์ ซึ่งทำให้สามารถรันเกือบทุกอย่างได้ผ่านคอมไพเลอร์หรืออินเทอร์พรีเตอร์

    • โดยทั่วไปมันถูกติดตั้งเป็นส่วนหนึ่งของ JavaScript engine จึงสืบทอด sandboxing และการเข้าถึง API มาด้วย ขณะนี้กำลังอยู่ระหว่างการทำมาตรฐาน
  • WASM ถูกวางภาพว่าเป็นตัวแทนของ JavaScript, Docker, Java, CGI และอื่น ๆ ซึ่งเท่ากับเป็นทุกอย่าง

  • คิดว่า WASM ควรจะโฮสต์และดีพลอยได้ง่ายเหมือนแอปพลิเคชัน PHP แต่ตอนนี้อาจยังไม่เป็นแบบนั้น

  • ทำให้นึกถึงกฎเก่าแก่ของซอฟต์แวร์ที่ว่า แอปพลิเคชันที่ใหญ่และเก่ามากพอ สุดท้ายจะลงเอยด้วยการนำสแตกซอฟต์แวร์ทั้งหมดที่มันรันอยู่มาทำใหม่อีกครั้ง

  • คำสัญญาที่ยิ่งใหญ่ของ WASM ฝั่งเซิร์ฟเวอร์คือการมอบแพลตฟอร์มถาวรที่ไม่ต้องอาศัยการอัปเดตเป็นระยะ

    • การต้องอัปเดตและดีพลอยใหม่ทุกครั้งที่ Node.js หรือ Python เวอร์ชันที่แอป AWS Lambda ใช้อยู่เลิกซัพพอร์ตแล้ว เป็นปัญหาใหญ่
  • คิดว่า local-first คืออนาคต แอปจะทำงานหลักอยู่ภายในเบราว์เซอร์ของผู้ใช้ และแทบไม่ต้องพึ่งเซิร์ฟเวอร์เลย

    • แอปอย่าง Figma, Linear และ Superhuman ใช้โมเดลนี้ได้สำเร็จ
  • WASM อาจประสบความสำเร็จได้ในเบราว์เซอร์ของผู้ใช้ โดย Microsoft ก็กำลังใช้มันกับ C#/Blazor

  • ดูเหมือนเรากำลังประดิษฐ์ JVM และระบบนิเวศของมันขึ้นมาใหม่

  • คิดว่า WASM จะมุ่งไปสู่การแทนที่โค้ดที่ใช้รัน lambda function ในคลาวด์

    • โดยปกติ WASM ถูกมองว่าเป็นสิ่งที่รันบน host platform แต่จริง ๆ แล้วไม่จำเป็นต้องเป็นแบบนั้น

    • ด้วยคุณสมบัติ sandbox ของ WASM มันจึงสามารถรันได้นอกระบบปฏิบัติการหรือบน ring0