
はじめに
みなさんこんにちは。エーピーコミュニケーションズ ACS事業部の亀崎です。 今回はちょっと技術的で細かいお話を。
2024年5月に「Node20以降でBackstageを実行する場合の注意事項」をご紹介しました。
こちらの制限が2026年8月の Backstage v1.54から不要 になりました。 「注意事項」としてブログ記事にしていたこともありますので、その記事を上書きするべく 変更の内容についてご紹介したいと思います。
「NODE_OPTIONS=--no-node-snapshot」指定の経緯
なぜ 「NODE_OPTIONS=--no-node-snapshot」が必要だったのか
BackstageのScaffolder実行には テンプレートレンダリングエンジン nunjucks を
サンドボックス環境で安全に実行するため、isolated-vm を利用していました。
この isolated-vm のネイティブメモリ初期化処理 がNode20以降のV8環境のスナップショット機能と
競合してしまっていました。このために NODE_OPTIONS=--no-node-snapshot を指定してNode側の機能を
無効にする必要がありました。
Backstageでは実行時安全性向上のために v1.15.0 で isolated-vmを利用するようになりました。
The Scaffolder backend uses a sandboxing environment to run its nunjucks templating in, for security reasons. This used to leverage the vm2 library, but in this release it has been replaced by isolated-vm. This significantly improves the confidence level in the sandbox implementation since it builds upon v8 isolates directly.
なぜ「NODE_OPTIONS=--no-node-snapshot」が不要になったのか
新しいBackstageでは isolated-vm に依存する nunjucks の利用を見直し、
新しい nunjitu というライブラリに切り替えを行いました。
nunjitsu では isolated-vm を必要としなくなりましたので、NODE_OPTIONS=--no-node-snapshot の指定も不要となります。
いつから不要になったか?
nunjitsu に変更されたバージョンが Backstage 1.54.0 になります。
なお、nunjitu の不具合修正などもあったため、Backstage も最新のバージョンにアップデート
していただくことをお勧めします。
最後に
今回は「以前ご紹介した記事の内容を上書き」ということで isolated-vm の依存が不要になったことをご紹介させていただきました。
ツールやサービスを長く利用しているとこうした変更もたびたび起こりますので、
継続して変更内容を確認していくことが重要です。
ただ、そうしたことをやるのも面倒なものです。 弊社ではBackstageのマネージドサービスである「PlaTT」 を提供しています。 マネージドサービスですので、ツールの更新などの面倒さから解放されますので ぜひ利用をご検討ください。