Tech
パッチバージョンの依存関係更新でも本番アプリが壊れるのはなぜか?
79
機会
セマンティックバージョニングは慣習であり、契約ではない。ソフトウェアエコシステムの体系的な分析により、パッチリリースやマイナーリリースが、いかなる静的解析ツールも検出できない動作上の破壊的変更を日常的にもたらすことが確認されている。観測されたnpmの破壊的変更の68%は、自動検出が最も困難なこの動作カテゴリに該当する。被害のほとんどは推移的依存関係を通じて生じるが、実環境でテストカバレッジが存在するのはそのうち21%にすぎない。依存関係スキャナーはセキュリティCVEにフラグを立てるが、2階層深いセマンティックな非互換性を検出する手段を持たない。今日1つの直接依存関係を更新した開発者には、本番環境のどの動作が変わるかを教えるツールが存在しない。
重要な理由
CIに到達する前に推移的依存関係における動作上の破壊を検出することは、バージョン固定と安全なアップグレードの間に欠けている層である。
機会をどう評価するか
Opportunity Scoreは測定値ではなく、私自身の見解です。どれほど痛みを伴うか、どれほど頻繁に影響を与えるか、そして今日時点で解決策がいかに少ないか。スコアが高いほど、構築する価値が高いと私は考えています。
深刻度7/10
それが現れたときにどれほどの痛みをもたらすか。
頻度9/10
実際にどれほど頻繁に人々がそれに直面するか。
ホワイトスペース7/10
今日時点で、それに対する優れたツールがいかに少ないか。