15 điểm bởi xguru 2022-12-05 | 1 bình luận | Chia sẻ qua WhatsApp
  • Fiberplane là công cụ notebook cộng tác cho hạ tầng (ứng phó sự cố và gỡ lỗi hạ tầng)
  • Công cụ này đã giúp giải quyết hai vấn đề lớn

1. Operational Transformation

  • Cần có một cách để giải quyết xung đột trong tính năng cộng tác của trình soạn thảo
  • Họ đã triển khai OT, thuật toán được Google Docs sử dụng, nhưng đây không phải việc dễ dàng
  • Nguyên nhân chính của độ phức tạp là khi số lượng operation được hỗ trợ tăng lên, số lượng phép biến đổi cần triển khai cũng tăng theo cấp số nhân
  • Logic để áp dụng việc này phải tồn tại ở cả client và server. Sự không nhất quán giữa hai bên có thể gây ra tác dụng phụ (chẳng hạn notebook khác nhau giữa những người cộng tác)
  • Việc triển khai riêng hai lần ở cả hai phía là rủi ro. Quy mô nhóm cũng nhỏ, và lượng mã cần sao chép sẽ tăng rất nhiều
  • Vì vậy họ đã triển khai thuật toán backend bằng Rust. Sau đó dùng WASM để chạy chính xác cùng một đoạn mã ở frontend
  • Nhờ đó tiết kiệm công sức phát triển và giảm rủi ro sai lệch

2. Providers

  • Một vấn đề khác là đưa dữ liệu từ các nguồn dữ liệu bên ngoài vào notebook
  • Các nguồn dữ liệu có nhiều dạng và quy mô khác nhau, và không phải lúc nào cũng dễ truy cập trực tiếp từ trình duyệt của người dùng
  • Để giải quyết vấn đề này, họ đã tạo ra plugin dựa trên WASM có tên "Fiberplane Providers", có thể chạy cả trên trình duyệt lẫn máy chủ proxy do khách hàng tự lưu trữ
  • Công nghệ này cũng có thể làm bằng JavaScript, nhưng WASM có các ưu điểm sau
    • Hiệu năng tốt hơn
    • Có thể viết plugin bằng bất kỳ ngôn ngữ nào được WASM hỗ trợ
    • Plugin WASM chạy trong sandbox, giúp giới hạn khả năng của các provider độc hại

fp-bindgen

  • WebAssembly hữu ích trong nhiều kịch bản khác nhau
  • Có thể đơn giản hóa việc phát triển sản phẩm nội bộ hoặc chạy an toàn mã truy cập vào hạ tầng của khách hàng
  • Vì WASM quan trọng và được dùng nhiều, họ cũng đã tạo ra một công cụ riêng
  • fp-bindgen là trình tạo binding hoạt động trên mã nguồn Rust
  • Có thể dùng để viết plugin WASM bằng Rust và host chúng trong trình duyệt hoặc môi trường Wasmer
  • fp-bindgen đã được phát hành dưới dạng mã nguồn mở

1 bình luận

 
xguru 2022-12-05

Tôi thích kiểu bài viết của các startup như thế này.
Họ sắp xếp lại vấn đề mình đã giải quyết theo cách có thể giúp ích cho người khác, đồng thời quảng bá luôn mã nguồn mở liên quan của mình, nên cũng tạo cảm giác đang đóng góp cho hệ sinh thái.

Trong GeekNews Weekly #177, đã từng giới thiệu QuickJS-emscripten : biên dịch và chạy QuickJS bằng WASM.
Bên này cũng đang đi theo khái niệm plugin thông qua sandboxing theo cách tương tự. Có vẻ việc tận dụng WASM như một container cho sandboxing giờ đang dần trở thành điều cơ bản.