News
Meetup
YouTube
Blog
書き起こし
2023/10/06 に公開
278 views
このエピソードについて
@potato4d が @rChaser53 に、社内 Private NPM をスケールアウトさせるための開発について話を聞いてみました
ゲスト
yoshizawa takayuki(@rchaser53)
UIT Front-End Dev.7
Front-End に関する社内インフラの整備
概要
LINE では Private NPM を運用している
https://verdaccio.org/
ep.15 LINE 社内用 NPM パッケージの管理戦略 | UIT INSIDE
これまでスケールアップだけ行ってきたが、この機会にスケールアウトした
今回パフォーマンス改善が必要となった経緯
パフォーマンスの改善と安定性の両方の問題があった
registryのため安定性が必要だがVerdaccioは1台構成しかできない
Verdaccio が FS と Inmemory-cache に依存しているため
今後Y!Jとの統合のため、ユーザ数の増加に対応しておきたい
社内には Nexus と呼ばれる別の Registry もある
これは NPM に限らず Java など他のエコシステムも利用可能
その一方で機能はあまり豊富ではないので、現状はあくまでも npmjs にあるパッケージの向き先として活用
このタイミングでできれば Verdaccio にすべてのリクエストを集約させたい
User -> Verdaccio -> Nexus -> NPMJS というフローから、 User -> Verdaccio -> NPMJS へ
課題解消に向けて取り組んだこと
ファイルベースでパッケージとメタデータを管理しているという問題について
Shared File Systemを使って複数台のVMでファイルを共有すればOK
Verdaccioの管理するプロセス上のメモリでメタデータをcacheとして持っている問題について
Verdaccioは主に2種類のメタデータをjsonファイルとして所持している
private packageの一覧
各pacakgeのversionごとの情報
Verdaccioはstorageの処理の一部をcustom pluginを開発することで変更できる
メタデータの管理方法もcustom pluginによって変更することができる
MySQLでメタデータを管理するように変更
元々Verdaccioの前段に立てていたAPIサーバで管理していたメタデータを流用
Refs
BGM&SE
魔王魂/騒音のない世界/OtoLogic
1.0x
1.3x
1.5x