- 設計
運用設計書の書き方|項目一覧と記入例付きテンプレート
運用設計書とは、システムをリリースした後に「誰が・いつ・何を・どの基準で」動かし、守り、直すのかを、運用が始まる前に決めてまとめた文書です。 監視の閾値、バックアップの目標(RPO/RTO)、障害時の連絡先と判断基準、日次・週次・月次の定期作業、アカウントの棚卸し、変更とリリースのルール、そしてサービスを終える手順まで、「運用中に判断を迫られること」を先に決めておくのが役割です。
この記事では、15項目の「決めること・記入例・決めていないと起きること」の早見表、Markdownでそのままコピペできる目次テンプレート、架空の会員制タスク管理サービスの記入例を丸ごと1本(監視項目と閾値の表、バックアップ設計表、連絡体制表、定期作業カレンダー、SLO表)、根拠つきの監視閾値の例、上流工程との関係の図、レビュー観点チェックリストをまとめました。閾値の根拠は公式ドキュメントで確認し、RTOの見積もりに使うリストア時間は PostgreSQL 16 で実測しています。
運用設計書の項目早見表(決めること・記入例・決めていないと起きること)
まずこの表を埋めれば、運用設計書の骨子ができあがります。 右端の列は「決めていないとどうなるか」を事実として書いたもので、レビューのときに「この項目は空でよいか」を判断する材料になります。
| 項目 | 決めること | 記入例(会員制タスク管理サービス) | 決めていないと起きること |
|---|---|---|---|
| 1. 監視 | 監視対象・閾値・通知先・通知手段・対応時間帯 | CPU 80%警告/90%重大、5xx率 1.44%が1時間で電話通知 | 利用者の問い合わせで初めて停止に気づく |
| 2. ログ | 種類・保持期間・保管先・個人情報の扱い・検索方法 | アプリログ90日、アクセスログ1年、監査ログ3年 | 障害の調査時にログが消えていて原因を追えない |
| 3. バックアップ(RPO/RTO) | 対象・方式・頻度・保持期間・保管先・復元テストの周期 | DBは日次フル+WAL 5分ごと、RPO 5分、RTO 2時間、月次で復元テスト | 復元したことがないバックアップが、いざというとき使えない |
| 4. 障害対応・連絡体制・エスカレーション | 重大度の定義・初動時間・連絡手段・エスカレーション先・利用者告知 | Sev1は15分以内に電話、Sev3は翌営業日のチケット | 深夜に誰へ連絡するか迷い、復旧が遅れる |
| 5. 定期作業(日次/週次/月次/年次) | 作業一覧・担当・実施日・手順書へのリンク | 日次:バックアップ成功確認、月次:セキュリティ更新と復元テスト | 証明書やドメインの更新を忘れてサービスが止まる |
| 6. アカウントと権限 | ロール一覧・付与と剥奪の手順・棚卸し周期・共有アカウントの扱い | 本番DBの書き込み権限は運用責任者の承認制、月次棚卸し | 退職者のアカウントが残り続ける |
| 7. 変更管理 | 変更の分類・承認者・記録先・緊急変更のルール | 通常変更は週次の変更会議、緊急変更は事後承認で記録必須 | 「誰がいつ何を変えたか」が分からず、切り分けに時間がかかる |
| 8. リリース | リリース方式・時間帯・判定基準・切り戻し条件 | 火曜10時、Go/No-Go判定、エラー率0.5%超で切り戻し | リリースの直後に障害が起きても戻す判断ができない |
| 9. セキュリティ更新 | 情報源・適用判断の基準・適用期限・適用手順 | 深刻度「高」以上は7日以内、月次でまとめて適用 | 既知の問題が長期間放置される |
| 10. 容量管理 | 計測する指標・増加予測・増設の判断点とリードタイム | ディスク80%で増設を起案、見積もりから適用まで2週間 | 容量が尽きてから慌てて増設を依頼する |
| 11. SLO/SLA | 指標(SLI)・目標値・計測方法・エラーバジェットの使い方 | 可用性99.9%(30日)、p95レイテンシ800ms | 「遅い」「落ちた」の基準が人によって違い、優先度が決まらない |
| 12. コスト | 月額の内訳・予算・上限アラート・見直し周期 | 月額予算に対して80%で通知、四半期ごとに不要リソースを削除 | 使っていないリソースの費用が気づかれずに続く |
| 13. ドキュメント更新 | 更新のトリガー・担当・レビュー方法・置き場所 | 構成変更のPRに運用設計書の更新を含める | 手順書と実環境がずれ、手順どおりに作業しても結果が違う |
| 14. IaCと構成管理 | コード化の範囲・手動変更の扱い・ドリフト検知・適用手順 | Terraformで管理、手動変更は24時間以内にコードへ反映 | 手動変更が積み重なり、再構築できない環境になる |
| 15. 廃止手順 | 廃止の判断者・利用者告知・データの返却と削除・契約解除・記録 | 告知3か月前、データは削除証跡を残して30日後に削除 | 使われていないサービスの費用と責任だけが残る |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「運用設計書の書き方|項目一覧と記入例付きテンプレート」
運用設計書とは何か:要件定義書・基本設計書・運用手順書との違い
運用設計書は、上流工程で決めた「非機能要件」と「システム構成」を受け取り、運用手順書やリリース手順書に渡す中間の文書です。 要件定義で「稼働率 99.9%」「RPO 5分」と決まれば、それを満たす監視とバックアップの方針を運用設計書で決め、具体的なコマンドや画面操作は運用手順書に書きます。
flowchart LR
A["要件定義書<br/>非機能要件:稼働率・RPO/RTO・運用時間"] --> B["基本設計書<br/>システム構成・外部連携・バッチ"]
B --> C["運用設計書<br/>監視・バックアップ・障害対応・定期作業の方針と判断基準"]
C --> D["運用手順書<br/>コマンド・画面操作の手順"]
C --> E["リリース手順書"]
C --> F["障害報告書の様式・連絡先"]
D --> G["運用(日次・週次・月次・年次)"]
G -. "振り返り:閾値や手順の見直し" .-> C
近い名前の文書との違いは、「答える問い」と「読み手」で整理すると迷いません。 要件定義書・基本設計書・詳細設計書・障害報告書は別の記事で詳しく扱っているので、ここでは違いの表だけ示します。
| 文書 | 答える問い | 主な読み手 | 書く時期 | 代表的な中身 |
|---|---|---|---|---|
| 要件定義書 | 何を実現するか | 発注者・開発者 | 開発の最初 | 業務要件・機能要件・非機能要件(稼働率、性能、RPO/RTO) |
| 基本設計書 | 外から見てどう動くか | 発注者・開発者 | 要件定義の後 | 画面・テーブル・外部連携・バッチ・システム構成 |
| 詳細設計書 | プログラムとしてどう作るか | 開発者 | 基本設計の後 | クラス構成・処理詳細・SQL・例外処理 |
| 運用設計書 | リリース後に誰が何をどの基準で行うか | 運用担当・開発者・責任者 | 基本設計と並行〜リリース前 | 監視・バックアップ・障害対応・定期作業・権限・変更管理・廃止 |
| 運用手順書 | その作業を具体的にどう行うか | 運用担当 | 運用設計の後 | コマンド・画面操作・確認項目・所要時間 |
| 障害報告書 | 何が起き、なぜ起き、どう防ぐか | 責任者・利用者 | 障害の後 | 時系列・影響範囲・原因・再発防止策 |
書く時期は「リリース直前」ではなく「基本設計と並行」が目安です。 監視に必要なログの出力形式、バックアップに必要なストレージ、権限分離に必要なアカウント設計は、基本設計で決める内容に影響するためです。
運用設計書の目次テンプレート(Markdownコピペ用)
次のテンプレートをそのままコピーして、見出しの下を埋めていけば運用設計書になります。 表の列は、後の章の記入例と同じ構成にしてあります。使わない章は削除せず「対象外(理由)」と書き残すと、レビューのときに「検討漏れ」と「意図的な対象外」を区別できます。
# ○○システム 運用設計書
| 項目 | 内容 |
|---|---|
| 版 | 1.0 |
| 作成日 / 更新日 | YYYY-MM-DD / YYYY-MM-DD |
| 作成者 / 承認者 | 氏名 / 氏名 |
| 関連文書 | 要件定義書 vX.X、基本設計書 vX.X、運用手順書(リンク) |
## 1. 概要と対象範囲
- 目的:
- 対象システム・対象外:
- 運用時間(サービス提供時間 / 有人対応時間):
- 前提とする非機能要件(要件定義書の要件IDを引用):
## 2. システム構成と運用上の役割
| 構成要素 | 役割 | 冗長化 | 管理者 | 備考 |
|---|---|---|---|---|
| | | | | |
## 3. 体制と連絡先
| 役割 | 担当(主 / 副) | 連絡手段 | 対応時間帯 |
|---|---|---|---|
| | | | |
## 4. 監視
| 監視項目 | 対象 | 警告 | 重大 | 通知先 | 対応 |
|---|---|---|---|---|---|
| | | | | | |
## 5. ログ
| ログ種別 | 出力元 | 保持期間 | 保管先 | 個人情報の扱い |
|---|---|---|---|---|
| | | | | |
## 6. バックアップと復旧(RPO / RTO)
| 対象 | 方式 | 頻度 | 保持 | RPO | RTO | 保管先 | 復元テスト |
|---|---|---|---|---|---|---|---|
| | | | | | | | |
## 7. 障害対応とエスカレーション
| 重大度 | 定義 | 初動(着手まで) | 連絡手段 | エスカレーション先 | 目標復旧時間 | 利用者告知 |
|---|---|---|---|---|---|---|
| | | | | | | |
## 8. 定期作業(日次 / 週次 / 月次 / 年次)
| 周期 | 作業 | 実施日・時刻 | 担当 | 手順書 |
|---|---|---|---|---|
| | | | | |
## 9. アカウントと権限
| ロール | 対象 | 付与の条件 | 承認者 | 棚卸し周期 |
|---|---|---|---|---|
| | | | | |
## 10. 変更管理とリリース
- 変更の分類(通常 / 緊急 / 標準)と承認者:
- リリース方式・時間帯・判定基準・切り戻し条件:
## 11. セキュリティ更新
- 情報源:
- 適用判断の基準と期限:
## 12. 容量管理とコスト
| 指標 | 現在値 | 増加予測 | 増設の判断点 | リードタイム |
|---|---|---|---|---|
| | | | | |
## 13. SLO / SLA
| SLI | SLO | 計測方法 | ウィンドウ | バジェット消費時の対応 |
|---|---|---|---|---|
| | | | | |
## 14. ドキュメント更新・IaC と構成管理
- 更新のトリガーと担当:
- コード化の範囲と手動変更の扱い:
## 15. 廃止手順
- 判断者・告知期間・データの返却と削除・契約解除・記録:
## 改訂履歴
| 版 | 日付 | 変更内容 | 変更者 |
|---|---|---|---|
| | | | |
項目ごとの決め方:監視・ログ・バックアップ・障害対応
15項目のうち、障害の影響に直結する4つは「数字」と「名前」で決めます。 「適切に監視する」「速やかに連絡する」のような形容詞だけの記述は、運用が始まると判断の材料になりません。
監視:閾値は「対応に必要な時間」から逆算する
- 警告と重大の2段階にします。 警告は「翌営業日までに対処すれば間に合う」、重大は「今すぐ人を呼ぶ」ラインです。
- 閾値は、気づいてから対処が終わるまでの時間(リードタイム)から逆算します。 ディスクの増設に2週間かかるなら、2週間後に満杯になる使用率で警告を出します。
- 通知先と通知手段は重大度ごとに分けます。 全部をチャットに流すと、重大な通知が日常の通知に埋もれます。
ログ:保持期間は「使う目的」ごとに決める
- 目的を3つに分けると保持期間が決まります。 障害調査用(アプリログ:90日程度)、分析や問い合わせ対応用(アクセスログ:1年程度)、誰が何を変えたかの記録用(監査ログ:契約や社内規程に合わせて数年)。
- 個人情報をログに出さない方針を先に決めます。 後から消すより、出さない設計のほうが確実です。ログレベルの使い分けは別記事で扱っているので、運用設計書では「どのレベルを本番で出すか」だけ決めます。
バックアップ:RPO と RTO を先に数字で決める
- RPO(Recovery Point Objective)は「どこまでのデータを失ってよいか」、RTO(Recovery Time Objective)は「どれだけの時間で復旧するか」です。 RPOが5分なら、5分おきに復元可能な状態を作る方式(WALアーカイブなど)が必要で、日次バックアップだけでは要件を満たせません。
- 復元テストの周期と担当を書きます。 バックアップは「取れたこと」ではなく「戻せたこと」で成功と判断します。
- RTOはリストア時間に、検知・判断・復旧後の確認を足して見積もります。 後述の実測では50MBのテーブルのリストアは1.0秒でしたが、RTOはそれより桁違いに長くなります。
障害対応:重大度の定義と「誰に・何分以内に・何で」連絡するか
- 重大度は「利用者への影響」で定義します。 「DBサーバーが落ちた」はシステムの状態です。「全利用者がログインできない」のように書くと、判定が人によってぶれません。
- 連絡表には主担当と副担当、電話番号の置き場所、連絡がつかないときの次の宛先と待ち時間(例:10分)を書きます。
- 障害報告書の様式と出すタイミング(初報・中間・最終)は運用設計書で決め、書き方は障害報告書の記事に任せます。 重大度ごとの初動・連絡手段・エスカレーション先・目標復旧時間の表は、記入例の 7 項にあります。
残りの11項目(定期作業、権限、変更管理、リリース、セキュリティ更新、容量、SLO/SLA、コスト、ドキュメント更新、IaC、廃止)は、早見表の「決めること」をそのまま見出しにして、記入例の章と同じ表の形で埋めます。 年次作業はカレンダーへの登録、権限は「剥奪の手順」、リリースは「切り戻し条件の数字」、SLAは「SLOより緩い値」を忘れずに書きます。
監視閾値の例と根拠
閾値は「よく使われる数字」ではなく、「なぜその値か」を書き添えると、環境が変わったときに自分たちで調整できます。 次の表は、小規模なWebサービスを想定した例と、その根拠です。
| 監視項目 | 警告 | 重大 | 根拠 |
|---|---|---|---|
| 外形監視(HTTPS応答) | 1分間隔で2回連続失敗 | 3回連続失敗 | 単発の失敗はネットワークの揺らぎを含むため、連続回数で判定する |
| CPU使用率(5分平均) | 80% | 90%が15分継続 | AWS・GCP・Kubernetesのオートスケール公式ドキュメントの例や既定値は目標50〜60%。その上に警告を置くと、増強を判断する時間が残る |
| メモリ | 空き(available)20%未満 | 空き10%未満、またはスワップ使用開始 | Linuxは空きメモリをページキャッシュに使うので、free の used ではなく available 列で判断する。空きが尽きるとOOMによる強制終了が起きる |
| ディスク使用率 | 80% | 90% | ext4は既定で5%をroot予約にしており、一般プロセスは95%で書き込めなくなる(下で実測)。PostgreSQL公式ドキュメントも「ディスクを満杯にしないこと」を最重要の監視項目としている。80%は増設のリードタイム(2週間程度)を確保する値 |
| 5xx率 | 0.6%が6時間継続 | 1.44%が1時間継続 | 可用性SLO 99.9%のエラーバジェット0.1%に、Google SRE Workbookの多段バーンレート(14.4倍/1時間でページ、6倍/6時間でページ、1倍/3日でチケット)を掛けた値(下で計算) |
| レイテンシ p95 | 800ms | 1,800ms | web.devのTTFB基準は75パーセンタイルで0.8秒以下がgood、1.8秒超がpoor。サーバー側APIをp95で同じ値で見ると利用者側では余裕をもってgoodに収まる |
| 証明書の残日数 | 14日 | 7日 | Let's Encryptは残り有効期間が1/3(90日証明書なら30日前)での自動更新を推奨。残り14日は「自動更新が約2週間分失敗している」サイン |
| バックアップ成功 | 直近26時間以内に成功記録なし | 直近50時間以内に成功記録なし | 「失敗の通知」はジョブが起動しなかったときに届かない。「成功が無いこと」を検知する。値はRPO(24時間)に実行時間の余裕を足したもの |
ディスク使用率の根拠:ext4 の root 予約 5% を実測する
ext4 で作ったファイルシステムは、既定で全ブロックの 5% が root 専用に予約されます。 256MB のイメージを mkfs.ext4 で作り、tune2fs -l で確認した結果です(Ubuntu 24.04)。
$ tune2fs -l fs.img | grep -E '^(Block count|Reserved block count|Block size):'
Block count: 65536
Reserved block count: 3276
Block size: 4096
3276 ÷ 65536 = 約 5.0% です。一般のプロセスはこの予約分を使えないため、df の使用率が 95% に達した時点で書き込みが止まります。 警告 80%・重大 90% は、この 95% のラインより手前で増設の作業時間を確保するための値です。
証明書の残日数:監視スクリプトの例(実行結果つき)
証明書の残日数は openssl だけで確認でき、終了コード 0/1/2(OK/WARNING/CRITICAL)で監視ツールに渡せます。 90日の自己署名証明書で動作を確認しました(OpenSSL 3.0.13)。
#!/bin/bash
# 使い方: ./cert_days.sh ファイル.pem (WARN・CRIT は環境変数で変更可)
set -eu
TARGET="$1"; WARN=${WARN:-14}; CRIT=${CRIT:-7}
END=$(openssl x509 -in "$TARGET" -noout -enddate | cut -d= -f2)
DAYS=$(( ($(date -d "$END" +%s) - $(date +%s)) / 86400 ))
if [ "$DAYS" -le "$CRIT" ]; then echo "CRITICAL: $TARGET expires in $DAYS days ($END)"; exit 2
elif [ "$DAYS" -le "$WARN" ]; then echo "WARNING: $TARGET expires in $DAYS days ($END)"; exit 1
else echo "OK: $TARGET expires in $DAYS days ($END)"; exit 0; fi
$ openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 90 -subj "/CN=example.test"
$ ./cert_days.sh cert.pem; echo "exit=$?"
OK: cert.pem expires in 89 days (Dec 30 03:34:29 2026 GMT)
exit=0
$ WARN=100 ./cert_days.sh cert.pem; echo "exit=$?"
WARNING: cert.pem expires in 89 days (Dec 30 03:34:29 2026 GMT)
exit=1
公開サーバーの証明書を見るときは、END= の行の openssl x509 -in "$TARGET" を echo | openssl s_client -servername ホスト名 -connect ホスト名:443 2>/dev/null | openssl x509 に置き換えます。
5xx 率の根拠:SLO からエラーバジェットと閾値を計算する
5xx 率の閾値は、SLO から逆算すると説明できる数字になります。 可用性 SLO 99.9%(30日)のとき、許容できるエラー率(エラーバジェット)は 0.1% です。Google SRE Workbook の「Alerting on SLOs」が示す多段バーンレート(バジェットを消費する速さ)を掛けると、通知の閾値が決まります。
"""SLO からエラーバジェットと 5xx 率のアラート閾値を求める(Python 3.11)"""
SLO = 0.999 # 可用性 SLO 99.9%(30日ウィンドウ)
WINDOW_DAYS = 30
budget = 1 - SLO # 許容できるエラー率(エラーバジェット)
print(f"SLO {SLO:.1%} → エラーバジェット = {budget:.3%}")
print(f"30日の許容停止時間 = {WINDOW_DAYS*24*60*budget:.1f} 分")
# Google SRE Workbook「Alerting on SLOs」の多段バーンレート例
# (バーンレート, 評価ウィンドウ, 30日バジェットの消費率)
for burn, window_h, consumed in [(14.4, 1, "2%"), (6, 6, "5%"), (1, 72, "10%")]:
print(f"バーンレート {burn:>4} × {window_h:>2}時間窓: "
f"5xx率 {burn*budget:.2%} 以上が続くと通知(バジェット {consumed} 消費)")
SLO 99.9% → エラーバジェット = 0.100%
30日の許容停止時間 = 43.2 分
バーンレート 14.4 × 1時間窓: 5xx率 1.44% 以上が続くと通知(バジェット 2% 消費)
バーンレート 6 × 6時間窓: 5xx率 0.60% 以上が続くと通知(バジェット 5% 消費)
バーンレート 1 × 72時間窓: 5xx率 0.10% 以上が続くと通知(バジェット 10% 消費)
SRE Workbook は、長いウィンドウの 1/12 の短いウィンドウ(1時間なら5分)でも同じ閾値を超えていることを条件に加えることを勧めています。 「今も消費が続いている」ときだけ通知され、収束後は止まります。SLO が 99.5% ならバジェットは 0.5% なので、同じ式で計算し直します。
記入例:会員制タスク管理サービス「ToDoNest」の運用設計書
ここからは、架空の小規模Webサービスの運用設計書を丸ごと1本、記入例として示します。 会員制タスク管理サービス「ToDoNest(架空)」は、Webアプリ2台・PostgreSQL(プライマリ+スタンバイ)・オブジェクトストレージという構成です。数字と名前を自社に置き換えて使ってください。
1. 概要と対象範囲
| 項目 | 内容 |
|---|---|
| 目的 | 会員制タスク管理サービス ToDoNest の本番環境を、稼働率 99.9% で提供し続けるための運用方針と判断基準を定める |
| 対象 / 対象外 | 本番環境(Webアプリ、API、PostgreSQL、オブジェクトストレージ) / 開発・検証環境(開発チームが管理) |
| サービス提供時間 / 有人対応時間 | 24時間365日 / 平日 9:00〜18:00(時間外は Sev1 のみ呼び出し) |
| 前提とする非機能要件 | 要件定義書 NFR-01(稼働率 99.9%)、NFR-03(RPO 5分、RTO 2時間)、NFR-05(p95 応答 800ms 以内) |
2. システム構成と運用上の役割
| 構成要素 | 役割 | 冗長化 | 管理者 | 備考 |
|---|---|---|---|---|
| ロードバランサー | HTTPS終端・振り分け | マネージド | 運用担当 | 証明書は自動更新 |
| Webアプリ(2台) | 画面とAPI | 2台で冗長 | 開発チーム | コンテナイメージはタグ固定 |
| PostgreSQL 16 | 会員・タスク・添付のメタデータ | プライマリ+スタンバイ | 運用担当 | 自動フェイルオーバー |
| オブジェクトストレージ | 添付ファイル | 別リージョン複製 | 運用担当 | バージョニング有効 |
| バッチ(日次) | 期限リマインド送信 | 1台(未完了時は翌朝再実行) | 開発チーム | 03:30 起動 |
3. 体制と連絡先
| 役割 | 担当(主 / 副) | 連絡手段 | 対応時間帯 |
|---|---|---|---|
| 一次対応者(当番制) | 当番表(週交代、運用チーム4名) | 監視ツールからの電話・チャット | 24時間(Sev1)、平日9〜18時(Sev2以下) |
| 運用責任者 | 運用チームリーダー / 開発リーダー | 電話 → チャット | 24時間(Sev1) |
| 開発リーダー | 開発チーム / 副リーダー | チャット | 平日9〜18時、Sev1は呼び出し可 |
| 利用者告知の担当 | サポート窓口 / 運用責任者 | ステータスページ・メール | 平日9〜18時(時間外はステータスページのみ) |
| 事業責任者 | 事業部長 | 電話(Sev1が2時間を超えた場合) | 24時間 |
電話番号はアクセス制限つきの連絡簿に置き、この文書には役割だけを書きます。連絡がつかない場合は10分待って次の宛先(副担当 → 運用責任者 → 事業責任者)に進みます。
4. 監視項目と閾値
| 監視項目 | 対象 | 警告 | 重大 | 通知先 | 対応 |
|---|---|---|---|---|---|
| 外形監視(ログイン画面 HTTPS) | ロードバランサー | 1分間隔で2回連続失敗 | 3回連続失敗 | 警告:チャット / 重大:一次対応者へ電話 | Sev1 として障害対応へ |
| 5xx 率 | API | 0.6% が 6時間(短窓30分) | 1.44% が 1時間(短窓5分) | 警告:チケット / 重大:電話 | 直近リリースの切り戻しを検討 |
| レイテンシ p95 | API | 800ms が 10分 | 1,800ms が 10分 | 警告:チャット / 重大:電話 | DBのスロークエリと接続数を確認 |
| CPU 使用率(5分平均) | Webアプリ各台 | 80% | 90% が 15分 | チャット | 台数追加(オートスケール上限 4台) |
| ディスク使用率 | DB・ログ領域 | 80% | 90% | チャット / 電話 | 増設を起案(リードタイム2週間) |
| DB レプリケーション遅延 | スタンバイ | 60秒 | 300秒 | チャット / 電話 | スタンバイの状態確認 |
| 証明書残日数 | 公開ドメイン | 14日 | 7日 | チャット / 電話 | 自動更新ログの確認、手動更新 |
| バックアップ成功 | DB・添付 | 26時間以内に成功なし | 50時間以内に成功なし | チャット / 電話 | ジョブの手動実行 |
| バッチ完了 | 日次リマインド | 04:30 までに完了なし | 翌日まで未完了 | チャット | 翌朝再実行、重複送信防止を確認 |
5. ログ
| ログ種別 | 出力元 | 保持期間 | 保管先 | 個人情報の扱い |
|---|---|---|---|---|
| アプリケーションログ(JSON、INFO以上) | Webアプリ・バッチ | 90日 | ログ基盤 | メールアドレスはマスク、パスワードは出力しない |
| アクセスログ | ロードバランサー | 1年 | オブジェクトストレージ | IPアドレスは保持、本文は記録しない |
| 監査ログ(権限変更・データ削除・ログイン) | アプリ・DB | 3年 | 専用バケット(書き込み専用) | 操作者IDと対象IDのみ |
6. バックアップ設計(RPO / RTO)
| 対象 | 方式 | 頻度 | 保持 | RPO | RTO | 保管先 | 復元テスト |
|---|---|---|---|---|---|---|---|
| PostgreSQL(会員・タスク) | 日次フル(pg_dump -Fc)+ WAL アーカイブ(PITR) |
フル 03:00、WAL 5分ごと | 日次 30日、月次 12か月 | 5分 | 2時間 | 別リージョンのオブジェクトストレージ | 月次(第1営業日、検証環境へ復元して件数を照合) |
| 添付ファイル | バージョニング+別リージョン複製 | 即時 | 削除後 90日 | ほぼ 0 | 1時間 | 別リージョン | 四半期(ランダム10件を復元) |
| 設定・IaC | Git リポジトリ | コミットごと | 無期限 | 0 | 30分 | Git ホスティング | リリースごとに自動適用で検証 |
RTO 2時間の内訳は、検知 15分、判断 15分、リストア 30分(実測値に余裕を見た値)、復旧後の確認 30分、予備 30分です。 リストア時間は、本番と同じサイズのダンプを検証環境で復元して計測し、年2回更新します。
7. 障害対応と連絡体制(エスカレーション)
| 重大度 | 定義 | 初動(着手まで) | 連絡手段 | エスカレーション先 | 目標復旧時間 | 利用者告知 |
|---|---|---|---|---|---|---|
| Sev1 | 全利用者がログインまたはタスク操作を行えない。データ損失の可能性がある | 15分以内 | 電話 | 運用責任者 → 開発リーダー → 事業責任者(2時間超) | 2時間 | 30分以内に初報、1時間ごとに更新 |
| Sev2 | 一部機能(添付・通知)の停止、または p95 が 1,800ms 超の性能低下 | 30分以内(時間外は翌営業日 9:00) | チャット | 運用責任者 | 4時間(有人時間内) | 影響機能の告知を2時間以内 |
| Sev3 | 軽微で回避策がある。特定利用者のみの事象 | 翌営業日 | チケット | なし(週次の定例で共有) | 5営業日 | 個別回答 |
障害報告書は、Sev1・Sev2 で作成し、初報は復旧後 1営業日以内、最終報告は 5営業日以内に出します。
8. 定期作業カレンダー
| 周期 | 作業 | 実施日・時刻 | 担当 | 手順書 |
|---|---|---|---|---|
| 日次 | バックアップ成功とバッチ完了の確認、前日のアラート棚卸し、ディスク使用率の確認 | 平日 9:30 | 一次対応者 | OP-01 |
| 週次 | 依存パッケージの脆弱性スキャン結果の確認と対応方針の決定 | 月曜 10:00 | 開発リーダー | OP-05 |
| 週次 | 変更会議(翌週のリリースと変更の承認) | 木曜 15:00 | 運用責任者 | OP-06 |
| 月次 | OS・ミドルウェアのセキュリティ更新の適用 | 第2火曜の翌週末(土曜 深夜) | 運用担当 | OP-07 |
| 月次 | DB の復元テスト(検証環境、件数照合) | 第1営業日 | 運用担当 | OP-08 |
| 月次 | アカウント棚卸し(未使用90日のアカウントを無効化) | 月初 | 運用責任者 | OP-09 |
| 月次 | コスト確認(予算比、未使用リソースの洗い出し) | 第3営業日 | 運用責任者 | OP-10 |
| 四半期 | 添付ファイルの復元テスト、監視閾値の見直し(対応しなかったアラートの棚卸し) | 四半期初月の第2週 | 運用担当 | OP-11 |
| 年次 | ドメイン更新の確認、DR(別リージョン復旧)訓練、容量計画、運用設計書の改訂 | 6月第1週 | 運用責任者 | OP-12 |
9. SLO
| SLI | SLO | 計測方法 | ウィンドウ | バジェット消費時の対応 |
|---|---|---|---|---|
| 可用性(5xx 以外の応答の割合) | 99.9% | ロードバランサーのアクセスログ(ヘルスチェックを除く) | 30日ローリング | 残バジェット 50% 未満:新機能リリースを見送り、安定化を優先。25% 未満:事業責任者へ報告 |
| レイテンシ(API の p95) | 800ms 以内が 99% の時間帯 | ロードバランサーのアクセスログ | 30日ローリング | 同上 |
| バッチの定時完了 | 月間 100%(04:30 までに完了) | バッチの完了ログ | 月次 | 2回連続で未達なら処理の見直しを起案 |
SLA(利用規約で約束する値)は 99.5% とし、SLO より緩い値にしています。SLO は内部の目標、SLA は外部への約束で、SLA は未達時の対応(返金など)を伴うため SLO より緩くします。
10. アカウントと権限
| ロール | 対象 | 付与の条件 | 承認者 | 棚卸し周期 |
|---|---|---|---|---|
| 閲覧(ダッシュボード・ログ) | 運用・開発チーム全員 | 入社・配属時 | 運用責任者 | 月次 |
| デプロイ実行 | 開発リーダー・運用担当 | リリース手順書の習熟確認後 | 運用責任者 | 月次 |
| 本番DB 書き込み | 運用責任者のみ | 障害対応・データ修正時に一時付与 | 事業責任者 | 都度(作業後に剥奪) |
| クラウド管理者 | 運用責任者 / 副 | 2名のみ、MFA必須 | 事業責任者 | 四半期 |
共有アカウントは使いません。退職・異動の当日に、人事連絡を受けた運用責任者が全ロールを剥奪します。
11. 変更管理・リリース・セキュリティ更新
- 変更の分類:通常変更(週次の変更会議で承認)、緊急変更(運用責任者の口頭承認で実施し、24時間以内に記録)、標準変更(オートスケール上限の変更など、事前承認済みの定型作業)。
- リリース:火曜 10:00 に段階リリース(1台 → 全台)。リリース後 30分間の 5xx 率が 0.5% 超、または p95 が 1,800ms 超なら切り戻します。手順はリリース手順書 REL-01。
- セキュリティ更新:情報源はディストリビューションの告知と週次の依存パッケージスキャン。深刻度「高」以上は 7日以内、それ以外は月次の定期作業で適用します。
12. 容量管理とコスト
| 指標 | 現在値 | 増加予測 | 増設の判断点 | リードタイム |
|---|---|---|---|---|
| DB ディスク | 120GB / 500GB | 月 8GB | 使用率 80%(400GB) | 2週間(見積もり・承認・拡張) |
| Webアプリ台数 | 2台 | 会員数に比例 | CPU 警告が週3回以上 | 即日(オートスケール上限 4台まで) |
| 月額コスト | 予算の 62% | 月 3% | 予算の 80% で通知 | 四半期ごとに未使用リソースを削除 |
13. ドキュメント更新・IaC と構成管理・廃止手順
- ドキュメント更新:構成変更の PR に運用設計書と手順書の差分を含め、レビュー観点に「運用文書の更新」を入れます。障害の振り返りで閾値や手順を変えた場合は、最終報告の提出時に改訂します。
- IaC と構成管理:インフラは Terraform で管理し、手動変更は Sev1 対応時のみ許可して 24時間以内にコードへ反映します。週次で
terraform planの差分(ドリフト)を確認します。 - 廃止手順:事業責任者が判断し、3か月前に利用者へ告知します。停止後 30日間はデータ出力の要望に応じ、その後に削除して証跡を保管します。監視・定期作業・契約を停止し、廃止記録を残します。
RTO を見積もるにはリストアを実測する(PostgreSQL 16)
RTO の「リストア時間」は推測ではなく実測で埋めます。 記入例と同じ構造のテーブルに 50万行を入れ、pg_dump -Fc で取得したダンプを、テーブル削除後に pg_restore で戻した所要時間です(PostgreSQL 16.13、同一ホスト)。コマンドの詳細は pg_dump/pg_restore の記事で扱っているので、ここでは時間だけ示します。
tasks テーブル: 500000 行 / 50 MB(pg_total_relation_size)
pg_dump 実時間 0.7 秒 (-Fc、ダンプサイズ 4.2MB)
DROP TABLE (障害を模擬)
pg_restore 実時間 1.0 秒
500000 (復元後の件数)
50MB のテーブルで 1秒でも、RTO は「検知 → 判断 → リストア → 確認」の合計です。 本番サイズのダンプではリストアに数十分かかることも多く、別リージョンからのダウンロード時間も加わります。実測値に余裕を見て書き、年2回の復元テストで更新します。
レビュー観点チェックリスト
運用設計書のレビューは「形容詞を数字と名前に置き換えられているか」を確認する作業です。 次のチェックリストを、レビュー依頼時に添えてください。
| 観点 | 確認すること | よくある指摘 → 直し方 |
|---|---|---|
| 要件との対応 | 要件定義書の非機能要件(稼働率・RPO/RTO・性能)がすべて運用設計書のどこかで実現されているか | 「RPO 5分」なのに日次バックアップのみ → WAL アーカイブ(PITR)を追加 |
| 監視の閾値 | 警告と重大の2段階か、通知先と手段が重大度ごとに分かれているか、根拠が書いてあるか | 全通知がチャット → Sev1 は電話に変更 |
| 監視の網羅性 | 外形監視・リソース・エラー率・レイテンシ・証明書・バックアップ成功・バッチ完了がそろっているか | バックアップ失敗のみ監視 → 「成功が無いこと」の監視に変更 |
| バックアップ | 復元テストの周期と担当があるか、RTO の内訳があるか | 「定期的に復元テスト」 → 「月次、第1営業日、運用担当」 |
| 障害対応 | 重大度が利用者への影響で定義されているか、連絡がつかない場合の次の宛先があるか | 「DBダウン=Sev1」 → 「全利用者がログイン不可=Sev1」 |
| 定期作業 | 年次作業(証明書・ドメイン・DR訓練)が表にあり、カレンダーに登録されているか | 年次作業が未記載 → 表に追加し、担当を決める |
| 権限 | 剥奪の手順と棚卸し周期があるか、共有アカウントの扱いが決まっているか | 「適切に管理」 → 「退職当日に剥奪、月次棚卸し」 |
| 変更とリリース | 緊急変更の記録ルール、切り戻し条件が数字で書かれているか | 「問題があれば切り戻す」 → 「5xx 率 0.5% 超で切り戻す」 |
| 容量・コスト | 増設の判断点とリードタイムがあるか、予算アラートがあるか | 判断点なし → 「80% で起案、リードタイム 2週間」 |
| ドキュメント・廃止 | 更新のトリガーと担当があるか、廃止手順にデータ削除の証跡・契約解除・監視停止があるか | 「随時更新」 → 「構成変更の PR に差分を含める」 |
| 対象外の明記 | 使わない章が削除されず「対象外(理由)」と書かれているか | 章が消えている → 検討漏れか意図的かが分かるよう理由を書く |
よくある質問
Q. 運用設計書と運用手順書は、どちらか1つにまとめてはいけませんか? A. 小規模なら1つの文書に章を分けて書いても構いません。ただし「方針と判断基準(運用設計)」と「操作手順(運用手順)」は更新の頻度と読み手が違うので、章を分け、手順の章だけ頻繁に更新できるようにしておくと長く使えます。
Q. 監視の閾値は、記事の値をそのまま使ってよいですか? A. 出発点としては使えますが、根拠の部分を自社の条件に置き換えてください。たとえばディスクの警告 80% は「増設に2週間かかる」前提の値なので、即日増設できる環境なら 85〜90% でも間に合います。四半期ごとに「鳴ったけれど対応しなかったアラート」を見直すと、閾値が自社に合っていきます。
Q. アジャイル開発やクラウドのマネージドサービスでも運用設計書は必要ですか? A. 必要です。マネージドサービスはバックアップやフェイルオーバーの「手段」を提供しますが、「RPO/RTO をいくつにするか」「誰が復旧を判断するか」「権限を誰に与えるか」は利用者側が決める項目です。アジャイルなら、運用設計書もスプリントごとに差分更新する文書として扱います。
まとめ
- 運用設計書は、リリース後に「誰が・いつ・何を・どの基準で」行うかを運用前に決めた文書で、要件定義の非機能要件を受け取り、運用手順書やリリース手順書へ渡します。
- 15項目(監視、ログ、バックアップ、障害対応、定期作業、権限、変更管理、リリース、セキュリティ更新、容量、SLO/SLA、コスト、ドキュメント更新、IaC、廃止)を表で埋めると骨子ができます。
- 形容詞を数字と名前に置き換えるのが核心です。「速やかに」は「15分以内に電話」、「定期的に」は「月次、第1営業日、運用担当」と書きます。
- 監視の閾値には根拠を添えます。 ext4 の root 予約 5%、SLO から計算したバーンレート、Let's Encrypt の更新推奨タイミングのように、再計算できる形で残します。
- RTO はリストア時間の実測に、検知・判断・確認の時間を足して見積もり、復元テストで更新します。
- レビューでは要件との対応、閾値の2段階と根拠、復元テスト、重大度の定義、年次作業、権限の剥奪、切り戻し条件、廃止手順を確認します。
- 基本設計と並行して書き始め、構成変更の PR で差分更新すると、実環境とずれない文書になります。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「運用設計書の書き方|項目一覧と記入例付きテンプレート」
株式会社RJCでは、運用設計書のように「リリース後に効いてくる設計」を、監視やバックアップの実測結果と根拠をもとにプロジェクトの中で仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。