本文へ移動

自動メンテナンスと長期運用/ Operations & Longevity

裏側で自動的に動いているもの、止まったときの気づき方、20 年を見据えた備え

松葉には、利用者の操作とは別に、決まった時刻や間隔で自動的に動く処理があります。通知を送り出す、Drive とのずれを直す、古い記録を片づける、といった裏方の働きです。この章では、何がいつ動いているか、止まったときにどう気づくか、そしてどこまでがシステム管理者の持ち場で、どこからがエンジニアの持ち場かを説明します。あわせて、想定運用年数 20 年に向けた備えと、費用の見張り方も扱います。

01

自動で動いているものAlways Running

この章の前提: 日常運用はアプリ内の管理コンソールで完結する設計です。クラウド側の画面に毎回入らなくても、確認と対応が済むようにしてあります。この章でクラウド側の仕組みに触れる目的は、①裏側で何が動いているかを知ってもらうこと ②アプリの外から届く知らせ(監視と予算のメール)の意味が分かるようにすること ③「ここから先はエンジニア対応」という線引きを共有すること、の 3 つです。操作手順は扱いません。

現在、17 種の処理が決まった時刻・間隔で自動的に動いています。毎分の通知の送り出しから、月次の監査ログの退避まで。ここに載っているものが止まると、画面上は正常に見えたまま業務が滞るため、いずれも失敗を検知してアラートに上げる仕組みとセットになっています。

図 10 · 自動運転の 24 時間 — 高頻度・日次・週次以上の 3 レーン
① 高頻度 — 数分おきに動くもの(すべて稼働中)毎分送信予定の払い出し通知を順に送り出します5 分ごと配送と滞留の見張り届かない知らせを見つけます5 分ごと提出の確定受付を締めて取り込みます30 分ごとデイリーサマリの送信受信者が指定した時刻にまとめて届けます6 時間ごと・2 本立てウイルス定義の取り寄せ → 読み込み指示取り寄せて、時間をおいて読み込みを指示します② 日次・月次 — 1 日 1 回と月 1 回(上から順に動きます)毎日Drive の定期補修 — 全 Box を突き合わせ、ずれを直します稼働中毎日保持期限を過ぎたファイルの自動削除実装予定 · Step 4a毎日ゴミ箱の掃除 — 保持期間を過ぎた分を実体ごと消します実装予定 · Step 4a毎日管理ダッシュボード用の集計実装予定 · Step 4b毎月監査ログの退避(月次)— 25 ヶ月を超えた分をストレージへ稼働中毎日サムネイルの作り直し — 未生成の分を埋めます稼働中毎日Workspace の状態観測 — 停止・削除を検知し、接続を切ります稼働中毎日Drive 同期の記録の掃除 — 保管期間を過ぎた履歴を消します稼働中毎日参加申請の期限切れ取消 — 期限を過ぎた申請を取り下げます稼働中毎日共有リンクの ZIP の回収 — 期限切れの一時ファイルを消します稼働中毎日アクセス回数の記録の掃除稼働中毎日信頼済みデバイスの記録の掃除稼働中毎日削除予告のとりまとめ — 今週消える分を Box のオーナーへ実装予定 · Step 4a③ 週次・月次・年次毎週停止者のリマインダ対象ゼロなら送りません稼働中毎月ウイルス検出の訓練試験用ファイルで確かめます稼働中毎月5 年経過の列挙消去は管理者の承認後です稼働中毎月通知履歴の掃除一定期間を過ぎた記録を消します稼働中毎月アラート台帳の掃除無視・解決済みを片づけます実装予定 · Step 4b年次署名鍵の交代旧鍵を一定期間並行させます実装予定 · Step 4b

色の役割 — Teal の塗り:稼働中の処理 / 金茶の塗り:保管に関わる処理 / 枠線のみ:実装予定。

稼働中の 17 種Running Today

