インフラエンジニアとして常時、何かのソフトウェアを扱っているわけですが。
困るのはソフトウェアのバージョンアップ間隔です。ソフトウェアベンダーも商売ですので、ソフトウェアリリースとともにサポート期間を設けます。最近だと短くて3年、長くて10年くらいです。ミドルウェアレベルだとあんまり長いものはなく、気づくとどんどんマイナーバージョンアップが走り、気づいたらメジャーバージョンごと切られると言った感覚です。
しかも、市場のトレンドがクルクル変わるので、それに合わせて製品ごと終わりにし、別の製品を出してくる。これを同じ会社がやるんです。リリース時はシステムを10年くらい使うと思って、保守計画を立て、もしソフトウェアのバージョンアップが行われたらメンテナンスしようとします。しかし、そもそも製品全体が変わってしまうとしたら、設計から考え直さないといけません。
つまり、終売となる古い製品をシステム終了までリスクを取って使い続けるか、それとも新しい製品に移行するが、それをシステム利用中にコストを使って対応するか。
正直言ってシステムからすれば、リリースした製品は10年、20年とずっとメンテナンスし続けてほしいぐらいです。別に新機能なんていらないし、脆弱性だけ対応してくれればありがたいのが本音です。
「システムの寿命>ソフトウェアの寿命」と言うこと。そしてソフトウェアが死んだとしてこれをどう扱うのか。動くからいいじゃないというのも一案ではあります。閉ざされた環境であり、安定して動いていれば、変更の必要は限定的だからです。
しかもシステムが使っているソフトウェアは1つではありません。OS、データベース、アプリケーションサーバー、仮想基盤などなど、いろんな組み合わせで成り立っていますので、1つがきしむと途端に複数に影響します。例えばOSが古くなればその上のミドルウェアは対応しなくなります。ミドルウェアだけ新しくしようとしても古いOSでは動かなくなる。そうやって相関関係を考えると、全部一緒に新しくするか、それとも全部凍らせてしまうか。しかし、最近の企業のセキュリティーポリシーを考えると、放置すると言うわけにもいきません。
オープンソースを使うとこのあたりのサポートの考え方が不透明で、システム側も保守は大変になります。ですから企業の有償製品・有償保守を使うべきなんですが、そうであっても、企業ですら方針を急に変えてくることがあります。
そして、複数のソフトウェアを使うイコール、複数の企業が絡んでいますので、その政治的な状況次第であるソフトウェアの取り扱いが変わったりすることだってあるのです。
システム、と一言で言ってもハードウェアとソフトウェアの混合体であり、そして今ではクラウドもあり、そしてユーザーのプログラムやデータもあり、これらを「うまく動くように、今もそしてこれからも」みたいなことを常に管理し続けるインフラエンジニア。そして、管理するシステムも1つや2つではない。最近はそれに接続する先もインターネットにありSaaSだったりもする。SaaSも絶えず変化する。そんな状況で、「ちゃんと管理してね」のハードルは日々上がっているという実感をしているのであります。
導入した時は、全部最新だった、んだけどなあ。