最近、JS/TSランタイムのBunが気になってる。 自分はWebフロントエンドにあんまり興味はないが、BunとTypeScriptには次世代のインフラ関係のスクリプト実行環境としての可能性を感じている。
TypeScriptは今や世界で最も使用される言語の一つだし、Webフロントエンドに限らず、サーバーサイドでも活用例が増えてきた。 また、Bunは十分高速でall-in-oneだのでnode周辺のエコシステムの混沌(失礼)からも一定距離を保てる、という点でメリットがありそう。
簡単なベンチマークは thara-playground/script_benchmark に置いた。
特にCPU boundな処理はbunが圧倒しているが、ファイルI/Oも悪くない。
Ansible Playbookの実行が重くて辟易することがあるんだけど、このパフォーマンスの良さが解決してくれるといいな。
もちろん、SSHしてコマンド叩く、っていうデザイン自体がボトルネックになっているのもあると思うけれど、あらかじめスクリプトとかを置いておく、みたいなことしておけばSSHは最小限で済むし、まぁ設計でカバーできるかな、という感じ。
PythonやRubyよりも、bunの方がシングルバイナリにできるので、そこら辺の設計はやりやすいかな、とも思う。
bunでリモートホスト上で実行するパッケージをシングルバイナリにしておいて、それをscpで転送、SSH経由で実行、って感じ。
シングルバイナリがどれぐらいの大きさかは気になるけど、大きいのであれば、スクリプト自体をプラガブルにしておいて、リモートホスト上にあらかじめランナーのバイナリ置いておく、みたいなことしておけば、スクリプトをホストで走らせるたびに巨大なバイナリを送信しなくて済むかな、と。
こんな感じで、ホスト上でスクリプトを実行する、という課題に対して複数の選択肢があるのはいいね。
Ansible, itamaeなどのような構成管理ツールや、fabricやCapistranoのようなデプロイツール、serverspecやtestinfraみたいな構成検証ツールなど、今までPythonやRubyなどが使用されていたインフラ関連のツールがbun + JS/TSで再発明される可能性もあるかもしれない...?