Scheduled Jobs — Live
分類処理頻度
通知の配送送信予定の払い出し — たまった通知を順に送り出します毎分
通知の配送配送と滞留の見張り — 送れなかった知らせと、検査の詰まりを検知します5 分ごと
通知の配送デイリーサマリの送信 — 受信者が指定した時刻にまとめて届けます30 分ごと
受け渡し提出の確定 — ファイルリクエストの受付を締めて取り込みます5 分ごと
検査ウイルス定義の取り寄せ — 検出パターンを最新に保ちます6 時間ごと
検査ウイルス検出の訓練 — 試験用ファイルで検出できるか確かめます毎月
DriveDrive の定期補修 — 全 Box を突き合わせ、ずれを直します毎日
DriveDrive 同期の記録の掃除 — 保管期間を過ぎた履歴を消します毎日
観測Workspace の状態観測 — 停止・削除を検知し、接続を切ります毎日
補完サムネイルの作り直し — 生成できていない分を埋めます毎日
掃除参加申請の期限切れ取消 — 期限を過ぎた申請を取り下げます毎日
掃除共有リンクの ZIP の回収 — 期限切れの一時ファイルを消します毎日
掃除アクセス回数の記録の掃除 — 古い計測記録を消します毎日
掃除信頼済みデバイスの記録の掃除 — 使われなくなった記録を消します毎日
掃除通知履歴の掃除 — 一定期間を過ぎた記録を消します毎月
記録の保管監査ログの退避 — 25 ヶ月を超えた分をストレージへ移します毎月
アカウント5 年経過アカウントの列挙 — 完全消去の候補を洗い出します毎月

これから加わる 10 種Planned

Scheduled Jobs — Planned
分類処理頻度状態
保持期間保持期限を過ぎたファイルの自動削除毎日実装予定 · Step 4a
保持期間ゴミ箱の掃除 — 保持期間を過ぎた分を実体ごと消します毎日実装予定 · Step 4a
保持期間削除予告のとりまとめ — 今週消える分を Box のオーナーへ毎日実装予定 · Step 4a
保持期間Drive アーカイブの照合 — 退避した控えの実在を確かめます週次実装予定 · Step 4a
管理管理ダッシュボード用の集計毎日実装予定 · Step 4b
掃除招待の期限切れ失効 — 14 日たった未受諾の招待を閉じます毎日実装予定 · Step 4b
掃除古い世代の削除 — 保管数を超えた版を消します週次実装予定 · Step 4b
掃除アラート台帳の掃除 — 無視・解決済みを片づけます毎月実装予定 · Step 4b
鍵署名鍵の交代 — 旧鍵を一定期間並行させて切り替えます年次実装予定 · Step 4b
ヘルプヘルプ検索の索引づくりアプリ更新時実装予定 · Step 4d

利用者の操作で動く裏方On Demand

決まった時刻ではなく、誰かが操作したときにだけ動く処理が 3 種あります。いずれも稼働中で、時間のかかる仕事を画面の裏側に逃がすためのものです 稼働中。

  • フォルダの ZIP 生成 — フォルダを共有リンクで渡すとき、受取人が最初に開いた時点でひとまとめの ZIP を作ります。できあがるまで受取人には準備中と見えます。
  • 監査ログ・アクティビティの書き出し — 期間が長い、または件数が多いときは、その場でのダウンロードをやめて裏側で書き出し、できあがったら依頼者へメールで知らせます。
  • Drive 同期の補修バッチ — 管理コンソールから Box を選んで実行すると、その Box について Drive 側と松葉側をその場で突き合わせます。日次の全件の突き合わせを待たずに確かめたいときに使います。
(画面の画像は掲載していません)
決まった時刻に処理を起こす仕組みが、クラウド側に並んでいる様子です。それぞれに名前と起動間隔、最後に起動した時刻が記録されています。
(画面の画像は掲載していません)
起こされた処理が実際に走り、成功・失敗と所要時間が積み上がっている様子です。日次の処理が毎日ここに並びます。
02

止まったらどう気づくかWhen It Breaks

自動処理は、止まっても画面には何も出ません。だからこそ「気づく仕組み」を別に用意しています。松葉が自分で見つけた異常は 1 つの台帳(app_alerts)に集まり、そこから管理ヘッダの件数・一覧画面・メールの 3 つの経路で管理者に届きます。これと並走して、松葉の外側(クラウド)からも直接メールが届く経路が 2 つあります。

