3秒でわかる
リリースした後もサービスを動かし続け、直し続ける工程。障害対応や監視、更新の適用まで含み、システムの寿命の大半をここが占めます。
もう少し詳しく
どういうものか
運用・保守は、システムを本番に出した後の仕事全般を指します。運用は日々動かし続けるための作業で、監視、バックアップ、ジョブの実行確認、問い合わせ対応などが含まれます。保守は動いているものに手を入れる作業で、障害の修正、法改正や制度変更への追随、性能改善、依存ライブラリの更新が該当します。基本情報技術者試験などでは、保守をさらに次のように分けて説明します。
| 種類 | 目的 |
|---|---|
| 是正保守 | 見つかった不具合を直す |
| 予防保守 | 表面化する前に潜在的な問題を摘む |
| 適応保守 | OS やブラウザなど環境の変化に合わせる |
| 完全化保守 | 性能や保守性そのものを良くする |
なぜ必要か
システムの費用は、作る段階よりも動かし続ける段階の方が大きくなります。十年動く業務システムなら、開発期間は最初の一年で、残りの九年は運用・保守です。ここを軽く見た設計は、ログが足りなくて障害の原因が追えない、手順が人の記憶にしかなく担当者が異動すると止まる、といった形で後から跳ね返ってきます。
具体例
障害の一次対応は、直す前に状況を掴む順序が決まっています。
# サービスが起きているか
systemctl status nginx
# 直近のログでエラーの発生時刻を掴む
journalctl -u nginx --since "10 min ago" | tail -50
# ディスクが埋まっていないか(頻出の原因)
df -h
# 応答が返るかを外から確認
<a href="/glossary/curl" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">curl</a> -I https://example.com/healthつまずきやすいところ
原因調査より先に再起動してしまうと、確かに復旧はしますが、証拠が消えて同じ障害を繰り返します。落ちている間もログとメトリクスは残るので、状況を控えてから復旧手順に入ります。もう一つは、監視を「サーバーが生きているか」だけで組んでしまうことです。サーバーは動いているのにログインだけ失敗し続けるといった障害は、利用者から連絡が来るまで気づけません。主要な機能を実際に叩く監視を一つ入れておくと、検知の質が変わります。
似た用語との違い
運用は決められた手順で回す仕事、保守は中身に手を入れる仕事、という区別が基本です。近年よく聞く SRE は、この運用の作業をできるだけソフトウェアで置き換え、どこまで止まってよいかを数値で決めてから改善に配分する考え方を指します。手順書を人が実行する運用と、その手順をコードにして自動で実行させる運用の違い、と捉えると近い位置関係が見えます。
覚え方
作る仕事の評価は「完成したか」で決まりますが、運用・保守の評価は「気づかれなかったか」で決まります。何も起きていない状態を保つ仕事なので、成果が見えにくい代わりに、抜けたときの影響が最も大きい工程です。