Suy nghĩ của Ryan Dahl về JavaScript Containers
(tinyclouds.org)- Docker đã phổ biến hóa container Linux: ảo hóa ở cấp độ hệ điều hành giúp việc triển khai phần mềm trở nên dễ dàng hơn
- Cloudflare Workers và Deno Deploy là những hiện thực hóa của khái niệm JS Container (trong các môi trường khác nhau)
- JS container sẽ phát triển như thế nào trong vài năm tới?
Universal Scripting Language
- Ngày càng nhiều thứ được tích hợp dựa trên web: The web is eating the world
- Web là phương tiện cơ bản cho thông tin của nhân loại, và JS được tích hợp sâu vào hạ tầng web nên khác với các ngôn ngữ khác
- Ngôn ngữ kịch bản giải quyết được nhiều vấn đề phía máy chủ, đồng thời cho phép viết business logic nhanh hơn và rẻ hơn
- Các ngôn ngữ kịch bản đều hữu ích và khá giống nhau ở nhiều điểm, nhưng JavaScript đang được sử dụng rộng rãi nhất và sẽ còn tiếp tục được dùng trong tương lai
- Nói cách khác, có thể xem JavaScript là ngôn ngữ kịch bản phổ quát
Shell : Executables :: JavaScript : WebAssembly
-
Một JavaScript Sandbox đang xuất hiện như một container cấp cao mới cho máy chủ
-
Đây không phải thứ được tạo ra để giải quyết đúng những vấn đề mà container Linux nhắm tới
-
Nó xuất hiện như kết quả của sự đơn giản hóa
→ Giảm thiểu boilerplate trong business logic của dịch vụ web
→ Chia sẻ cùng các khái niệm với trình duyệt, từ đó giảm tối đa số khái niệm mà lập trình viên phải biết -
Mọi kỹ sư web đều đã biết API trình duyệt của JavaScript
→ Vì lớp trừu tượng JS container được xây dựng trên cùng nền tảng API trình duyệt, lượng kiến thức cần học sẽ ít hơn
→ Tính phổ quát của JS giúp giảm độ phức tạp -
Shell là một ngôn ngữ kịch bản thông dịch để chạy các chương trình Unix
→ Có điều kiện, vòng lặp và biến, nhưng bị hạn chế nên khó dùng để lập trình. Chức năng thực sự do các file thực thi đảm nhiệm -
Trong lớp trừu tượng máy chủ mới này, JS sẽ giữ vai trò của Shell
→ Phù hợp cho scripting hơn Bash/Zsh, nhưng giống như Shell gọi các file thực thi, JS Sandbox sẽ gọi WASM
→ Nếu cần các tác vụ phức tạp như thay đổi kích thước ảnh, dùng WASM sẽ tốt hơn là viết bằng JS
→ Cũng như trong bash người ta không tự xử lý resize ảnh mà gọi Imagemagick
The North Star
- Tương lai của scripting là JavaScript trên trình duyệt
- Sai lầm căn bản nhất của Node.js là đã phát minh ra quá nhiều thứ ngoài trình duyệt trong khi các API mới đang dần được tiêu chuẩn hóa
→ Năm 2010 chúng ta thậm chí còn chưa có ES modules, nhưng sau khi được tiêu chuẩn hóa thì Node phải mang chúng vào
→ Promise, Async/Await, Fetch, Streams và nhiều thứ khác cũng như vậy
→ Những thứ không chuẩn như CommonJSrequire,package.json,node_modules,npm, đối tượng toàn cụcprocesscuối cùng либо sẽ được tiêu chuẩn hóa để thêm vào trình duyệt, hoặc được thay thế bằng những thứ khác dựa trên web - Container cấp cao vẫn chưa được tiêu chuẩn hóa, và vẫn chưa rõ mọi thứ sẽ diễn tiến ra sao
- Hiện tại Cloudflare Workers và Deno Deploy dùng FetchEvent API, nhưng cũng có thể sẽ tìm ra một giao diện tốt hơn
Kết luận
- JavaScript là một ngôn ngữ kịch bản đa dụng
- Nhờ tính phổ quát của JavaScript, những lớp trừu tượng mới kiểu container đang xuất hiện để đơn giản hóa máy chủ
- Điều đó không có nghĩa là container Linux sẽ biến mất. Cấp độ trừu tượng đó vẫn sẽ tiếp tục hữu ích
→ Nhưng với nhiều "business logic" mà con người viết, đây lại là một lớp trừu tượng hơi thấp
→ Khi xây dựng website, những thứ như cấu hìnhsystemdchỉ là boilerplate - Có lẽ nhiều "dịch vụ web" sẽ được đơn giản hóa nếu được nhìn từ góc độ JavaScript container thay vì container Linux
- Chúng tôi đang khám phá ý tưởng này trong Deno
→ Đang nỗ lực đơn giản hóa căn bản lớp trừu tượng máy chủ
2 bình luận
Đã có bài dịch rồi đó
https://medium.com/@yujso66/…
Tóm tắt theo cách hiểu của tôi thì có lẽ như sau:
Có lẽ có thể tóm lại như vậy.
Một số liên kết khác để giúp dễ hiểu hơn