Cha đẻ Node.js giải phóng Durable Objects khỏi Cloudflare

12 tháng 8, 2026·4 phút đọc

Ryan Dahl, người tạo ra Node.js, vừa công bố dự án mã nguồn mở mang tên celld, cho phép tự triển khai mô hình Durable Objects của Cloudflare trên hạ tầng của riêng bạn. Dự án hứa hẹn giảm chi phí vận hành đáng kể so với dịch vụ gốc, đồng thời mang lại sự linh hoạt cho các nhà phát triển muốn thoát khỏi sự ràng buộc của nhà cung cấp đám mây cụ thể.

Cha đẻ Node.js giải phóng Durable Objects khỏi Cloudflare

Cha đẻ Node.js giải phóng Durable Objects khỏi Cloudflare

Ryan Dahl, người sáng tạo ra Node.js, vừa trình làng dự án mã nguồn mở celld, được mô tả như một bản triển khai "tự lưu trữ, phân tán" của Durable Objects và Workers. Đây được xem là tin vui cho các lập trình viên muốn sử dụng mô hình điện toán trạng thái mạnh mẽ này nhưng không muốn bị phụ thuộc vào hạ tầng backend của Cloudflare.

Mô hình Durable Objects là gì?

Durable Objects là một object đơn luồng với ID toàn cầu duy nhất và có bộ lưu trữ riêng, nơi dữ liệu người dùng được lưu trong một bản sao SQLite riêng. Nó chạy trên nền tảng serverless Workers của Cloudflare, sử dụng các isolate – một loại máy ảo nhẹ được hỗ trợ bởi JavaScript engine V8 của Google.

Khác với các nền tảng serverless truyền thống như AWS Lambda, mô hình Durable Objects đặt dữ liệu ngay cạnh compute, đồng thời sử dụng thực thi đơn luồng để loại bỏ các vấn đề phức tạp về đồng thời. celld mô tả đây là "một trong những primitive tốt nhất mà hệ thống phân tán được trao trong nhiều năm qua" và "một primitive tốt đến vậy xứng đáng chạy ở bất kỳ đâu".

Serverless nhưng có trạng thái

Kể từ khi ra mắt vào năm 2020, Durable Objects đã được dùng để xây dựng các ứng dụng Web phân tán, độ trễ thấp. Đây là một môi trường thực thi serverless có trạng thái, hoạt động như một bộ đệm dữ liệu có thể tính toán.

Với WebSocket API, một Durable Object có thể kết nối nhiều người dùng đồng thời trong môi trường trực tiếp. Chế độ Hibernate của WebSockets cho phép đưa object vào trạng thái ngủ, giúp tiết kiệm chi phí khi không ai sử dụng ứng dụng.

Mô hình này phù hợp nhất cho các ứng dụng cộng tác thời gian thực như trò chơi nhiều người chơi, ứng dụng năng suất nhóm và AI agents. Theo một YouTuber hướng dẫn, việc dùng Durable Objects đã giúp anh loại bỏ cả một bộ công cụ bao gồm Amazon API Gateway, Apache Kafka, Redis, AWS Lambda, EventBridge, Apache Airflow và Spark.

celld – ngôi nhà mã nguồn mở cho Durable Objects

Ryan Dahl là một trong những chuyên gia hàng đầu thế giới về JavaScript I/O. Sau Node.js, ông tiếp tục phát triển Deno – một runtime JavaScript thế hệ thứ hai với các ý tưởng cải tiến về asynchronous JavaScript.

celld thay thế backend của Cloudflare bằng Amazon S3 hoặc các dịch vụ tương đương làm bộ lưu trữ, đồng thời sử dụng Tokio – async runtime của Rust. Giống Durable Objects, mỗi cell trong celld có một bản sao SQLite riêng.

Dahl tuyên bố backend mã nguồn mở này sẽ "rẻ hơn nhiều bậc về độ lớn khi mở rộng quy mô" so với Durable Objects. Ông ước tính 100 cell Durable Objects liên tục hoạt động tốn 415 USD/tháng trên Cloudflare, trong khi celld chỉ khoảng 49 USD/tháng khi chạy trên droplet 8 GB của DigitalOcean.

Cloudflare phản bác rằng con số 415 USD/tháng chỉ đúng khi tất cả các object hoạt động liên tục. Nếu để chúng "ngủ", chi phí chỉ khoảng 20,65 USD.

Dù vậy, bản thân mô hình này đã thu hút sự quan tâm từ cộng đồng Hacker News: "Rất vui khi thấy hỗ trợ chạy durable objects ngoài một nhà cung cấp duy nhất. Đã upvote", một độc giả bình luận.

Xu hướng dịch chuyển dữ liệu về gần compute

Không chỉ celld, các bên khác cũng đang phát triển giải pháp tương tự. Nhà cung cấp dịch vụ Postgres Neon vừa giới thiệu Neon Functions, cho phép đặt dữ liệu và compute cạnh nhau cho các workload chạy lâu.

Thông tin kỹ thuật về celld

Được viết bằng Rust và JavaScript, celld phát hành dưới giấy phép Apache 2. Nó có thể chạy mã JavaScript và TypeScript, đồng thời hỗ trợ Rust, C/C++, Go hoặc Zig thông qua WebAssembly.

Một điểm đặc biệt: dù là mã nguồn mở, celld cấm các đóng góp từ AI. Trang GitHub của dự án nêu rõ: "Các coding agent khiến việc gửi một thay đổi lớn, ít ngữ cảnh trở nên quá dễ dàng, khiến người bảo trì tốn nhiều thời gian hơn là tiết kiệm". Đóng góp từ con người vẫn được chào đón, nhưng bạn cần hiểu rõ mã của mình trước khi gửi.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