自動メンテナンスと長期運用/ Operations & Longevity
裏側で自動的に動いているもの、止まったときの気づき方、20 年を見据えた備え
松葉には、利用者の操作とは別に、決まった時刻や間隔で自動的に動く処理があります。通知を送り出す、Drive とのずれを直す、古い記録を片づける、といった裏方の働きです。この章では、何がいつ動いているか、止まったときにどう気づくか、そしてどこまでがシステム管理者の持ち場で、どこからがエンジニアの持ち場かを説明します。あわせて、想定運用年数 20 年に向けた備えと、費用の見張り方も扱います。
自動で動いているものAlways Running
現在、17 種の処理が決まった時刻・間隔で自動的に動いています。毎分の通知の送り出しから、月次の監査ログの退避まで。ここに載っているものが止まると、画面上は正常に見えたまま業務が滞るため、いずれも失敗を検知してアラートに上げる仕組みとセットになっています。
色の役割 — Teal の塗り:稼働中の処理 / 金茶の塗り:保管に関わる処理 / 枠線のみ:実装予定。
稼働中の 17 種Running Today
| 分類 | 処理 | 頻度 |
|---|---|---|
| 通知の配送 | 送信予定の払い出し — たまった通知を順に送り出します | 毎分 |
| 通知の配送 | 配送と滞留の見張り — 送れなかった知らせと、検査の詰まりを検知します | 5 分ごと |
| 通知の配送 | デイリーサマリの送信 — 受信者が指定した時刻にまとめて届けます | 30 分ごと |
| 受け渡し | 提出の確定 — ファイルリクエストの受付を締めて取り込みます | 5 分ごと |
| 検査 | ウイルス定義の取り寄せ — 検出パターンを最新に保ちます | 6 時間ごと |
| 検査 | ウイルス検出の訓練 — 試験用ファイルで検出できるか確かめます | 毎月 |
| Drive | Drive の定期補修 — 全 Box を突き合わせ、ずれを直します | 毎日 |
| Drive | Drive 同期の記録の掃除 — 保管期間を過ぎた履歴を消します | 毎日 |
| 観測 | Workspace の状態観測 — 停止・削除を検知し、接続を切ります | 毎日 |
| 補完 | サムネイルの作り直し — 生成できていない分を埋めます | 毎日 |
| 掃除 | 参加申請の期限切れ取消 — 期限を過ぎた申請を取り下げます | 毎日 |
| 掃除 | 共有リンクの ZIP の回収 — 期限切れの一時ファイルを消します | 毎日 |
| 掃除 | アクセス回数の記録の掃除 — 古い計測記録を消します | 毎日 |
| 掃除 | 信頼済みデバイスの記録の掃除 — 使われなくなった記録を消します | 毎日 |
| 掃除 | 通知履歴の掃除 — 一定期間を過ぎた記録を消します | 毎月 |
| 記録の保管 | 監査ログの退避 — 25 ヶ月を超えた分をストレージへ移します | 毎月 |
| アカウント | 5 年経過アカウントの列挙 — 完全消去の候補を洗い出します | 毎月 |
これから加わる 10 種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 側と松葉側をその場で突き合わせます。日次の全件の突き合わせを待たずに確かめたいときに使います。
止まったらどう気づくかWhen It Breaks
自動処理は、止まっても画面には何も出ません。だからこそ「気づく仕組み」を別に用意しています。松葉が自分で見つけた異常は 1 つの台帳(app_alerts)に集まり、そこから管理ヘッダの件数・一覧画面・メールの 3 つの経路で管理者に届きます。これと並走して、松葉の外側(クラウド)からも直接メールが届く経路が 2 つあります。
色の役割 — Teal:稼働中の経路 / 金茶:検知元と実装中 / 破線:アプリの外側(クラウド)の仕組み。①と②は同じ台帳を見ており、②が実装されるとバッジから一覧へそのまま移動できます。検知元のうち容量・課金にかかわる起票は実装予定です(下のアラート分類表を参照)。
アラート 28 種の分類Alert Catalogue
台帳に載るできごとは、現在 28 種です。重大度は警告と重大の 2 段階。同じできごとが続けて起きても 1 行にまとめられるため、台帳が同じ知らせで埋まることはありません。
セキュリティと検査(9 種)Security & Scanning
| 種類 | 知らせる内容 | 状態 |
|---|---|---|
| ウイルス検出 | アップロードされたファイルからウイルスを検出し、隔離しました | 稼働中 |
| ファイル内容の不一致 | 拡張子と中身が食い違うため、予防的に隔離しました | 稼働中 |
| 整合性の不一致 | アップロード中に内容が変わった疑いがあり、その版を破棄しました | 稼働中 |
| スキャン滞留 | 検査中のまま止まっているファイルが増えています | 稼働中 |
| スキャン失敗 | 再試行の上限まで検査が通りませんでした | 稼働中 |
| 検出テストの失敗 | 毎月の検出訓練で、試験用ファイルを検出できませんでした | 稼働中 |
| ウイルス定義の更新失敗 | 検出パターンの取り寄せが 3 回連続で失敗した、または取り寄せた検出パターンの鮮度が一定時間を超えました | 稼働中 |
| 共有リンクの総当たり | 1 つのリンクに、短時間で多数の本人確認の失敗が集中しています | 稼働中 |
| 同一 IP からの大量アクセス | 同じ接続元から短時間に大量のアクセスがあります | 稼働中 |
通知の配送と自動処理(4 種)Delivery & Jobs
| 種類 | 知らせる内容 | 状態 |
|---|---|---|
| 送信予定の行き詰まり | 送り出せないまま行き止まりになった知らせがあります | 稼働中 |
| バッチ処理の失敗 | 自動処理が失敗して終わりました | 稼働中 |
| 配信できない知らせの滞留 | 受け取り側で処理できない知らせがたまっています | 実装中 |
| メール不達率の上昇 | 届かなかったメールの割合が高まっています | 実装中 |
下 2 種の起票は、アラート一覧画面と同じ実装のまとまりに含まれます。それまでの間、この 2 つの故障は Cloud Monitoring 側の見張り(図 11 の④)と管理コンソールの通知状況画面で確認します。
Drive 同期(8 種)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
| 種類 | 知らせる内容 | 状態 |
|---|---|---|
| 保持期間削除の積み残し | 期限を過ぎたのに消えていないファイルがたまっています | 実装予定 · Step 4a |
| 保管費用が予算に接近 | 保管にかかる費用が、予算に近づきました | 実装予定 · Step 4b |
| 予算アラートの受信 | クラウドの予算アラートを受け取り、台帳に記録しました | 実装予定 · Step 4b |
| 保管容量の急な増加 | 保管しているデータ量が、前日から大きく増えました | 実装予定 · Step 4b |
鍵と証明書(1 種)Keys
| 種類 | 知らせる内容 | 状態 |
|---|---|---|
| 署名鍵の交代期限超過 | 年次で交代させる署名鍵が、期限を過ぎても使われています | 実装予定 · Step 4b |
Workspace(アカウント・2 種)Workspace
| 種類 | 知らせる内容 | 状態 |
|---|---|---|
| 停止ユーザの検知 | Workspace 側で停止・削除された方が、松葉では有効なままです | 稼働中 |
| 身元の不一致 | 同じメールアドレスの持ち主が入れ替わった可能性があります | 稼働中 |
28 種のうち、いま実際に上がるのは 19 種です。残りは、アラート一覧画面と同時に起票する 2 種と、保持期間の強制実行にあわせて加わる 3 種、管理画面の残りとあわせて加わる 4 種です。アラート一覧画面の実装で 1 種が加わり、全体は 29 種になります。
持ち場の線引きWho Handles What
アラートやメールを受け取ったとき、まずアプリ内のどこを見るかと、どこからエンジニアへ引き継ぐかの目安です。原則として、日常の対応はアプリ内で完結します。クラウド側の操作はエンジニアの持ち場です。
| 起きたこと | まず見る場所 | システム管理者ができること | エンジニアへ引き継ぐ目安 |
|---|---|---|---|
| ウイルスを検出した | 隔離ファイル | 内容の確認、専用環境での取り出し(理由必須)、恒久削除 | 同じ相手から繰り返し届くとき(送信元への対応) |
| 検査が詰まっている・失敗している | スキャンキュー | 個別またはまとめての再スキャン | 再スキャンしても解消しないとき(検査サービスの状態) |
| ウイルス定義が古い | スキャンキュー | 鮮度と連続失敗回数の確認 | 3 回連続の失敗が続くとき(取り寄せの調査) |
| Drive 同期が失敗している | Drive 同期管理 | 再投入、Box ごとの補修バッチ実行 | 呼び出し上限や Drive 側の権限が絡むとき |
| Drive に直接置かれたファイルがある | Drive 管轄外検知 | 置いた方への通知、運用ルールの周知 | 原則として不要 |
| 共有リンクに総当たりの疑いがある | 共有リンク全社一覧 | 強制無効化(理由必須・発行者へ通知) | 止めた後も同じ接続元からの試行が続くとき |
| 通知が届いていない | 通知状況 | 再送、メール配信の再開、本文の確認 | 成功率が全体的に落ちているとき(送信ドメインの評価) |
| Workspace 側で停止された方がいる | アラート一覧 実装中 | 松葉側での無効化、Box のオーナー付け替え | 原則として不要 |
| 予算アラートのメールが届いた | ストレージ 実装予定 · Step 4b | 容量の内訳の確認、保持期間や HOLD の見直しの検討 | 予算額の変更、構成の見直し(費用の削減) |
| 画面が開かない・エラーが続く | — | 発生時刻・操作・画面の記録 | 直ちに引き継ぎ(配備・構成・障害復旧) |
エンジニアが受け持つ作業Engineering Side
- 配備と構成の変更 — アプリの更新、サービスの規模や割り当ての変更。
- 自動処理の時刻と権限の設定 — 起動間隔の追加・変更、各サービスの権限付与。
- 監視ポリシーの設定 — 何をどのしきい値で見張り、どこへ通知するか。
- 鍵とシークレットの年次交代 — 署名鍵、外部サービスの資格情報、データベースの資格情報。
- 障害復旧と復元 — バックアップからの復元、時点を指定した巻き戻し。
20 年運用のリスクと備えLong-term Risks
松葉は最長 20 年の運用を前提に設計しています。長く動かすと、放っておくだけで静かに劣化していくものがあります。ここでは、そのうち情報漏洩の防止・保管容量の抑制・監査への説明責任に直結するものを取り上げます。
| 放っておくと | どう気づくか | 備え |
|---|---|---|
| 記録が肥大する | データベースの容量と応答速度の悪化 | 監査ログは月ごとに区切って 2 年保持し、25 ヶ月を超えた分はストレージへ退避 稼働中。通知履歴は一定期間で削除 稼働中 |
| 保管容量が膨らむ | 容量の推移と費用のアラート | 保持期間(既定 180 日・変更可)とゴミ箱保持期間(既定 90 日・変更可)による自動削除は 実装予定 · Step 4a です。受け皿となる期間の設定と、消してはいけないものを守る Box 単位の HOLD は先に動いています |
| 死蔵アカウントが残る | 日次の Workspace 観測と、週次のリマインダ 稼働中 | 停止・削除を検知した時点で接続を切り、アラートに上げます。無効化そのものは管理者の判断です。一括処理の画面は 実装予定 · Step 4b |
| 退職者の情報が残り続ける | 無効化からの経過年数(月次の列挙)稼働中 | 無効化から 5 年たったアカウントを毎月洗い出し、管理者の承認のうえ完全消去します。消去は記録が長期保存へ移り終えたことを確かめてから実行し、移した記録はそのまま残ります。承認の画面は 実装予定 · Step 4b |
| 鍵・資格情報が古くなる | 年次のカレンダー運用と、期限超過のアラート | 署名鍵は旧鍵を一定期間並行させて交代させます 実装予定 · Step 4b。外部サービスの資格情報は年次で一括交代(エンジニア) |
| メールが届かなくなる | 配信成功率と不達件数(通知状況画面)稼働中 | 30 日以内に 3 回届かなかった宛先は自動で送信を止め、Box のオーナーへ知らせます。本人が確認メールから再開できます 稼働中 |
| 検出できないウイルスが増える | ウイルス定義の鮮度と、毎月の検出訓練 稼働中 | 6 時間ごとに検出パターンを取り寄せ、毎月、試験用ファイルで検出できるかを確かめます。失敗すればアラートとメールで知らせます |
| Drive とのずれが積み上がる | 日次の全件突き合わせ 稼働中 | 未複製・版のずれ・名前や場所の食い違いを日次の処理で直します。直接置かれたファイルと Drive 側での削除は検知して一覧に出します |
定期レビューのサイクルReview Cadence
自動処理とアラートで大半は拾えますが、「起きなかったこと」や「じわじわ変わること」は人が定期的に見ないと気づけません。日次から年次までの見張りのサイクルと、それぞれの持ち場です。
| 頻度 | 見るもの | 持ち場 |
|---|---|---|
| 日次 | 未対応アラートの件数(重大なものを優先)、日次の自動処理が成功しているか、検査・同期・配信の計器 | システム管理者 |
| 週次 | 共有リンクの異常検知の確認と、必要に応じた強制無効化。デイリーサマリが届いているかの確認 | システム管理者 |
| 月次 | 保管容量と費用の推移、長く使われていない Box とアカウントの洗い出し、ウイルス検出訓練の結果 | システム管理者 |
| 四半期 | バックアップからの復元演習(実際に戻せるかを試す)、稼働率目標の振り返り | エンジニア(結果は管理者と共有) |
| 年次 | 鍵・資格情報の一括交代、災害復旧訓練、稼働率目標の見直し、無効化から 5 年たったアカウントの確認 | エンジニア + システム管理者 |
月次・年次の一部(保管容量と費用の推移、長く使われていない Box とアカウントの洗い出し、鍵の一括交代、5 年経過したアカウントの確認)は、それぞれを扱う管理画面 実装予定 · Step 4b ができてから本格化します。それまでは、必要に応じてエンジニア側で数字を出してお渡しします。
費用と予算の見張りCost
松葉の運用費は、クラウドの利用料と外部サービスの利用料の合計です。使った分だけかかる部分と、使わなくてもかかる部分があります。予算を超えそうになるとメールが届きますが、止まるわけではありません。
主な費目Where It Goes
| 費目 | 内容 | かかり方 |
|---|---|---|
| 画面と業務処理 | アプリ本体を動かすサーバ(matsuba-web / matsuba-api) | 運用では常時 |
| ウイルス検査 | 検査を行うサーバ(matsuba-scanner)。待たせないために常駐させると費用が上がります | 運用では常時 |
| 入口の防御 | 負荷分散と、公開ホストへの攻撃をはじく仕組み | 常時 |
| 定期バッチ | 毎分の通知の送り出しを含む自動処理。毎分動かすことで通知の遅れを 1 分以内に抑えています | 常時 |
| 保管と転送 | ファイルの保管、ログの保管、外部へのデータ転送 | 使った分だけ |
| データベース | Supabase の契約(バックアップと時点復元を含む) | 定額 |
| メール配送 | Resend の利用料。通数に応じて変わります | 使った分だけ |
予算アラートの読み方Budget Alerts
クラウドの予算機能に月額の目標を設定してあり、目標に近づいたときと超えたときにメールが届きます 稼働中。ここで重要なのは、これは通知だけで、費用の上限に達してもサービスは止まりませんということです。止めてしまうと業務が突然使えなくなるため、意図してそうしています。届いたら、使われ方に想定外がないかを確認し、必要なら保持期間の見直しや予算額の変更を検討します。
急激な増加への備えとしては、予算アラートのほかに、サーバの最大台数の上限と、公開ホストへのアクセス回数の制限を設けています。保管容量が前日から大きく増えたときのアラートは 実装予定 · Step 4b です。予算額の変更や構成の見直しはエンジニア側の作業になります。
変えられる値Tunable Defaults
この資料に出てくる日数や件数の多くは、運用しながら変えられる既定値です。どこで変えるかによって持ち場が分かれます。
| 値 | 現在の既定 | どこで変えるか |
|---|---|---|
| 保持期間(削除されるまで) | 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 日 | 画面上の目安。実際に消すかは管理者の判断 稼働中 |
| 月額予算とアラートの割合 | 月額の目標と、知らせる割合(目標の手前と超過) | 構成側(エンジニア) |