19 điểm bởi xguru 2022-05-10 | 2 bình luận | Chia sẻ qua WhatsApp
  • 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ư CommonJS require, package.json, node_modules, npm, đối tượng toàn cục process cuố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ình systemd chỉ 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

 
xguru 2022-05-20

Đã có bài dịch rồi đó

https://medium.com/@yujso66/…

 
xguru 2022-05-10

Tóm tắt theo cách hiểu của tôi thì có lẽ như sau:

  1. Dạo này đang xuất hiện nhiều công nghệ sandbox sử dụng WASM.
  2. JavaScript được dùng như một script để chạy WASM.
  3. Sandbox WASM có thể chứa mọi thứ, từ OS đến container và framework.
  4. Khi đó, có thể sẽ xuất hiện một tiêu chuẩn container cấp cao mới kiểu JS Container, nơi chỉ cần tập trung vào business logic.
    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