図 11 · 異常に気づく経路 — アプリ内の台帳と、外側から直接届く知らせ
検知元 — 松葉が自分で見つける検査感染・滞留・失敗配送不達・行き詰まりDrive同期・管轄外容量積み残し・増加課金予算への到達Workspace停止・身元アラート台帳(app_alerts)— 28 種のできごとを 1 か所に記録同じ知らせは 1 行にまとめ、重大度(警告 / 重大)と対応状態を持ちます① 管理ヘッダの件数バッジ未対応が 1 件以上のときだけ一定間隔で数え直します稼働中② 一覧と対応の記録種類で絞り込み、状態を残す一定間隔で自動更新実装中③ メールで知らせるウイルス検出 / 内容不一致 /総当たり / Drive 同期 の 4 種稼働中(汎用は実装予定 · Step 4b)対応状態未対応 → 対応中(判断を保留)→ 対応完了 / 無視(理由を残します)。条件が消えれば自動で解決するものもあります④ 並走する見張り — アプリの外側から直接メールで届く(いずれも稼働中)Cloud Monitoring(4 つのポリシー)サーバエラーの急増 / 配信できない知らせの滞留送信予定の行き詰まり / 一括ダウンロード後の記録の失敗Cloud Billing の予算アラート月の予算に近づいたときと超えたときにメール通知のみで、自動停止はしませんこの 2 つはアプリを通らないため、松葉やバッチが止まっている状況でも届きます。宛先はメールで、設定はエンジニアが行います

色の役割 — Teal:稼働中の経路 / 金茶:検知元と実装中 / 破線:アプリの外側(クラウド)の仕組み。①と②は同じ台帳を見ており、②が実装されるとバッジから一覧へそのまま移動できます。検知元のうち容量・課金にかかわる起票は実装予定です(下のアラート分類表を参照)。

アラート 28 種の分類Alert Catalogue

台帳に載るできごとは、現在 28 種です。重大度は警告と重大の 2 段階。同じできごとが続けて起きても 1 行にまとめられるため、台帳が同じ知らせで埋まることはありません。

セキュリティと検査(9 種)Security & Scanning

Security & Scanning
種類知らせる内容状態
ウイルス検出アップロードされたファイルからウイルスを検出し、隔離しました稼働中
ファイル内容の不一致拡張子と中身が食い違うため、予防的に隔離しました稼働中
整合性の不一致アップロード中に内容が変わった疑いがあり、その版を破棄しました稼働中
スキャン滞留検査中のまま止まっているファイルが増えています稼働中
スキャン失敗再試行の上限まで検査が通りませんでした稼働中
検出テストの失敗毎月の検出訓練で、試験用ファイルを検出できませんでした稼働中
ウイルス定義の更新失敗検出パターンの取り寄せが 3 回連続で失敗した、または取り寄せた検出パターンの鮮度が一定時間を超えました稼働中
共有リンクの総当たり1 つのリンクに、短時間で多数の本人確認の失敗が集中しています稼働中
同一 IP からの大量アクセス同じ接続元から短時間に大量のアクセスがあります稼働中

通知の配送と自動処理(4 種)Delivery & Jobs

Delivery & Jobs
種類知らせる内容状態
送信予定の行き詰まり送り出せないまま行き止まりになった知らせがあります稼働中
バッチ処理の失敗自動処理が失敗して終わりました稼働中
配信できない知らせの滞留受け取り側で処理できない知らせがたまっています実装中
メール不達率の上昇届かなかったメールの割合が高まっています実装中

下 2 種の起票は、アラート一覧画面と同じ実装のまとまりに含まれます。それまでの間、この 2 つの故障は Cloud Monitoring 側の見張り(図 11 の④)と管理コンソールの通知状況画面で確認します。

Drive 同期(8 種)Drive Sync

Drive Sync
種類知らせる内容状態
同期の連続失敗(2 日)同じ Box で 2 日続けて同期に失敗しています稼働中
フォルダ検証の失敗(30 日)Box に対応する Drive のフォルダを 30 日間確認できていません稼働中
管轄外ファイルの大量検知Drive に直接置かれたファイルが多数見つかりました稼働中
Drive の呼び出し上限に接近Drive 側が定める短時間あたりの呼び出し回数の上限に近づいています稼働中
定期補修の所要時間の増加日次の突き合わせが、確保した時間の半分を超えました稼働中
単一 Box の規模が上限に接近1 つの Box のファイル数が、突き合わせの処理限界に近づいています稼働中
アーカイブ転写のエラー多発退避した控えの Drive への書き出しが続けて失敗しています実装予定 · Step 4a
Drive のゴミ箱送りの失敗削除にあわせた Drive 側の片づけが失敗しました実装予定 · Step 4a

