- Mã runtime JavaScript/WASM thực tế được sử dụng trong CloudFlare Workers
- Chỉ thay đổi một phần để có thể port sang các môi trường khác
- Tên gọi được lấy từ
-d "daemon" của máy chủ Unix, đọc là "worker dee"
Mục đích sử dụng
- Có thể self-host Workers. Đồng thời đây cũng là một máy chủ web có thể dùng đơn giản qua API. Dễ áp dụng trong bất kỳ môi trường nào
- Dùng cho phát triển và kiểm thử cục bộ
- Proxy có thể lập trình (forward & reverse). Có thể chặn và xử lý request/response bằng JavaScript
What it is
- Server-first : nhiều runtime JS/WASM có thể dùng cho nhiều mục đích, nhưng workerd chỉ tập trung vào máy chủ. Cụ thể hơn là máy chủ HTTP
- Web standard APIs : cung cấp các API tiêu chuẩn giống như trên trình duyệt web (Fetch, URL, WebCrypto, v.v.). Nghĩa là mã phát triển ở đây cũng có thể port sang trình duyệt
- Nanoservices : giờ đây vượt qua microservices để đến nanoservices!
- Nanoservices là một mô hình mới vừa có ưu điểm của triển khai độc lập, vừa chỉ có mức overhead tương đương lời gọi hàm thư viện
- Với workerd, có thể cấu hình nhiều Worker trong cùng một tiến trình; mỗi Worker chạy độc lập nhưng vẫn có thể giao tiếp với nhau
- Homogeneous deployment : trước đây phải chạy từng dịch vụ cụ thể trong từng container cụ thể, nhưng với workerd, mọi máy đều có thể chạy mọi dịch vụ
- Capability bindings: cấu hình gọn gàng và bảo đảm an toàn SSRF
- Always backwards compatible : luôn bảo đảm tương thích ngược
What it's not
- workerd is not a Secure Sandbox : mã độc vẫn có thể chạy. Để ngăn điều này cần một lớp sandbox riêng
- workerd is not an independent project : là phần cốt lõi và là một phần của Cloudflare Workers. Có nhận commit từ bên ngoài nhưng khó có thể bảo đảm.
- workerd is not an off-the-shelf edge compute platform : không phải toàn bộ dịch vụ Workers
2 bình luận
Đây đúng là thứ mà khi được công bố mình đã muốn tự làm thử, ồ.
Ban đầu tôi không hiểu ý này là gì, nhưng đọc phần giải thích ngay phía trên thì hóa ra là nếu phát triển theo kiểu nanoservice (functions), bạn có thể просто triển khai toàn bộ nanoservice lên một máy (điều này khả thi vì overhead thấp), rồi khi cần thì chỉ việc tăng thêm các máy giống hệt như vậy, nên không cần cấu hình triển khai phức tạp.