weblog of key_amb

主にIT関連の技術メモ

ソフトウェアのバージョンアップ戦略についてのメモ

なんとなく自分の中で暗黙知になっていることをまとめる。

職場での経験や、外部で見聞した情報がベースになってると思います。

今のご時世においては、一般ユーザとしてフリーソフトを使うようなケースでも、ある程度当てはまりそう。

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

考察

なんとなく、保守的 <=> 先進的の区分がこの前の記事(イノベーター理論と技術選択の戦略 - weblog of key_amb)で書いた「ラガード」や「アーリーアダプター」と対比されるが、たぶんそれは「必ずしも必要でないバージョンアップをどこまでやるか」の範囲にとどまる。

Pros/Cons

  • 「最も保守的な戦略」の場合、脆弱性対応等の工数が計画しづらいというデメリットはありそう
    • ある程度リリースサイクルが決まっている製品を使っていて、「stable リリースが出たら追随する」戦略を取っていれば、この工数はけっこう読みやすそう