容量と費用(4 種)Capacity & Cost

Capacity & Cost
種類知らせる内容状態
保持期間削除の積み残し期限を過ぎたのに消えていないファイルがたまっています実装予定 · Step 4a
保管費用が予算に接近保管にかかる費用が、予算に近づきました実装予定 · Step 4b
予算アラートの受信クラウドの予算アラートを受け取り、台帳に記録しました実装予定 · Step 4b
保管容量の急な増加保管しているデータ量が、前日から大きく増えました実装予定 · Step 4b

鍵と証明書(1 種)Keys

Keys
種類知らせる内容状態
署名鍵の交代期限超過年次で交代させる署名鍵が、期限を過ぎても使われています実装予定 · Step 4b

Workspace(アカウント・2 種)Workspace

Workspace
種類知らせる内容状態
停止ユーザの検知Workspace 側で停止・削除された方が、松葉では有効なままです稼働中
身元の不一致同じメールアドレスの持ち主が入れ替わった可能性があります稼働中

28 種のうち、いま実際に上がるのは 19 種です。残りは、アラート一覧画面と同時に起票する 2 種と、保持期間の強制実行にあわせて加わる 3 種、管理画面の残りとあわせて加わる 4 種です。アラート一覧画面の実装で 1 種が加わり、全体は 29 種になります。

(画面の画像は掲載していません)
アプリの外側から松葉を見張っている 4 つのポリシーが並んでいる様子です。条件に触れるとメールが飛び、発火中かどうかがここに残ります。
03

持ち場の線引きWho Handles What

アラートやメールを受け取ったとき、まずアプリ内のどこを見るかと、どこからエンジニアへ引き継ぐかの目安です。原則として、日常の対応はアプリ内で完結します。クラウド側の操作はエンジニアの持ち場です。

From Alert to Action
起きたことまず見る場所システム管理者ができることエンジニアへ引き継ぐ目安
ウイルスを検出した隔離ファイル内容の確認、専用環境での取り出し(理由必須)、恒久削除同じ相手から繰り返し届くとき(送信元への対応)
検査が詰まっている・失敗しているスキャンキュー個別またはまとめての再スキャン再スキャンしても解消しないとき(検査サービスの状態)
ウイルス定義が古いスキャンキュー鮮度と連続失敗回数の確認3 回連続の失敗が続くとき(取り寄せの調査)
Drive 同期が失敗しているDrive 同期管理再投入、Box ごとの補修バッチ実行呼び出し上限や Drive 側の権限が絡むとき
Drive に直接置かれたファイルがあるDrive 管轄外検知置いた方への通知、運用ルールの周知原則として不要
共有リンクに総当たりの疑いがある共有リンク全社一覧強制無効化(理由必須・発行者へ通知)止めた後も同じ接続元からの試行が続くとき
通知が届いていない通知状況再送、メール配信の再開、本文の確認成功率が全体的に落ちているとき(送信ドメインの評価)
Workspace 側で停止された方がいるアラート一覧 実装中松葉側での無効化、Box のオーナー付け替え原則として不要
予算アラートのメールが届いたストレージ 実装予定 · Step 4b容量の内訳の確認、保持期間や HOLD の見直しの検討予算額の変更、構成の見直し(費用の削減)
画面が開かない・エラーが続く—発生時刻・操作・画面の記録直ちに引き継ぎ(配備・構成・障害復旧)

エンジニアが受け持つ作業Engineering Side

  • 配備と構成の変更 — アプリの更新、サービスの規模や割り当ての変更。
  • 自動処理の時刻と権限の設定 — 起動間隔の追加・変更、各サービスの権限付与。
  • 監視ポリシーの設定 — 何をどのしきい値で見張り、どこへ通知するか。
  • 鍵とシークレットの年次交代 — 署名鍵、外部サービスの資格情報、データベースの資格情報。
  • 障害復旧と復元 — バックアップからの復元、時点を指定した巻き戻し。
