- Fiberplane เป็นเครื่องมือโน้ตบุ๊กแบบทำงานร่วมกันสำหรับโครงสร้างพื้นฐาน (การรับมือเหตุขัดข้องและการดีบักโครงสร้างพื้นฐาน)
- ช่วยแก้ปัญหาใหญ่ได้ 2 อย่าง
1. Operational Transformation
- จำเป็นต้องมีวิธีแก้ความขัดแย้งในฟีเจอร์การทำงานร่วมกันของเอดิเตอร์
- ได้ติดตั้งใช้อัลกอริทึม OT ที่ Google Docs ใช้งานอยู่ แต่ไม่ใช่งานที่ง่าย
- สาเหตุหลักของความซับซ้อนคือ เมื่อจำนวน operation ที่รองรับเพิ่มขึ้น จำนวน transformation ที่ต้องติดตั้งใช้จะเพิ่มขึ้นแบบทวีคูณ
- ตรรกะสำหรับนำการเปลี่ยนแปลงนี้ไปใช้ต้องมีอยู่ทั้งฝั่ง client/server ความไม่สอดคล้องกันระหว่างสองฝั่งอาจก่อให้เกิดผลข้างเคียงได้ (เช่น โน้ตบุ๊กของผู้ร่วมงานแต่ละคนไม่ตรงกัน)
- การติดตั้งใช้สิ่งนี้แยกกันสองครั้งในทั้งสองฝั่งมีความเสี่ยง ทีมก็มีขนาดเล็ก และโค้ดที่ต้องทำซ้ำจะเพิ่มขึ้นมหาศาล
- จึงติดตั้งใช้อัลกอริทึมฝั่งแบ็กเอนด์ด้วย Rust และใช้ WASM เพื่อรันโค้ดเดียวกันแบบตรงกันทุกประการในฝั่งฟรอนต์เอนด์ด้วย
- วิธีนี้ช่วยประหยัดแรงพัฒนาและลดความเสี่ยงจากความไม่สอดคล้องกัน
2. Providers
- อีกปัญหาหนึ่งคือการนำข้อมูลจากแหล่งข้อมูลภายนอกเข้าสู่โน้ตบุ๊ก
- แหล่งข้อมูลมีรูปแบบและขนาดที่หลากหลาย และไม่ใช่ว่าจะเข้าถึงได้ง่ายจากเบราว์เซอร์ของผู้ใช้เสมอไป
- เพื่อแก้ปัญหานี้ จึงสร้างปลั๊กอินบนพื้นฐาน WASM ชื่อ "Fiberplane Providers" ที่รันได้ทั้งในเบราว์เซอร์และพร็อกซีเซิร์ฟเวอร์ที่ลูกค้าโฮสต์เอง
- เทคโนโลยีแบบนี้ทำได้ด้วย JavaScript เช่นกัน แต่ WASM มีข้อดีดังนี้
- ประสิทธิภาพดีกว่า
- สามารถเขียนปลั๊กอินได้ด้วยทุกภาษาที่ WASM รองรับ
- ปลั๊กอิน WASM ทำงานใน sandbox จึงจำกัดความสามารถของ provider ที่เป็นอันตรายได้
fp-bindgen
- WebAssembly มีประโยชน์ในหลายสถานการณ์
- ช่วยทำให้การพัฒนาผลิตภัณฑ์ภายในง่ายขึ้น หรือรันโค้ดที่เข้าถึงโครงสร้างพื้นฐานของลูกค้าได้อย่างปลอดภัย
- เนื่องจาก WASM มีความสำคัญและถูกใช้งานมาก จึงได้สร้างเครื่องมือของตัวเองแยกต่างหากด้วย
- fp-bindgen เป็นตัวสร้าง binding ที่ทำงานกับซอร์สโค้ด Rust
- ใช้เขียนปลั๊กอิน WASM ใน Rust และโฮสต์ในเบราว์เซอร์หรือสภาพแวดล้อม Wasmer ได้
- fp-bindgen ถูกเผยแพร่เป็นโอเพนซอร์สแล้ว
1 ความคิดเห็น
ฉันชอบบทความสตาร์ทอัปแนวนี้ครับ
ให้ความรู้สึกว่าพวกเขาจัดระเบียบปัญหาที่ตัวเองแก้ได้ไว้ให้เป็นประโยชน์กับคนอื่น พร้อมกับโปรโมตโอเพนซอร์สที่เกี่ยวข้องของตัวเองไปด้วย และยังดูเหมือนมีส่วนช่วยต่อระบบนิเวศอีกด้วย
ใน GeekNews Weekly #177 เคยแนะนำ QuickJS-emscripten : คอมไพล์และรัน QuickJS เป็น WASM ไว้ครับ
ที่นี่ก็ใช้แนวคิดปลั๊กอินผ่านการแซนด์บ็อกซ์ในลักษณะคล้ายกันเหมือนกันนะครับ ดูเหมือนว่าการใช้ WASM เป็นคอนเทนเนอร์สำหรับการแซนด์บ็อกซ์กำลังจะกลายเป็นพื้นฐานไปแล้ว