เหตุผลที่ควรจับตา WebAssembly
(harshal.sheth.io)- แนะนำ WebAssembly (WASM) ตั้งแต่ว่าคืออะไร ทุกวันนี้ถูกใช้งานที่ไหน และคาดการณ์ถึงด้านที่จะถูกนำไปใช้ในอนาคต
คุณสมบัติของ WASM
-
พกพาได้: เป็น bytecode ที่มีมาตรฐาน จึงรันได้ทั้งบนเบราว์เซอร์และเซิร์ฟเวอร์
-
ใช้งานได้หลากหลาย: ภาษาอย่าง C, Rust, Go, Python, Ruby ฯลฯ สามารถคอมไพล์เป็น Wasm ได้
-
ประสิทธิภาพระดับเนทีฟ: โดยเฉลี่ยช้ากว่าเนทีฟราว 1.45~1.55 เท่า แต่เร็วกว่า JavaScript เสมอ
-
เวลาเริ่มต้นรวดเร็ว: เร็วกว่า Docker container 10~100x และในเบราว์เซอร์ก็ยังเร็วกว่าการ parse/interpret JavaScript
-
ปลอดภัย: ถูกพัฒนาโดยคำนึงถึงเว็บเป็นหลัก จึงปลอดภัยผ่าน memory sandboxing และการจำกัดความสามารถต่าง ๆ
ด้านที่ WASM มีประโยชน์
-
ปรับปรุงความเร็วของ JavaScript
-
มอบความเข้ากันได้ระหว่างภาษาโปรแกรมต่าง ๆ
-
เป็นรันไทม์สำหรับระบบปลั๊กอินหลายภาษา
-
ใช้เป็น embedded sandboxing engine เพื่อนำไลบรารีจาก third party หลากหลายตัวมาใช้อย่างปลอดภัย
-
อนาคตของ containerization: เร็วกว่า Docker มี footprint เล็กกว่า และปลอดภัยกว่า
-
แพลตฟอร์ม FaaS/Serverless
-
บล็อกเชน: สามารถใช้เป็นรันไทม์ประสิทธิภาพสูงสำหรับรัน smart contract ได้
การคาดการณ์และโอกาส
- สถาปัตยกรรมแอปพลิเคชันรูปแบบใหม่
→ สามารถแยก microservices ออกเป็นคอมโพเนนต์ที่เล็กลงได้อีก
- Brownfield Deployment
→ การผสานรวม Docker และ Wasm container ที่ orchestration layer
- กรอบงาน Serverless/Edge ที่เป็นมาตรฐาน
→ ปัจจุบัน Fastly, Lambda, Fission ฯลฯ ต่างสร้างแพลตฟอร์มของตัวเอง แต่ก็มีความเป็นไปได้ที่จะเกิดมาตรฐานร่วม
→ "Terraform of Serverless"
- การจัดการแพ็กเกจ
→ ทุกภาษาต่างมี package ecosystem ของตัวเอง
→ WASM จำเป็นต้องมี package manager แม้จะมี WAPM อยู่แล้ว แต่แทบอยู่ในสภาพหยุดพัฒนา
บทสรุป
- WebAssembly ดีขนาดนี้ แล้วทำไมถึงยังไม่ถูกใช้อย่างแพร่หลายมากกว่านี้?
→ การตลาดไม่ดี เพราะมันไม่ได้จำกัดอยู่แค่ Web หรือ Assembly ชื่อนี้จึงอาจผิดตั้งแต่ต้น
→ แม้จะทำการตลาดกับนักพัฒนาเว็บเป็นหลัก แต่ศักยภาพจริงนั้นไปไกลกว่าบราว์เซอร์
→ มาตรฐานของ WebAssembly ยังไม่สมบูรณ์
→ การทำงานร่วมกันระหว่างภาษายังแย่มาก
→ ประสบการณ์นักพัฒนายังขาดอีกมาก
-
แต่หลายด้านกำลังดีขึ้น และภายใน 1~2 ปีน่าจะไปถึงจุดที่พร้อมต่อการยอมรับใช้งาน
-
กิจกรรมด้าน WebAssembly รวมถึง ecosystem และ community กำลังเข้าสู่ช่วงเติบโตอย่างรวดเร็ว
1 ความคิดเห็น
แม้ลองค้นหา WebAssembly/WASM ใน GeekNews คุณก็จะเห็นบทความจำนวนมากมาก
ขอลองไล่เฉพาะบทความหลัก ๆ ให้ดูครับ
การประกาศอย่างเป็นทางการให้ WebAssembly เป็นข้อเสนอแนะของ W3C https://th.news.hada.io/topic?id=1091
WebAssembly จะขยายออกไปนอกเบราว์เซอร์ได้หรือไม่? การรวมตัวของ Bytecode กำลังมา https://th.news.hada.io/topic?id=901
MS/Google/Arm และอีกหลายรายเข้าร่วม Bytecode Alliance https://th.news.hada.io/topic?id=4172
→ องค์กรไม่แสวงหากำไรที่จัดตั้งขึ้นโดยมีเป้าหมายให้ WebAssembly ถูกใช้งานข้ามพ้นเบราว์เซอร์
แนวโน้มของ JavaScript ในปี 2020 และหลังจากนั้น - WebAssembly https://th.news.hada.io/topic?id=2778
WebAssembly ทำให้ JavaScript ทำงานได้เร็วขึ้นอย่างไร https://th.news.hada.io/topic?id=5167
Amazon Prime Video รองรับอุปกรณ์ 8,000 ประเภทด้วยการใช้ WebAssembly https://th.news.hada.io/topic?id=5858
WebAssembly นำความสามารถในการขยายระบบรูปแบบใหม่มาสู่ network proxy https://th.news.hada.io/topic?id=1722
Wasmer 1.0 เปิดตัว https://th.news.hada.io/topic?id=3540
WebVM เครื่องเสมือน x86 แบบ serverless ที่รันในเบราว์เซอร์ https://th.news.hada.io/topic?id=5893