線引きの考え方: 「日々の判断が要ることはアプリ内で、仕組みそのものを変えることはクラウド側で」が原則です。判断が要る作業(どのファイルを取り出すか、どのリンクを止めるか、誰を無効化するか)は業務を知っている方でないと決められません。逆に、設定を 1 つ間違えると全体が止まる作業は、影響範囲を追える人に集約します。
04

20 年運用のリスクと備えLong-term Risks

松葉は最長 20 年の運用を前提に設計しています。長く動かすと、放っておくだけで静かに劣化していくものがあります。ここでは、そのうち情報漏洩の防止・保管容量の抑制・監査への説明責任に直結するものを取り上げます。

Eight Long-term Risks
放っておくとどう気づくか備え
記録が肥大するデータベースの容量と応答速度の悪化監査ログは月ごとに区切って 2 年保持し、25 ヶ月を超えた分はストレージへ退避 稼働中。通知履歴は一定期間で削除 稼働中
保管容量が膨らむ容量の推移と費用のアラート保持期間(既定 180 日・変更可)とゴミ箱保持期間(既定 90 日・変更可)による自動削除は 実装予定 · Step 4a です。受け皿となる期間の設定と、消してはいけないものを守る Box 単位の HOLD は先に動いています
死蔵アカウントが残る日次の Workspace 観測と、週次のリマインダ 稼働中停止・削除を検知した時点で接続を切り、アラートに上げます。無効化そのものは管理者の判断です。一括処理の画面は 実装予定 · Step 4b
退職者の情報が残り続ける無効化からの経過年数(月次の列挙)稼働中無効化から 5 年たったアカウントを毎月洗い出し、管理者の承認のうえ完全消去します。消去は記録が長期保存へ移り終えたことを確かめてから実行し、移した記録はそのまま残ります。承認の画面は 実装予定 · Step 4b
鍵・資格情報が古くなる年次のカレンダー運用と、期限超過のアラート署名鍵は旧鍵を一定期間並行させて交代させます 実装予定 · Step 4b。外部サービスの資格情報は年次で一括交代(エンジニア)
メールが届かなくなる配信成功率と不達件数(通知状況画面)稼働中30 日以内に 3 回届かなかった宛先は自動で送信を止め、Box のオーナーへ知らせます。本人が確認メールから再開できます 稼働中
検出できないウイルスが増えるウイルス定義の鮮度と、毎月の検出訓練 稼働中6 時間ごとに検出パターンを取り寄せ、毎月、試験用ファイルで検出できるかを確かめます。失敗すればアラートとメールで知らせます
Drive とのずれが積み上がる日次の全件突き合わせ 稼働中未複製・版のずれ・名前や場所の食い違いを日次の処理で直します。直接置かれたファイルと Drive 側での削除は検知して一覧に出します
05

定期レビューのサイクルReview Cadence

自動処理とアラートで大半は拾えますが、「起きなかったこと」や「じわじわ変わること」は人が定期的に見ないと気づけません。日次から年次までの見張りのサイクルと、それぞれの持ち場です。

Review Cadence
頻度見るもの持ち場
日次未対応アラートの件数(重大なものを優先)、日次の自動処理が成功しているか、検査・同期・配信の計器システム管理者
週次共有リンクの異常検知の確認と、必要に応じた強制無効化。デイリーサマリが届いているかの確認システム管理者
月次保管容量と費用の推移、長く使われていない Box とアカウントの洗い出し、ウイルス検出訓練の結果システム管理者
四半期バックアップからの復元演習(実際に戻せるかを試す)、稼働率目標の振り返りエンジニア(結果は管理者と共有)
年次鍵・資格情報の一括交代、災害復旧訓練、稼働率目標の見直し、無効化から 5 年たったアカウントの確認エンジニア + システム管理者

月次・年次の一部(保管容量と費用の推移、長く使われていない Box とアカウントの洗い出し、鍵の一括交代、5 年経過したアカウントの確認)は、それぞれを扱う管理画面 実装予定 · Step 4b ができてから本格化します。それまでは、必要に応じてエンジニア側で数字を出してお渡しします。

日次の確認について: 全体を 1 画面で見渡すダッシュボードは 実装予定 · Step 4b です。それまでは、管理ヘッダの未対応アラート件数と、各画面の上段にある計器で確認します。計器は平常時に色がつかないため、色が出ている画面だけを追えば済みます。
06

