1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

10年放置した expressアプリの修復 前編

Posted at

昔書いた小さなアプリの件

  • excelが得意だが、壊れるとわかって信用してないエライ人に「DBにデータを入れてほしい」と頼まれる
  • Accessでいいか? → 現場PCが何かと壊れる劣悪環境なのでサーバに入れよう
  • nodejs とか遊んでみたい→そうなんね?やってみよーか?

expressjs+knexjs->postgresql

  • knexjs は 良かったんだが、0.x からバージョンが上がったらなんやら仕様が変わって動かない。
  • PHPで書いてたクセで非同期苦手。多重技術債務者として抱えきれない→ご破産(rewrite)。
  • pg-promise で書き直す。どうにか動いていた。
  • エライひと退職→Excelでいいじゃんね→オレのアプリは業務から外れ放置され10年経過。

そもそも ES5以前 (2015年に書かれた)ものを、2025年に動かせるのか

  • 異世界転生オジサンなみに古く使い物にならない
  • promise周りがダメ。バージョンが飛びすぎて全部書き直しか?
  • ほんとに簡単なものなので残念すぎる → 直すのも勉強?経験?

取り敢えず取り組んでみた

  • pg-promise だけでも動かないの?というテスト
  • 素のまま、ubuntu24.04 で展開。元はFreeBSD9.3 とかで、実は動いていたサーバそのものが存在しない。
  • FreeBSD10.xが最古の環境で、 13.x/14.2 が普通の世界では node version 5 とか化石すら発掘されず、再現環境すらなかった。
  • この時点でゴミ箱行きだが、こういう負の遺産を抱えた場合の返済方法ってのがあるのか知りたい
  • OSコンポネント系の負の遺産、PHP系ではクソな案件であろうと債権整理(言い方!言い方!)

謎現象発生

  • pg-promise 依存するページが刺さる現象。
  • 最初はDB読めてない?DBのmigration/seed したし、psqlで手動で取れるからおかしい。
  • pg-promise のサンプルコードを実行。query.js とか。 最初は動いて sql通っていた。
  • pg-promise の学習サンプル: ES6/Promise を ES7対応にする bluebird がのモジュールが必要なサンプルコードだった。
  • いろいろ動かない理由を探って、古いモジュールたちのバージョンをゴロゴロ押し上げていたら、pg-promise そのものが止まった??
  • デバッグしやすいようサーバを別なとこにおいて tcpdumpしたらアクセスしてない→Ubuntu作業環境が悪いのか
  • 環境がなんやら壊れたと感じて、FreeBSDサーバに node/npm を入れて pg-promiseテスト:動く 👀
  • node/npm の moduleとか、pg系がなにか引っかかるものがあるの? → イマココ

時間切れにてココまで。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?