Topcoat: Đưa Rust lên web với khả năng render phía máy chủ
Carl Lerche, cha đẻ của Tokio, vừa giới thiệu Topcoat — framework cho phép viết ứng dụng web bằng Rust nhưng render phía máy chủ và biên dịch thành JavaScript ở phía trình duyệt. Cách tiếp cận này hứa hẹn tốc độ tải trang nhanh hơn, giảm tải cho client và tận dụng lợi thế hiệu năng lẫn độ an toàn của Rust.

Rust lâu nay nổi tiếng nhờ hiệu năng cao và các bảo đảm an toàn bộ nhớ, nhưng hiếm khi được dùng để phát triển web. Điều đó có thể sắp thay đổi, khi Carl Lerche — kỹ sư chính tại Amazon Web Services và là tác giả của runtime bất đồng bộ Tokio — vừa trình làng Topcoat, một framework dành cho ứng dụng web viết bằng Rust.
Anh giới thiệu dự án này tại hội nghị trực tuyến P99 2026 do ScyllaDB tổ chức. Theo Lerche, với sự hỗ trợ của AI trong việc viết mã, lập trình viên có thể cân nhắc dùng Rust cho web nhờ hiệu năng thời gian chạy và độ an toàn mà ngôn ngữ này mang lại.
Một hướng tiếp cận khác biệt
Hiện đã có một số framework web dùng Rust như Leptos và Dioxus. Cả hai đều biên dịch Rust sang WebAssembly — cách làm phù hợp với các tác vụ tính toán nặng, nhưng thời gian tải ban đầu khá chậm.
Topcoat chọn con đường khác: biên dịch mã Rust thành JavaScript thân thiện với trình duyệt. Với Lerche, JavaScript vẫn là cách tốt nhất để tương tác với DOM (Document Object Model) của trình duyệt.
"Ba năm trước, nếu tôi nói Rust có thể là ngôn ngữ tốt nhất để xây dựng ứng dụng web, chắc hẳn các bạn sẽ cho rằng tôi gặp vấn đề về thần kinh", Lerche chia sẻ trước khán giả trực tuyến.
Render phía máy chủ, trả về từng phần
Điểm khác biệt cốt lõi của Topcoat nằm ở mô hình render phía máy chủ (server-side rendering). Thay vì dồn toàn bộ logic xuống trình duyệt như phần lớn framework JavaScript hiện nay, Topcoat thực thi phần lớn logic trên máy chủ và chỉ gửi kết quả về client.
Khi người dùng bấm một nút trên trang, toàn bộ trang không bị tải lại. Máy chủ chỉ trả về đoạn HTML của đúng thành phần đó và cập nhật nó tại chỗ.
Đây không phải ý tưởng mới — render phía máy chủ vốn có từ trước cả lập trình phản ứng (reactive). Gần đây, hướng tiếp cận này đang quay trở lại mạnh mẽ với các công cụ như HTMX, Datastar và Phoenix LiveView, đặc biệt với những lập trình viên đã mệt mỏi vì React và các framework tương tự.
"Nghe có vẻ như chúng ta đang quay lại thời mỗi cú nhấp chuột đều phải tải lại cả trang, nhưng thực tế bạn vẫn có được gần như toàn bộ những gì mình hình dung về lập trình phản ứng", Lerche giải thích.
Điểm mạnh về tốc độ
Topcoat tiết kiệm thời gian tải nhờ render toàn bộ các thành phần cùng lúc thay vì lần lượt từng cái. Việc nạp dữ liệu cũng không chặn quá trình tải trang: máy chủ có thể gửi về trang với các placeholder, rồi dữ liệu được truyền dần vào sau.
Yếu tố then chốt giúp việc này hiệu quả là Toasty — một ORM bất đồng bộ viết bằng Rust do chính Lerche phát triển trước đó. Nhờ Toasty, thành phần đang nằm trên máy chủ có thể truy vấn trực tiếp cơ sở dữ liệu.
"Bạn có thể render ngay với dữ liệu, không cần phải lo tuần tự hóa, gửi xuống client rồi giải tuần tự hóa nữa", anh cho biết.
Kết quả là máy chủ có thể gửi ngay phần đầu của mẫu HTML về trình duyệt, cho phép nó bắt đầu tải trước các tài nguyên như CSS hay hình ảnh trong lúc phần còn lại của trang đang được render.
Phù hợp với đa số ứng dụng web
Lerche thừa nhận Topcoat không dành cho những ứng dụng phức tạp cỡ như Figma, nhưng hoàn toàn đủ sức cho các ứng dụng chạy trên trình duyệt, dựa trên cơ sở dữ liệu thông thường — tức là khoảng 90% web hiện nay.
Nhận xét về dự án, lập trình viên frontend Ken Kohlman (kênh YouTube "Code to the Moon") đánh giá:
"Sự đơn giản thật đáng kinh ngạc, và đây là thứ chúng ta đã thiếu trầm trọng trong lĩnh vực này. Tôi cảm thấy người chưa biết nhiều về Rust cũng có thể bắt đầu khá nhanh với công cụ này."
Dù vậy, Kohlman cũng đồng tình rằng Topcoat phù hợp nhất với các dự án web nhỏ, bởi framework chỉ dùng một tập con cú pháp của Rust. Anh lưu ý: "Việc có toàn bộ cú pháp Rust trong tay vẫn là một lợi thế đáng kể."
Ý nghĩa với cộng đồng lập trình viên
Với lập trình viên Việt Nam đang tìm hiểu hoặc đã quen với Rust, Topcoat mở ra một hướng mới để áp dụng ngôn ngữ này vào web mà không phải chịu độ trễ khởi động của WebAssembly. Việc kết hợp Rust phía máy chủ với JavaScript phía trình duyệt cũng là mô hình đáng theo dõi trong bối cảnh các doanh nghiệp ngày càng quan tâm đến hiệu năng và chi phí hạ tầng.