費用と予算の見張りCost

松葉の運用費は、クラウドの利用料と外部サービスの利用料の合計です。使った分だけかかる部分と、使わなくてもかかる部分があります。予算を超えそうになるとメールが届きますが、止まるわけではありません。

主な費目Where It Goes

Cost Structure
費目内容かかり方
画面と業務処理アプリ本体を動かすサーバ(matsuba-web / matsuba-api)運用では常時
ウイルス検査検査を行うサーバ(matsuba-scanner)。待たせないために常駐させると費用が上がります運用では常時
入口の防御負荷分散と、公開ホストへの攻撃をはじく仕組み常時
定期バッチ毎分の通知の送り出しを含む自動処理。毎分動かすことで通知の遅れを 1 分以内に抑えています常時
保管と転送ファイルの保管、ログの保管、外部へのデータ転送使った分だけ
データベースSupabase の契約(バックアップと時点復元を含む)定額
メール配送Resend の利用料。通数に応じて変わります使った分だけ

予算アラートの読み方Budget Alerts

クラウドの予算機能に月額の目標を設定してあり、目標に近づいたときと超えたときにメールが届きます 稼働中。ここで重要なのは、これは通知だけで、費用の上限に達してもサービスは止まりませんということです。止めてしまうと業務が突然使えなくなるため、意図してそうしています。届いたら、使われ方に想定外がないかを確認し、必要なら保持期間の見直しや予算額の変更を検討します。

急激な増加への備えとしては、予算アラートのほかに、サーバの最大台数の上限と、公開ホストへのアクセス回数の制限を設けています。保管容量が前日から大きく増えたときのアラートは 実装予定 · Step 4b です。予算額の変更や構成の見直しはエンジニア側の作業になります。

(画面の画像は掲載していません)
設定した月額の目標に対して、実績がどこまで積み上がっているかが見えている様子です。しきい値に達するとメールが飛びます。
07

変えられる値Tunable Defaults

この資料に出てくる日数や件数の多くは、運用しながら変えられる既定値です。どこで変えるかによって持ち場が分かれます。

Defaults & Where to Change Them
値現在の既定どこで変えるか
保持期間(削除されるまで)180 日(30 / 90 / 180 日 / 全社 HOLD から選択)Box ごとの上書きは 稼働中。全社の既定は 実装予定 · Step 4b
ゴミ箱保持期間(実体が消えるまで)90 日(30 / 90 / 180 日 / 無期限から選択)全社一律の設定 実装予定 · Step 4b
世代の保管数10 世代(Box ごとに 1〜20)Box の設定。超えた分を実際に消す処理は 実装予定 · Step 4b
共有リンクの有効期限発行時に 24 時間 / 7 日 / 14 日 / 任意から選択。最長 14 日発行時の選択は 稼働中。最長日数は構成側(エンジニア)
ファイルリクエストの受付上限累計 100 件 / 合計容量にも上限発行時の選択は 稼働中。既定値は構成側(エンジニア)
アップロードできるサイズ種類ごとに 10 段階。既定は 10 MB(動画 100 MB / 音声 20 MB)、引き上げの上限は 200 MB(動画・音声はさらに大きい値まで)全社の設定 実装予定 · Step 4b
受け付けない拡張子実行ファイル系と、マクロ付き・旧形式の Office 文書あわせて 22 種全社の設定 実装予定 · Step 4b
信頼済みデバイスの有効期間30 日。サインインのたびに期限が引き直されます構成側(エンジニア)
総当たりとみなすしきい値1 つのリンクに 1 分間で 20 回の本人確認失敗 / 同じ接続元から 5 分間に 100 アクセス構成側(エンジニア)
隔離ファイルの削除候補の目安隔離から 90 日画面上の目安。実際に消すかは管理者の判断 稼働中
月額予算とアラートの割合月額の目標と、知らせる割合(目標の手前と超過)構成側(エンジニア)
既定値の考え方: とくに保持期間 180 日とゴミ箱保持期間 90 日は、業務の実態に合わせて見直す前提の値です。長くすれば安心ですが保管費用が増え、短くすれば費用は下がるものの「あると思ったファイルが無い」が起きやすくなります。各機能の実装状態は開発の現在地にまとめてあります。