Ryan DahlのJavaScriptコンテナに関する考え
(tinyclouds.org)- DockerはLinuxコンテナを大衆化した: OSレベルの仮想化によってソフトウェアのデプロイを容易にした
- Cloudflare Workers や Deno Deploy は、JavaScriptコンテナという概念を実装したもの(それぞれ異なる環境で)
- JavaScriptコンテナは今後数年間でどのように発展していくのか?
Universal Scripting Language
- ますます多くのものがWebを基盤に連携している: The web is eating the world
- Webは人類の情報の基本的な媒体であり、JSはWebインフラに深く組み込まれているため、他の言語とは異なる
- スクリプト言語は多くのサーバー側の問題を解決し、ビジネスロジックをより速く安く記述できる
- スクリプト言語は有用で、互いによく似ており、JavaScriptが最も広く使われていて今後も使われ続けるだろう
- つまりJavaScriptはユニバーサルなスクリプト言語だと考えられる
Shell : Executables :: JavaScript : WebAssembly
-
サーバー向けの新しい高水準コンテナとして、JavaScript Sandboxが登場
-
Linuxコンテナが対象としている問題を解決するためのものではない
-
単純化の結果として現れたもの
→ Webサービスのビジネスロジックにおけるボイラープレートを最小化
→ ブラウザと概念を共有し、プログラマが知るべき概念を最小限にする -
すべてのWebエンジニアはすでにJavaScriptのブラウザAPIを知っている
→ JSコンテナの抽象化は同じブラウザAPIを基盤に作られているため、学ぶべき内容が減る
→ JSの普遍性が複雑さを減らす -
ShellはUnixプログラムを実行するためのインタプリタ型スクリプト言語
→ 条件式、ループ、変数はあるが制限が多く、プログラミングには向かない。実際の機能は実行ファイルが担う -
この新しいサーバー抽象化レイヤでは、JSがShellの位置を占める
→ Bash/Zshよりスクリプティングに適しているが、Shellが実行ファイルを呼び出すように、JS SandboxはWASMを呼び出す
→ 画像リサイズのような複雑な作業が必要なら、JSで書くよりWASMを使うほうがよい
→ bashで画像リサイズをせずImagemagickを呼び出すのと同じように
The North Star
- スクリプトの未来はブラウザJavaScriptである
- Node.jsの最も根本的な誤りは、新しいAPIが標準化される中で、ブラウザから離れてあまりに多くのものを発明してしまったこと
→ 2010年当時、私たちにはESモジュールすらなかったが、標準化された後でNodeに取り込まなければならなかった
→ Promise、Async/Await、Fetch、Streamsなど、多くのものがそうだった
→ 非標準のCommonJS require、package.json、node_modules、npm、グローバルなprocessオブジェクトは、最終的には標準化されてブラウザに追加されるか、Webベースの別のものに置き換えられる - 高水準コンテナはまだ標準化されておらず、これらすべてがどう展開するのかはまだよく分からない
- 現在Cloudflare Workers と Deno DeployはFetchEvent APIを使っているが、より良いインターフェースが見つかるかもしれない
結論
- JavaScriptは汎用スクリプト言語である
- JavaScriptの普遍性によって、サーバーを単純化する新しいコンテナ的な抽象化が登場している
- Linuxコンテナが消えるという話ではない。そのレベルの抽象化は今後も有用だろう
→ 人々が書く多くの「ビジネスロジック」にとっては、やや低レベルな抽象化だということ
→ Webサイトを構築する際のsystemd設定のようなものはボイラープレートである - おそらく多くの「Webサービス」は、LinuxコンテナではなくJavaScriptコンテナという観点で考えると単純化できる
- 私たちはDenoでこのアイデアを探求している
→ サーバー抽象化を根本的に単純化しようと取り組んでいる
2件のコメント
翻訳文が出ましたね
https://medium.com/@yujso66/…
自分なりに要約すると
という整理になるのではないかと思います。
理解を助けるための別リンク