Wasm là CGI mới
- Vai trò của Wasm: Wasm (WebAssembly) đang sẵn sàng mang đến một thay đổi mới cho mô hình ứng dụng web. Trọng tâm của nó là giúp việc xây dựng và bảo trì các ứng dụng hiệu năng cao trở nên dễ dàng hơn.
- Mô hình ứng dụng web trước đây: CGI đã chuyển web từ một kho lưu trữ tài liệu thành một mạng lưới ứng dụng. FastCGI được phát triển để giải quyết các vấn đề về hiệu năng, và sau đó tiếp tục phát triển thành điện toán serverless.
- Điện toán serverless: Điện toán serverless như Amazon Lambda khiến bạn quản lý các “hàm” thay vì quản lý máy chủ. Điều này mang lại lợi thế có thể mở rộng nhanh theo lưu lượng yêu cầu.
Wasm trên máy chủ
- Khả năng mở rộng của Wasm: Wasm không chỉ chạy trong trình duyệt mà còn có thể chạy trên máy chủ, cung cấp một mô hình cô lập nhẹ hơn cho các ứng dụng phía máy chủ.
- Môi trường thực thi Wasm: Các module Wasm chạy trong máy ảo và có thể được biên dịch từ nhiều ngôn ngữ khác nhau. Điều này có thể góp phần cải thiện hiệu năng trong môi trường serverless.
Những đánh đổi của Wasm
- Luồng và biên dịch JIT: Wasm không hỗ trợ luồng theo mặc định và không thể biên dịch JIT. Điều này có thể ảnh hưởng đến hiệu năng.
- Giao diện bộ nhớ: Việc di chuyển dữ liệu giữa module Wasm và host có thể cần sao chép, và điều này có thể ảnh hưởng đến hiệu năng.
Triển vọng tương lai
- Sự phát triển của Wasm: Khi môi trường thực thi và các công cụ phát triển Wasm tiếp tục tiến bộ, các ngôn ngữ scripting sẽ có runtime Wasm. Điều này có thể cải thiện đáng kể tốc độ thực thi của ứng dụng.
- Điện toán biên: Wasm cho phép thực hiện tính toán gần người dùng hơn thông qua edge computing, từ đó cải thiện hiệu năng.
# Tóm tắt của GN⁺
- Wasm đang dẫn dắt một thay đổi mới trong mô hình ứng dụng web, giúp việc xây dựng và bảo trì các ứng dụng hiệu năng cao trở nên dễ dàng hơn.
- Sự kết hợp giữa điện toán serverless và Wasm giúp giảm độ phức tạp trong quản lý máy chủ, đồng thời mang lại khả năng mở rộng nhanh theo lưu lượng yêu cầu.
- Wasm không chỉ chạy trong trình duyệt mà còn có thể chạy trên máy chủ, cung cấp một mô hình cô lập nhẹ hơn cho các ứng dụng phía máy chủ.
- Sự phát triển của Wasm có thể giúp các ngôn ngữ scripting sở hữu runtime Wasm, từ đó cải thiện đáng kể tốc độ thực thi của ứng dụng.
- Thông qua edge computing, Wasm có thể thực hiện tính toán gần người dùng hơn, qua đó nâng cao hiệu năng.
1 bình luận
Ý kiến trên Hacker News
Amazon đã khởi đầu kỷ nguyên điện toán serverless với Lambda. Google App Engine đã được ra mắt sớm hơn Lambda 6 năm.
Khó hiểu được sự khác biệt giữa WASM và các công nghệ trước đây như Java Applets, ActiveX, Silverlight, Macromedia Flash. Tưởng rằng chúng ta đã rút ra bài học về việc chạy mã biên dịch của bên thứ ba không đáng tin cậy trong trình duyệt web.
Biên dịch JIT là bất khả thi vì việc tạo mã WASM động không được cho phép do lý do bảo mật. Đây là tính năng thiết yếu để thực hiện gọn gàng những việc như hot reload mã.
Cho rằng các lập luận về bảo mật là không đáng tin. Có thể hot reload JS hoặc tạo mã trong runtime, và cũng có thể reload động runtime WASM để giữ lại bộ nhớ, nhưng trải nghiệm người dùng sẽ bất tiện.
Không tìm ra lý do gì khiến điều đó bất khả thi về mặt kỹ thuật. Nếu là biện pháp bảo mật thì có lẽ cũng dễ dàng bị lách qua.
Bytecode WASM về mặt khái niệm tương tự với những thứ được thiết kế cho biên dịch JIT như .NET IL, Java bytecode.
Cho rằng dự án WASM thiếu định hướng rõ ràng và ý chí thành công. Các tính năng cơ bản vẫn còn thiếu.
WASM thay thế VM của một ngôn ngữ cụ thể bằng một VM đa dụng. Điều này cho phép chạy gần như mọi thứ thông qua trình biên dịch hoặc trình thông dịch.
WASM được định vị như một thứ thay thế JavaScript, thay thế Docker, thay thế Java, thay thế CGI, v.v. Tức là nó là tất cả mọi thứ.
Cho rằng WASM nên có thể được host và triển khai dễ dàng như ứng dụng PHP. Có lẽ hiện vẫn chưa như vậy.
Gợi nhớ đến một quy luật cũ của phần mềm: một ứng dụng đủ lớn và đủ lâu đời cuối cùng sẽ tái hiện lại toàn bộ stack phần mềm đang chạy nó.
Lời hứa lớn của WASM phía máy chủ là cung cấp một nền tảng vĩnh cửu không cần cập nhật định kỳ.
Cho rằng local-first là tương lai. Ứng dụng chủ yếu chạy trong trình duyệt của người dùng và hầu như không cần trợ giúp từ máy chủ.
WASM có thể thành công trong trình duyệt của người dùng. Microsoft đang dùng nó cho C#/Blazor.
Có cảm giác như đang tái phát minh JVM và toàn bộ hệ sinh thái của nó.
Cho rằng WASM sẽ tiến tới thay thế mã thực thi hàm lambda trên đám mây.
WASM theo truyền thống được xem là chạy trên nền tảng chủ, nhưng không nhất thiết phải như vậy.
Nhờ đặc tính sandbox của WASM, nó có thể chạy bên ngoài hệ điều hành hoặc trong ring0.