◆ Node.js だと DB に出さなくても他の処理とデータを共有できる
◆ 永続させないといけない最低限しか DB に保存しない
  ◆ DB アクセスも減ってパフォーマンス向上
◆ 今変数で持ってるアプリケーション状態がわからなくて困ることが割とある
◆ アプリケーション状態をダンプするルートを用意しても開発中以外で使えるの良くない

PHP などと違って Node.js は 1 つのプロセスで全部のリクエストを処理できて リクエストの処理は関数が呼び出される程度のものです
他にも定期的に実行するタイマーなども全部同じプロセス内でやってしまえます

それは便利なのですがいくつか問題点もあります
以前には データを毎回 DB からロードせず変数にキャッシュしておいた時のこととか書きました

今回思ったのは そういうキャッシュ含めたアプリケーションの状態です
PHP 等の場合はリクエストごとに 1 つの独立したプロセスが起動され リクエストの処理が終わったらプロセスも終了です
なのであらゆるアプリケーションの状態は DB (とかファイルとか) に集約されることになります
これは今の状態を見たいときに助かります
サーバのファイルだったり DB に接続してクエリを送れば 現状がわかります
ちょっとした一時的なフラグなんかもすべて他のプロセスと共有するためには DB に保存されるわけですからそれらもわかります

しかし Node.js で作ってると永続化しないといけないもの以外は全部変数上で完結するのでわざわざ DB に保存したりしません
余計な DB アクセスがなくて早いのは魅力ではあるのですが 外部から現状を知るすべがないのは困るときには困ります

最近困ったときの例だと 外部のサーバと通信して そこから取得する状態に応じて挙動が変わるものです
この状態は毎回外部から取得するので DB に保存する必要はありません
処理中で参照する必要があれば 変数を参照するだけです
これだと今 Node.js 中の状態はどうなっているのかがわかりません

開発中とか自分しか使わないのものならアプリケーション状態を表す変数を全部ダンプするデバッグ用ルートとか作っておいて状態を見れるようにしています
しかし ちゃんとした公開するようなものになるとこういうルートを残しておくのはどうかと思います
(superuser ログインしてれば見れるとはあるのかな?)

こう考えると Node.js でももっと多くの状態を DB に保存するようにするメリットはある気がします
ただ せっかくそれをしなくてもいい言語なのにそれをするなら Node.js のメリットが減るのですよね