19 điểm bởi GN⁺ 2026-01-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • OpenWorkers là một runtime mã nguồn mở chạy JavaScript trên nền V8, cho phép triển khai edge computing trên hạ tầng riêng
  • Hỗ trợ kho lưu trữ KV, PostgreSQL, storage tương thích S3/R2, service bindings, biến môi trường và secret
  • Duy trì mức độ tương thích cao với Cloudflare Workers, bao gồm các Web API quan trọng như fetch, ReadableStream, crypto.subtle
  • Có thể self-host đơn giản nhờ sandbox V8 Isolate, lập lịch cron, triển khai dựa trên Docker Compose
  • Đây là dự án đã phát triển trong khoảng 7 năm, hướng tới môi trường thực thi JavaScript không phụ thuộc nhà cung cấp

Tổng quan OpenWorkers

  • OpenWorkersruntime tương thích Cloudflare Workers được viết bằng Rust, sử dụng V8 Isolate để chạy JavaScript
    • Có thể tận dụng lợi thế của edge computing ngay cả trong môi trường máy chủ riêng
    • Được phát hành dưới dạng mã nguồn mở, cho phép tự do triển khai và chỉnh sửa

Tính năng chính

  • Kết nối với nhiều tài nguyên bên ngoài thông qua tính năng bindings
    • KV storage: hỗ trợ get, put, delete, list
    • Tích hợp cơ sở dữ liệu PostgreSQL
    • Hỗ trợ storage tương thích S3/R2
    • Bao gồm service bindings, quản lý biến môi trường và secret
  • Hỗ trợ Web API
    • Cung cấp các API tiêu chuẩn như fetch, Request, Response, ReadableStream
    • Bao gồm crypto.subtle, TextEncoder/Decoder, Blob, setTimeout, AbortController

Kiến trúc

  • Hệ thống gồm nginx proxy, dashboard, API, dịch vụ log, runner, PostgreSQL, NATS, scheduler
    • Mỗi runner thực thi mã trong V8 Isolate với giới hạn CPU 100msbộ nhớ 128MB
    • Bao gồm scheduler tích hợp sẵn hỗ trợ cú pháp cron 5~6 trường
    • Duy trì tính tương thích cú pháp với Cloudflare Workers

Self-hosting

  • Có thể triển khai chỉ với một cơ sở dữ liệu PostgreSQL và một tệp Docker Compose
    • Có thể chạy dễ dàng bằng các lệnh git clone, cấu hình .env, docker compose up
    • Bao gồm quy trình migration và tạo token

Bối cảnh phát triển

  • Đây là dự án được hoàn thiện sau khoảng 7 năm phát triển
    • Ban đầu thử nghiệm sandbox JS với vm2, sau đó phát triển dựa trên cảm hứng từ mô hình Cloudflare Workers
    • Đi qua Deno-core và hiện đã được viết lại trên nền rusty_v8
  • Mục tiêu là xây dựng môi trường chạy trên máy chủ riêng không phụ thuộc nhà cung cấp, đồng thời mang lại trải nghiệm phát triển (DX) ở mức Cloudflare Workers
  • Trong tương lai dự kiến bổ sung debugging xác định (deterministic debugging) thông qua ghi lại và phát lại quá trình thực thi

