ミドルウェアは安易にバージョンアップしてはいけないの? | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

第11回(最終回) Web+DBサイト構築の見積もり額,適正価格とは? @ ITpro


上記のエントリの主旨であるWebサイト構築の適正価格という部分に関しては、別のエントリで書くとして、気になったのが、「ミドルウェアは安易にバージョンアップしない」と言う点。


ミドルウエアがバージョンアップしたからといって,システムのミドルウエアを常に最新のものにアップデートできるかといえば,実際には互換性が100%である保証がないため現実的には無理なのです


これはメジャーバージョンアップでの話でしょう。

マイナーバージョンアップであれば、確かに100%は保障されませんがそこまで大きく互換性が崩れるような事はあまりありません。

PHPの話題がその前にでていたので、PHPをベースとしたお話なのかもしれませんが、確かにPHPはマイナーバージョンアップでも内部ロジックが大きく変わるような事がしばしばありました。

ただ、これはPHP自体が迷走していた結果であって、全てのミドルウェアがこんなわけではありません。

PHP4からPHP5に安易に変えるのはよそう。というのは当たり前の話。

互換性はほぼ無いに等しいですからね。

マイナーバージョンアップで仕様がコロコロ変わるようなミドルウェアは、運用・保守に耐えられるとは言えませんから使う価値はないと思います。


では、ミドルウェアをバージョンアップしなかった場合のリスクって何があるんでしょうか。

ミドルウェアがバージョンアップされる理由は、大きく3つあります。


1つ目は、機能の強化

機能の強化度合いによって、マイナーかメジャーかバージョンアップの度合いが異なります。

ただし、現行のアプリケーションには必要の無い項目になりますので、機能強化だけであればミドルウェアをバージョンアップさせる必要性はありません。


2つ目は、バグフィックス

これは、そのミドルウェアにあるバグを修復してくれるので、該当の問題が自分の環境で発生しているのであれば、バージョンアップを検討に入れる必要があります。

該当のバグが発生する可能性が無い、または発生しても問題ないのであればバージョンアップの対象に入れなくても良いでしょう。


3つ目は、セキュリティフィックス

これは、そのミドルウェアに内在するセキュリティ上の問題を修復してくれます。

該当のセキュリティ上の問題が、自分の環境上で発生する可能性があるかどうかを見極める必要がありますが理想論で言えば、バージョンアップを検討した方が良いでしょう。

それが原因で問題が発生する可能性は低いだろう、と高を括る人がいますが、そうではありません。

現に私のすぐ近くの環境でも、ミドルウェアのセキュリティ上の問題から攻撃をくらい被害にあった報告は耳にした事があります。


難しいのは、ミドルウェアのバージョンアップは上記の3つの項目の中からどれか一つを目的として行われるわけではなく、複合して行われると言う点です。

機能強化もあり、バグフィックスもしながら、セキュリティフィックスの項目もある。

ミドルウェアの多くは、バージョンアップする際にchangelogをつけますから、その内容を見ながら何が目的でバージョンアップをされたのか、自分の環境上で問題となる(なっている)項目は無いのかをよく吟味しなくてはなりません。


バージョンアップをする際は、テスト用の環境上に展開してアプリケーションへの影響度合いをチェックする必要があります。

チェックに際しては、何をもってOKにするのかチェックリストを予め作っておきます。

先ほどのchangelogを見れば何処が変更されたのかがわかりますので、そこからあたりをつけてチェックリストを作る事も可能でしょう。


確かにミドルウェアのバージョンアップは面倒な作業で、安定して稼動している環境では行いたくないものです。

ですが、そうやって野放しにしておいた環境の方が内在するリスクを考えると、ずっと危険な思想です。

例え発生する可能性が1%を大きく下回るようなバグやセキュリティ上の問題があったとしても、それを3年間もほったらかしにしておくと、現実的に起こりえる確率になりえます。


ソフトウェアにバグやセキュリティ上の問題はつき物です。

安定していると言うのも、安定しているように見えるだけであって、問題はその中に隠れている可能性は高いわけです。


単にバージョンアップから逃げると言うのではなく、バージョンアップを含めたシステムの安定運用と言うものをシステムの運用サイクルの中に組み込み、取り組んでいく必要があると思います。