ソフトウェアのバージョンアップ戦略についてのメモ
なんとなく自分の中で暗黙知になっていることをまとめる。
職場での経験や、外部で見聞した情報がベースになってると思います。
今のご時世においては、一般ユーザとしてフリーソフトを使うようなケースでも、ある程度当てはまりそう。
- 前提
- OSS なり、自前で開発・保守していない、外部のソフトウェアを利用する場合のこと
- 初回システム構築時でなく、運用フェーズの話
- 原則
- 必要なバージョンアップは実施する
- 不要なバージョンアップは見送る
- 旧バージョンと互換性のない変更や、仕様変更によって問題が生じることがあり得る
- ふつう、バージョン差異が大きいほどこのリスクが高まると言っていいだろう
- 保守が停止したソフトウェアは捨てるか、自前で保守していくか選択しなければならない
- バグ・セキュリティが修正されないため
- 脆弱性が問題になるリスクが低いケースもありそう
- 例えば内部ネットワーク内でしか利用しないソフトウェア
- ずっと昔から使われてる社内ツールとかありそうな話
- 例えば内部ネットワーク内でしか利用しないソフトウェア
- 脆弱性が問題になるリスクが低いケースもありそう
- バグ・セキュリティが修正されないため
- 最も保守的な戦略
- 必要になったタイミングでバージョンアップ:
- クリティカルな脆弱性が発覚して、上位バージョンでそれが修正された
- バグを踏んでしまって、上位バージョンで(ry
- 該当ソフトウェアが依存しているソフトウェアのバージョンアップの際に、依存関係で仕方なく
- etc.
- 必要になったタイミングでバージョンアップ:
- 中間的な戦略
- 新しいバージョンの新機能や性能向上、バグ修正のメリットを享受したい。例:
- 上位バージョンでリリースされた機能 X を使いたいので
- 使っているバージョンに対するマイナーバージョンアップがリリースされて、
- 性能が上がった
- まだ踏んでない(OR 軽微な)バグ Y が修正されてる
- あるいは、stable リリースが出たら即バージョンアップする
- バージョンアップが頻繁な製品に対して、最新版との乖離を常に少なくしておくことで、バージョンアップが必要になったときの対応リスクを減らす、という戦略もあり得る
- 新しいバージョンの新機能や性能向上、バグ修正のメリットを享受したい。例:
- 最も先進的な戦略
- アルファ版から積極的に試す
- それが必要でない限りあまり合理的とは言えなさそう
- アルファ版から積極的に試す
考察
なんとなく、保守的 <=> 先進的の区分がこの前の記事(イノベーター理論と技術選択の戦略 - weblog of key_amb)で書いた「ラガード」や「アーリーアダプター」と対比されるが、たぶんそれは「必ずしも必要でないバージョンアップをどこまでやるか」の範囲にとどまる。