Faasta ได้ปรากฏตัวเป็นแพลตฟอร์ม Function-as-a-Service (FaaS) ใหม่ที่ใช้ประโยชน์จาก WebAssembly เพื่อให้ได้ประสิทธิภาพที่น่าทึ่ง รวมถึงเวลาเริ่มต้นเย็น (cold start) ที่ต่ำกว่า 1 มิลลิวินาที และการใช้หน่วยความจำที่น้อยมาก แพลตฟอร์มนี้กำลังสร้างความสนใจในชุมชนนักพัฒนาด้วยแนวทางที่อิงตามมาตรฐานและความสามารถในการโฮสต์ด้วยตัวเอง ซึ่งแก้ปัญหาช่องว่างในภูมิทัศน์ serverless ปัจจุบัน
WebAssembly และมาตรฐาน WASI P2 ขับเคลื่อนประสิทธิภาพ
Faasta แตกต่างจากแพลตฟอร์มอื่นด้วยการรันโมดูล WebAssembly โดยตรงโดยใช้มาตรฐาน WASI P2 และ WASIHTTP สำหรับการจัดการคำขอ แนวทางนี้แตกต่างอย่างมากจากแพลตฟอร์มอื่นที่อาจรัน WebAssembly โดยอ้อม การสนทนาในชุมชนเน้นย้ำว่าโมเดลการทำงานโดยตรงนี้ให้ข้อได้เปรียบด้านประสิทธิภาพเหนือทางเลือกอื่น เช่น Bun ซึ่งรัน WebAssembly ผ่าน JavaScript
ในฐานะคนที่ใช้ bun, deno และ cloudflare workers ผมอยากบอกว่าอย่างน้อยใน bun ส่วนของ wasm จริงๆ แล้วเกิดขึ้นในตัว js และ bun เพียงแค่รัน js นั้นโดยใช้ javascriptcore ซึ่งแน่นอนว่าไม่ได้รับการปรับแต่งอย่างที่ระบุไว้ในเอกสารของ Bun เอง
ทางเลือกด้านสถาปัตยกรรมนี้ช่วยให้ Faasta บรรลุเป้าหมายด้านประสิทธิภาพที่น่าประทับใจในขณะที่ยังคงมีขนาดเล็ก การใช้ Wasmtime ของแพลตฟอร์มเพื่อการทำงานของ WebAssembly ที่มีประสิทธิภาพยิ่งเพิ่มความสามารถด้านความเร็ว
คุณสมบัติหลักของ Faasta
- โมดูล WebAssembly ที่ใช้มาตรฐาน WASI P2
- WASIHTTP สำหรับการจัดการ HTTP ประสิทธิภาพสูง
- การแยกฟังก์ชันที่ปลอดภัย
- การเริ่มต้นแบบเย็น (cold starts) ที่รวดเร็วมาก (น้อยกว่า 1 มิลลิวินาที)
- สามารถโฮสต์ด้วยตัวเองได้ด้วยการตั้งค่าที่ง่าย
- สอดคล้องตามมาตรฐาน (WASI P2 และ WASIHTTP)
- ขับเคลื่อนด้วย Wasmtime
- มีอินสแตนซ์โฮสต์ฟรีที่ faasta.xyz
การนำมาตรฐาน WebAssembly มาใช้โดยผู้ให้บริการคลาวด์
ประเด็นที่น่าสนใจในการสนทนาของชุมชนคือการที่ผู้ให้บริการคลาวด์รายใหญ่นำ WebAssembly มาใช้สำหรับการประมวลผลแบบ serverless ในขณะที่ผู้ใช้บางรายแสดงความประหลาดใจที่ยักษ์ใหญ่ด้านคลาวด์ยังไม่ได้นำ WASM และ WASI มาใช้อย่างเต็มรูปแบบสำหรับฟังก์ชัน serverless คนอื่นๆ ชี้ให้เห็นว่าความคืบหน้ากำลังเกิดขึ้น แม้จะค่อยเป็นค่อยไป
Microsoft Azure ได้ส่งมอบ Spin เป็นบริการทดลองและกำลังลงทุนในการพัฒนา Wasmtime และ WASI Fastly ก็ได้พัฒนาแพลตฟอร์ม Compute ที่ขับเคลื่อนด้วย WASM Cloudflare Workers สนับสนุนทั้งการทำงานของ JavaScript และ WebAssembly แม้จะมีข้อจำกัดด้านขนาดบางประการ
ความเห็นร่วมกันดูเหมือนจะเป็นว่าการนำมาใช้โดยผู้ให้บริการคลาวด์อาจเร่งขึ้นเมื่อมาตรฐาน WASI ถึงเวอร์ชัน 1.0 ซึ่งอาจใช้เวลาอีกหลายปี อย่างไรก็ตาม ข้อกำหนด WASI P2 ปัจจุบันที่ Faasta นำมาใช้มีความเสถียรเพียงพอสำหรับการสร้างแอปพลิเคชันสำหรับการผลิตในปัจจุบัน
การเปรียบเทียบกับแพลตฟอร์มอื่นๆ
แพลตฟอร์ม | วิธีการใช้ WebAssembly | การปฏิบัติตามมาตรฐาน |
---|---|---|
Faasta | การประมวลผลโดยตรง | WASI P2, WASIHTTP |
Bun | การประมวลผลผ่าน JS | รองรับ WASI อย่างจำกัด |
Cloudflare Workers | รองรับ WASM | มีข้อจำกัดด้านขนาด (1-2MB) |
Azure (ทดลอง) | ใช้การติดตั้งแบบ Spin | รองรับ WASI |
Fastly Compute | ขับเคลื่อนด้วย WASM | การติดตั้งแบบกำหนดเอง |
ความสามารถในการโฮสต์ด้วยตัวเองแก้ปัญหาความกังวลเรื่องการผูกติดกับผู้ให้บริการ
หนึ่งในคุณสมบัติที่มีการพูดถึงมากที่สุดของ Faasta คือความสามารถในการโฮสต์ด้วยตัวเอง แพลตฟอร์มนี้ถูกออกแบบมาเป็นไบนารีแบบคงที่เดียวที่มีข้อกำหนดในการกำหนดค่าน้อยที่สุด ช่วยให้นักพัฒนาสามารถย้ายระหว่างสภาพแวดล้อมที่โฮสต์และโฮสต์ด้วยตัวเองได้อย่างง่ายดายโดยไม่ต้องเขียนแอปพลิเคชันใหม่
แนวทางนี้แก้ไขความกังวลทั่วไปกับแพลตฟอร์ม serverless โดยตรง: การผูกติดกับผู้ให้บริการ หากผู้ให้บริการโฮสต์ยกเลิกบริการ ผู้ใช้ Faasta สามารถเปลี่ยนไปใช้การโฮสต์ด้วยตัวเองหรือผู้ให้บริการรายอื่นได้อย่างรวดเร็ว ซึ่งรักษาการลงทุนในการพัฒนาแอปพลิเคชัน
ความสามารถในการโฮสต์ด้วยตัวเองยังเปิดการอภิปรายเกี่ยวกับการสนับสนุนโดเมนที่กำหนดเองและการจัดการใบรับรอง SSL ปัจจุบัน Faasta นำเสนอการสร้างใบรับรอง SSL แบบ wildcard โดยอัตโนมัติสำหรับการปรับใช้ที่โฮสต์ด้วยตัวเองโดยใช้ Porkbun DNS โดยมีแผนที่จะสนับสนุนใบรับรองโดเมนที่กำหนดเองหลายรายการบนอินสแตนซ์แบบหลายผู้เช่า
กลยุทธ์โอเพนซอร์สและการพัฒนาในอนาคต
ชุมชนได้แสดงความสนใจในแนวทางการให้ใบอนุญาตของ Faasta นักพัฒนาได้แสดงแผนที่จะทำให้ Faasta เป็นโครงการโอเพนซอร์ส โดยที่ CLI และส่วนประกอบอินเทอร์เฟซได้มีให้ใช้ภายใต้ใบอนุญาต MIT แล้ว กำลังพิจารณาใบอนุญาต copyleft สำหรับส่วนประกอบเซิร์ฟเวอร์หรือกลยุทธ์การให้ใบอนุญาตแบบคู่
ข้อเสนอแนะจากชุมชนกำลังกำหนดแผนการพัฒนา Faasta อย่างแข็งขัน โดยผู้ใช้ร้องขอคุณสมบัติเช่น การสนับสนุนคำนำหน้าพาธและโดเมนย่อยสำหรับ URL ของฟังก์ชัน ตัวอย่างเพิ่มเติม และเอกสารที่ดีขึ้น โครงการนี้ปัจจุบันอยู่ในช่วงทดลอง โดยนักพัฒนาเตือนว่าการเปลี่ยนแปลงที่ทำให้เกิดความไม่เข้ากันอาจขัดขวางบริการบนอินสแตนซ์ที่โฮสต์ faasta.xyz
ในขณะที่มาตรฐาน WebAssembly ยังคงพัฒนาอย่างต่อเนื่อง Faasta แสดงถึงการนำไปใช้ในช่วงแรกของสิ่งที่อาจกลายเป็นแนวทางที่พบบ่อยมากขึ้นสำหรับการประมวลผลแบบ serverless—แนวทางที่รวมประโยชน์ด้านประสิทธิภาพและความปลอดภัยของ WebAssembly กับความยืดหยุ่นของตัวเลือกการโฮสต์ด้วยตัวเอง
อ้างอิง: Faasta: a Faster FaaS Platform