1 bình luận

 
GN⁺ 2026-01-02
Ý kiến trên Hacker News
  • Khái niệm mang sức mạnh của edge computing về hạ tầng riêng khá thú vị
    Nhưng self-hosting có vẻ hơi mâu thuẫn với bản chất của edge computing
    Đây là mô hình chỉ khả thi khi một nhà cung cấp lớn như Cloudflare có hơn 300 PoP (Point of Presence) trên toàn thế giới
    Dĩ nhiên vẫn có thể ghép các nhà cung cấp có đạo đức hơn để tạo cấu trúc tương tự, nhưng sẽ tốn nhiều công sức và rủi ro hơn rất nhiều

    • Không rõ có thật sự cần tới 300 PoP để tận dụng lợi ích của mô hình edge hay không
      Tôi nghĩ chỉ khoảng 10 điểm ở các khu vực chính có lẽ cũng đã đủ
    • Tôi tò mò liệu có thể có một mô hình hợp tác giữa các mạng lưới host phân tán để phá thế độc quyền của Cloudflare không
      Nhưng cũng lo rằng việc điều phối sao cho an toàn và đáng tin cậy sẽ quá khó
  • Vấn đề của các giải pháp sandbox là phải đưa ra được bảo đảm rất mạnh rằng mã không thể thoát khỏi sandbox
    Để chứng minh điều đó cần có kết quả kiểm thử cho nhiều kịch bản tấn công cùng tài liệu chi tiết
    Nhưng tài liệu ở mức này rất hiếm, và thực tế khó tìm được ví dụ thật sự đáng tin
    Vì vậy tôi thường kiểm tra xem có trường hợp nào được các tập đoàn lớn dùng trong môi trường production và được đội ngũ bảo mật duy trì hay không

    • Tôi cũng đồng ý. AI có thể nâng cao năng suất, nhưng trong môi trường bảo mật cao, câu “được viết lại trên rusty_v8 với sự hỗ trợ của Claude” lại khiến tôi thấy lo hơn
    • Một trong những lý do runtime của Cloudflare Workers an toàn là họ duy trì việc đồng bộ với V8 mainline cực kỳ tích cực
      Thậm chí đôi khi còn áp dụng bản phát hành V8 sớm hơn cả Chrome
    • V8 isolate cung cấp cách ly bộ nhớ, đồng thời đặt giới hạn CPU (100ms) và bộ nhớ (128MB)
      Mỗi worker chạy dưới dạng isolate chứ không phải tiến trình riêng, nên tương tự mô hình của Cloudflare
      Nhưng khi xử lý mã bên thứ ba hoàn toàn không đáng tin cậy, tốt hơn vẫn nên thêm một lớp cách ly bằng container hoặc VM
      Cơ chế sandbox này tập trung vào cách ly tài nguyên hơn là bảo mật
    • Tôi nghĩ việc đòi hỏi một bảo đảm hoàn hảo như vậy là không thực tế
      Một cuộc kiểm toán bảo mật kiểu “chúng tôi đã xác minh và nó an toàn, hãy tin chúng tôi” là không đủ
    • Với Cloudflare, mã người dùng có thể mang tính độc hại nên bảo mật sandbox là bắt buộc, nhưng
      trong môi trường self-hosting thì vốn dĩ đã có quyền truy cập hệ thống nên ít cần lo về sandbox escape hơn
  • Tôi nghĩ đây là một dự án rất hay
    Nếu workerd là mã nguồn mở, thì tôi muốn biết điểm khác biệt của OpenWorkers có phải là cung cấp một môi trường hoàn chỉnh hay không
    Tôi cũng muốn biết runtime có khác gì không, và sau này có kế hoạch cho dịch vụ managed hay không

    • Có ba khác biệt chính
      1️⃣ workerd chỉ cung cấp runtime, còn OpenWorkers là một nền tảng hoàn chỉnh gồm dashboard, API, scheduler, log, binding (KV, S3/R2, Postgres)
      2️⃣ workerd dựa trên C++, còn OpenWorkers dựa trên Rust + rusty_v8 nên đơn giản hơn và dễ hack hơn
      3️⃣ Đã có phiên bản managed tại dash.openworkers.com, và còn có cả free tier
      Nhưng self-hosting được thiết kế như công dân hạng nhất
  • Cốt lõi của Cloudflare Workers là tính phí theo từng hàm, còn nếu self-hosting thì cuối cùng vẫn phải chuẩn bị sẵn phần cứng

    • Vẫn có nhiều công ty đang vận hành máy chủ trong trung tâm dữ liệu riêng
      Không nhất thiết phải thuê ngoài mọi thứ, và việc có những lựa chọn tương tự là điều tốt
      Những lựa chọn như vậy giúp hạ thấp rào cản tiếp cận
  • Trước đây tôi từng làm khá nhiều việc tách deno_core ra, nên tôi hiểu vì sao lại chuyển sang raw rusty_v8
    deno_core có khá nhiều mã legacy, nên mỗi lần chỉnh sửa thì test rất hay bị vỡ

    • Cảm ơn! deno_core vẫn là một codebase tuyệt vời nên chúng tôi vẫn duy trì openworkers-runtime-deno
      Nhưng để kiểm soát chi tiết hơn bên trong runtime, chúng tôi đã chuyển sang rusty_v8,
      và sau này cũng có kế hoạch bổ sung lại các tính năng còn thiếu cho runtime của deno
  • Nếu đây là dự án giúp giảm phụ thuộc vào vendor, thì tôi hoàn toàn ủng hộ
    Tôi hy vọng các dịch vụ cloud sẽ bị gây áp lực để định giá thực tế hơn
    Hiện tại họ đang tính phí quá cao ngay cả với những tính năng cơ bản như NAT
    Dĩ nhiên cloud rất tiện, nhưng vấn đề là chi phí cao so với tự làm

    • Runtime của Cloudflare Workers vốn đã là mã nguồn mở: cloudflare/workerd
    • Gần đây giá RAM tăng khiến tôi lo self-hosting sẽ còn khó hơn
      Nếu các tập đoàn lớn độc chiếm tài nguyên thì cá nhân có thể sẽ ngày càng khó tự host hơn
    • Cách nói chi phí NAT là ‘đắt hơn miễn phí’ khá thú vị
      Nhưng trên thực tế, ở nhiều quốc gia thì chi phí tự vận hành còn lớn hơn
      Không chỉ cài đặt là xong, mà còn tốn đáng kể cho nhân sự bảo trì và giám sát
  • Sẽ tốt hơn nếu tài liệu nêu rõ những tính năng hiện chưa hoạt động và lộ trình phát triển

    • Gợi ý hay! Những tính năng chưa được triển khai hiện gồm Durable Objects, WebSockets, HTMLRewriter và cache API
      Ưu tiên tiếp theo là tính năng ghi lại/phát lại để debug khi chạy, và chúng tôi sẽ thêm một mục roadmap vào tài liệu
  • Sơ đồ kiến trúc ASCII bị vỡ trên Pixel + Firefox
    Sơ đồ dạng văn bản thì hấp dẫn thật, nhưng trên thực tế đăng phiên bản biên dịch thành ảnh sẽ thực dụng hơn

    • Cảm ơn đã báo! Tôi đã sửa bằng cách thêm phiên bản ASCII đơn giản hơn cho thiết bị di động
    • Trên iPhone 11 Safari của tôi thì nó hiển thị hoàn hảo
  • Đây là ý tưởng sản phẩm rất xuất sắc cả về mặt kỹ thuật lẫn cấu trúc
    Tôi đặc biệt thích mô hình lấy dự án mã nguồn mở của vendor lớn rồi hoàn trả ngược lại bằng mã nguồn mở
    Tức là thay vì họ lấy mã nguồn mở để thương mại hóa, chúng ta đưa mô hình của họ trở lại thành mã nguồn mở — tôi nghĩ chính những cách tiếp cận như vậy mới là đúng

  • Có cảm giác xu hướng “nếu tự host cloud ngay trên máy của mình thì sao?” đang quay trở lại
    Gần đây tôi thấy xu hướng self-hosting này xuất hiện ở nhiều nơi
    Video bài nói chuyện liên quan cũng khá thú vị

    • Nhưng tôi nghĩ như vậy thì khó còn gọi là ‘cloud’ nữa
      Cốt lõi của cloud là elasticity
      Có thể tăng giảm số lượng instance theo nhu cầu và chỉ trả tiền cho phần đã dùng
      Self-hosting thì dù công cụ triển khai có tiện đến đâu, cuối cùng vẫn phải gánh chi phí của cả máy chủ
      Nếu tải ổn định hoặc có thể dự đoán thì không sao, nhưng nếu không thì sẽ kém hiệu quả
      (Ví dụ như sự khác nhau giữa đi xe buýt và sở hữu một chiếc xe van)
    • Giá trị của FaaS (Function-as-a-Service) không nằm ở từ ‘cloud’ mà ở việc cung cấp một framework hướng sự kiện
      Lập trình viên có thể tập trung vào việc triển khai event handler, và nếu có thêm queue hay khả năng thực thi bền vững thì còn mạnh hơn nữa
      Cuối cùng thì FaaS là công cụ cấp cao giúp trừu tượng hóa phần mã boilerplate