🚀

メンテとはなんぞや

2021/07/25に公開

はじめに

コンピュータシステムの文脈で「メンテ」という言葉がよく出てきます。ここ数年では漫画「コブラ」の以下コラネタが有名です。

「あと数分でメンテが明ける」
「メンテが明けるとどうなる」
「知らんのか

メンテが始まる」

コンピュータシステムの運用やお客様対応をしたことがないかたにとっては、このメンテというやつは雰囲気ではなんとなくわかるけれども今いちピンと来ないものなのではないでしょうか。本記事はこの言葉について説明します。

メンテナンスとは何か

メンテとはメンテナンスのことです。辞書的な意味は、何らかのものを正常な状態に保つこと、およびそのための取り組みです。これはコンピュータシステムに限らず機会や建物などについても同じです。

ここからはコンピュータシステムについての話です。コンピュータシステムにおける「正常」とは、あらかじめ定められた性能要件や機能要件を満たしていることです。運用技術者たちは日夜システムが要件を満たし続けるために奮闘しています。

システムが運用を開始した時に要件を満たしていたとして、その後何も問題が起こらないのであればシステムにメンテ不要です。わたしはこんなシステムがほしくてしょうがないですが、現実は非情なのでそんなことはありません。システムの正常動作を妨げる様々なリスクがあり、かつ、時間の経過と伴いリスクは高くなっていきます。

具体的なリスクと対処手段

わかりやすいリスクとしてソフトウェアのバグがあります。ここでは特定条件で発動してシステムをクラッシュさせるが、現在は遭遇していないというバグがあると仮定します。このとき運用技術者はクラッシュするまで座して待つわけではなく、当該バグを修正するアップデートがあれば必要に応じてメンテナンスの一環として適用します。

ソフトウェアだけではなくハードウェアにまつわるリスクもあります。当然ですが、ハードウェアは故障することがあり、そうなった場合は交換ないし修理する必要があります[1]。ハードウェアが一台故障したら機能しなくなるシステムであればメンテどうこうではなく障害からの復旧として速やかに交換しなければならないのですが、そうではなければメンテナンスの一環として必要に応じて交換します。

実際に故障したときだけではなくハードウェアの監視系が「そろそろ故障するかも」と報告したハードウェアを予防的に交換することもあるでしょう。あるいはまったく壊れる気配はなくともサポート期限が切れそうな機材は退役させる必要があります。

メンテナンス要否と時期の判断

前節においてソフトウェアのアップデートやハードウェアの交換は必要に応じてやる、と書いてきましたが、これはメンテナンスにおいて非情に重要なポイントです。メンテナンスというのはただやればいいというものではないのです。なぜかというとメンテはノーリスクで一瞬で済むようなものではないからです。

まず、システムのメンテにおいては、運用が一時的に止まる可能性があります。また、メンテによって別の不具合が発生しないようにするためにテストをしたり、テストをしてなお問題が発生してしまった場合に旧バージョンに切り戻す訓練をしたりというコストがかかります。これらを怠るとメンテ時に障害が発生した場合に地獄を見ます。

上記のようなことを考慮して、いつどのようなメンテをすべきか判断するのはメンテ担当者の腕の見せ所の一つです。とくに一年に数時間しかメンテ用の時間が与えられないような社会基盤システム[2]などでは、数少ないチャンスを活かして短期間になるべく低リスクで多くのメンテを施す必要があります。そのためには綿密な計画を練った上で長期間にわたり準備をする必要があります。まさに「メンテが明けたらメンテ(の準備)が始まる」のです。

具体的なメンテのタイミングを表す言葉に「定期メンテ」「緊急メンテ」などがあります。オンラインゲームを含むWebサービスを使っているかたは、それを運営している組織からこれらを実施する旨の連絡を受けたことが何度となくあるのではないでしょうか。

定期メンテナンスとは月に一回、あるいは年に一回といった、あらかじめ定められた間隔で実施するメンテナンスのことです。軽微なバグの修正などについては定期メンテでまとめてやってしまうということが多いです。その一方で、重要なアップデート(たとえば重大なセキュリティ障害を修正するもの)をすぐに適用する必要があると判断したときなどは定期メンテを待たずにリスクが判明してからすぐに緊急メンテとして実施します。

おわりに

簡単に止められないコンピュータシステムの運用にかかわったことがない方々に向けてメンテとはなにかについて簡単に書きました。読者のみなさまの一部でも「なるほどそういうことだったのね」となんとなく納得していただければ嬉しいです。また、これを見てうっかり運用技術者になってみたいとかメンテにかかわってみたいとかいう人が現れることを願います。プログラマに比べてなりたいという人が少ないんですよね…

脚注
  1. ファームウェアアップデートにより解決する問題もありますが、ややこしいので割愛 ↩︎

  2. 与えられる時間はもっと短いこともあります ↩︎

Discussion