2023年3月5日日曜日

Node.jsのSingle Executable Application

 Node.js v19.7から、Node.jsファイルを単一の実行バイナリにできるようになったそうです。ElectronみたいにNode.js本体も同梱される感じなんでしょうか。

ただし現状では制約があり、OSはWindows/macOS/Linux、CPUはAMD64、そして単一のファイルのみとのこと。

単一のファイルのみということは、当面はnccとかのバンドラーで1ファイルにまとめてからバイナリ化という使い方を想定しているんでしょうかね。

使いどころ

これを使うとウェブアプリケーションを作るときにNode.jsのバージョンアップが気軽にできそうだな思いました。

今はaptとかでシステムにインストールされているNode.jsをアップデートして、新バージョンでなにか問題が発生したら元に戻す必要があります。aptだと戻すのが大変だからnodebrewとかを使ったほうがいいのかなとか、システム全体に影響する作業は極力やりたくないとかいろいろあるじゃないですか。

実行バイナリを作れれば、新しいバージョンのNode.jsを同梱してデプロイ、問題があればあらためて古いバージョンを同梱してデプロイということができそうです。同梱する際はローカルマシンのNode.jsバージョンを変更するだけでいいので、サーバーのシステムをいじらなくてもいいという点で精神衛生上もよさそうです。

ただし、Graceful ReloadするときにPM2みたいなNode.js用のプロセスマネージャーが使えないので、Circus等の汎用のプロセスマネージャーを使うとか、Dockerコンテナにバイナリ放り込んでK8sとかNomadとかのオーケストレーションツールを使うとかが必要かもですね。

まあDocker使うならバイナリ使わなくても気軽にバージョンアップできるんですが。

0 件のコメント:

コメントを投稿