こんにちは、プログラマーの堀江です。
開発をしていて言語やOS、
フレームワーク等のバージョンが気になったりします。
個人の環境では気軽にアップデートしてニヤニヤするのが趣味ですが、
実務においては、簡単にアップデートできませんよね。
最近は、多くのソフトウェアがオープンソースで開発されています。
例えば、
- nginx(Webサーバー)https://github.com/nginx/nginx
- cakephp(PHPフレームワーク)https://github.com/cakephp/cakephp
- ruby(プログラミング言語)https://github.com/ruby/ruby
- openSSL(暗号化通信ライブラリ) https://github.com/openssl/openssl
など、ですね。
そして、多くのWebサービスやアプリが
こういったオープンソースを利用して稼働していると思います。
オープンソースは、非常に高速な進化を続けることができる一方、
ソースが公開されていることで、脆弱性を悪意のあるユーザーが
発見した場合に悪用されやすいリスクがあります。
脆弱性は、随時発見・修正されバージョンアップしていきますが、
一度本番稼働してしまうと、最新バージョンを追いかけることが大変となり、
気づくと何年も前のバージョンのまま…。
ipaのセキュリティ勧告で「緊急」とかに出てきて焦る、
サポート終了のお知らせがきて焦る、
みたいな経験があることは少なくないのではないでしょうか?
そんな時、長い時間が経過してからの大きなバージョンアップは、
ほとんどの場合容易ではありません。
変更点が大きくなりすぎてしまい修正できないことや、
バージョンアップの手順が大変になってしまい、
長時間のサービス停止が必要になってしまうことがあります。
ですが、こまめにバージョンをメンテナンスしておくことで、
それを防ぐことができます。
もし仮に、現在php5.0.0(2014/7リリース)を利用している場合に、
php5.6.29(2016/11リリース)にアップデートしようとしたら、
修正された不具合や脆弱性、変更点の総数は5,000件を超えてしまいます。
参考:PHP 5 ChangeLog(http://php.net/ChangeLog-5.php)
これでは調査だけで、何日かかるかわからなくってしまいますし、
2年の間に作ったプログラムも大きくなって更に困難になっていると思います。
しかし、php5.0.0からphp5.0.1では20件程度の変更ですので、
調査も実施も短期間で可能になると思います。
ついつい、現状動いているために、ないがしろにしてしまいがちな「バージョン」ですが
全てのソフトウェアにはバージョンがあり、
そして毎日のように何かのバージョンが上がっています。
バージョンを上げれば、セキュリティの向上だけでなく、
速度等のパフォーマンスの向上、機能追加による開発効率の向上が見込めます。
パフォーマンスが上がれば、運用費も抑えられるかもしれません。
開発効率が上がれば、もっと良い機能を開発できるかもしれません。
日々のちょっとしたメンテナンスで、安全で安定し、
より価値のあるサービスの提供ができるので、
もし、バージョンアップが溜まっているようでしたら、
是非検討してもらえると嬉しく思います。