壊れていないなら直すな
「壊れていないなら直すな」という言葉は誰でも聞いたことがあるでしょう。人々はこれを改善、近代化、またはリファクタリングを阻止する手段としてあらゆる場所で使います。多くの人が言いますが、こういった種類の言葉と同様に、表面上は合理的に見えます。しかし実際の応用においては、少なくとも通常の使われ方では、そうではありません。なぜならそれが十分に理解されていないからです。
これは「一つのかごに全ての卵を入れるな」という概念と非常に似ており、多くの場合卵とかごの例えが当てはまらない状況か、あるいは現実から逆転した状況に適用されます。しかし、それが暗記されたフレーズであるため、人々は機能させるための比喩が成り立つ必要があることを忘れてしまいます。それは何も根拠のない不合理な恐怖を引き起こすことで、ひどい決定につながる可能性があります。
同様に、壊れていないものを直さないという考えは、完全に良好で機能しているものをただいじりたいがために分解してはいけないという理論から来ています。これは理にかなっています。しかし何らかの理由で、このロジックはそれが意味をなすもの(私にはその良い例さえ思い浮かびません)にはほとんど適用されず、代わりに、適切に機能するために定期的なメンテナンスと管理が必要な複雑なデバイスに適用されます。
もちろん、靴が壊れていないなら、分解して再び接着しようとするべきではありません。しかしビジネスインフラシステムは靴とは全く異なります。それらは常に変化する環境の中で機能する、膨大なレベルの複雑さを持つ生きたシステムです。絶え間ないメンテナンス、監視、更新などが必要です。まるで車のようですが、それよりはるかに重大です。
エンジンが焼き付くまでオイル交換が不要とは誰も言いません。もちろんそうです。まだ壊れていなくても、壊れないようにするためにメンテナンスを行うのです。車では、壊れるまで待てば本当に壊れてしまうことがわかっています。同様に、タイヤがホイールから外れるまで空気を入れないとは言いません。まったく意味がありません。
壊れるまでシステムをメンテナンスしないよう言うことは、壊れるよう指示するのと同じです。適切にメンテナンスされた車は数十万マイル、おそらく数百万マイルもつかもしれません。オイルなしでは町を渡るだけで精一杯です。持っているエンジンをケアせず数日ごとに新しいエンジンを買うよりも、きちんとメンテナンスすれば生涯エンジンを壊すことなく過ごせるかもしれません。
ビジネスインフラについても同じことが言えます。コードは老化し、システムは劣化し、新しいテクノロジーが登場し、新たなニーズが生まれ、ネットワークは外部世界と相互作用し、新機能が必要となり、脆弱性や脆弱な部分が特定・修正され、アップデートがリリースされ、新しい攻撃手法が開発されます。新機能が決して作られないとしても、安全で信頼性の高い運用を確保するために、システムは勤勉に管理・メンテナンスされる必要があります。車のようなものですが、千倍複雑です。
ITシステムにおいて、「壊れている」とはハッキング、データ盗難、データ損失、ダウンタイム、非効率性に不必要にさらされていることを意味します。現実の世界では、メンテナンスが必要になった瞬間にシステムは壊れていると考えるべきです。システムが単純に適切にメンテナンスされていれば、今日どれほどのランサムウェアが脅威でなくなるでしょうか?IT担当者として、メンテナンスされていないシステムはすでに壊れており、災害がまだ起きていないだけだと声を上げて説明する必要があります。
ITで「壊れていないなら直すな」という信条に従うなら、データが盗まれるまで脆弱性にパッチを当てず、データが復元不可能になってから動作するバックアップがあるかを確認することになります。もちろん、それは意味がありません。しかし、システムが壊れるまで直さないよう言う人々が示唆しているのはまさにこれです。つまり壊れるに任せろ!ということです。反論してください。そのような助言を受け入れないでください。優れたITメンテナンスの目的は、可能な限りシステムが壊れないようにすることだと説明してください。災害を招くのではなく、回避することです。