守りを重ねて、失敗を終わりにしない

Day6 では、世界を「壊されても戻せる形」にする話をしました。荒らしや事故を完全にゼロにすることはできません。だから、ひとつの守りだけに賭けるのではなく、性質の違う守りを重ねます。

ここで大事なのは、Prism のようなブロックログ、全体バックアップ、権限がそれぞれ別の仕事を持っていることです。どれか一つを強くするだけでは足りません。細かく戻す道、世界全体を戻す道、そもそも壊しにくくする道を分けて持ちます。

ブロックログは、一部だけ戻すための記録

ブロックログは、世界の中で起きた変更をあとから追えるようにする仕組みです。誰かがブロックを置いたり壊したりしたとき、その変化を記録しておくと、問題が起きた範囲だけを調べられます。

この記録があると、全部を昔の状態に戻さなくて済みます。壊された建物だけを戻し、その間にほかの人が作ったものは残す。Minecraft のように多くの人が同じ世界で作業する場所では、この細かさが効きます。

Prism は、ブロック単位で過去をたどる道具

Prism は、Minecraft の世界で起きた変更を記録し、あとから調べたり戻したりするためのプラグインです。誰が、いつ、どのブロックを変えたのかをたどれると、問題の範囲を絞れます。

大事なのは、Prism が「世界全体を昔に戻す」道具ではないことです。荒らされた建物だけ、短い時間だけ、特定の操作だけを戻すような、細かい復旧に向いています。

ロボの技術メモ:ロールバック
変更をなかったことにして、前の状態へ戻すことです。ブロックログを使うロールバックでは、世界全体ではなく、特定の範囲や期間の変更だけを戻せます。

全体バックアップは、世界まるごと戻す保険

全体バックアップは、ワールドデータと必要な周辺情報をまとめて、ある時点の状態として残す考え方です。ブロックログでは対応しきれない大きな事故、データの壊れ方、設定ミスが起きたときに、少し前の安全な状態へ戻す道になります。

手段としては、世界を一つのまとまりとして保存し、必要になったらそのまとまりから復元します。毎回すべてを丸ごと保存する方法もあれば、前回から変わった分を中心に保存する方法もあります。どちらでも、復元できることを確認してはじめて保険になります。

ただし、全体バックアップは魔法ではありません。古いバックアップに戻せば、その後に作られたものも失われます。だから、普段の小さな復旧には Prism のようなブロックログ、大きな事故には全体バックアップ、という役割分担が必要です。

ロボの技術メモ:差分バックアップ
毎回すべてを保存するのではなく、前回から変わった分を中心に保存する考え方です。時間と容量を節約しながら、過去の状態へ戻る道を残せます。

権限は、最初から壊しにくくする仕組み

権限は、「誰が何をできるか」を分ける仕組みです。はじめて来た人、よく遊んでいる人、運用を手伝う人では、できる操作を同じにしないほうが安全です。

大事な場所は、自由に作れる場所とは別に扱います。全員を疑うためではありません。失敗したときの影響を小さくして、安心して遊べる場所を増やすためです。

ロボの技術メモ:保護領域
特定の場所にルールをかけ、壊す・置く・使うといった操作を制限する考え方です。入口や共有設備のように、壊れると多くの人が困る場所で役に立ちます。

復元テストは、守りが本当に動くか確かめること

守りの仕組みは、入れただけでは完成しません。壊れたときに戻せると思っていたのに、実際には戻せない、ということが一番危険です。

だから、本番の世界に反映する前に、実験用の環境で壊し、戻し、結果を見る必要があります。復元できることを一度確かめておくと、事故が起きたときに迷いが減ります。

ロボの技術メモ:最小権限
その人や仕組みに必要な分だけ権限を渡す考え方です。便利だから何でもできるようにする、ではなく、必要な操作だけを許すことで失敗の広がりを小さくします。

多層防御は、ひとつの失敗で終わらせない考え方

ブロックログ、バックアップ、権限は、同じ問題を別の角度から守っています。権限で壊しにくくし、ブロックログで細かく戻し、バックアップで大きな事故に備える。ひとつが抜けても、ほかの層が残ります。

Day5 の 三層防御 と、基本編の 壊されても、元に戻せる も同じ発想です。世界を守るとは、絶対に失敗しない仕組みを作ることではなく、失敗が起きても終わらない形にすることです。

← 技術記事の一覧へ  ・  ← Day6 に戻る