上級者編:壊れ方から設計する
上級者は、正常系を詳しくする人ではありません。競合・権限昇格・部分障害・誤操作・大量処理を先にモデル化し、複数の防御と検証可能な証拠へ変える人です。
境界、transaction、並行制御、脅威、テスト、障害対応をFailure Firstで学ぶ。
Prerequisite: FOUNDATION / BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 上級設計レビューの視点
- 予防・検知・復旧の多層化
- 不確実性を安全な判断へ変える方法
PLAIN LANGUAGE
まず、ここだけつかむ
上級者は、失敗・攻撃・競合・大量処理を設計入力として扱います。
予防だけでなく、すり抜けた異常の検知と安全な復旧までを同じ設計に含めます。
実装済み保証と未実装の運用能力を分け、不確実性を隠しません。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
Failure mode
どのように壊れ、何が観測されるかの型です。
『障害』を一括りにせず対策とtestを選べます。
timeout、二重実行、deadlock、audit欠落を分けます。
Blast radius
1回の失敗が影響する顧客・金額・機能・時間です。
完全防止できない失敗の被害を限定します。
上限、権限分離、段階release、停止機能で考えます。
Evidence map
判断に使える業務・会計・監査・運用証拠の関係図です。
障害時に矛盾した数字の正解を判断するためです。
transfer、journal、audit、reconciliationを関連づけます。
上級者が追加する4つの地図
| 地図 | 記載するもの | 見つけたい問題 |
|---|---|---|
| Concurrency map | 同じ行・勘定・契約を更新する全経路 | lost update、deadlock、二重処理 |
| Trust map | identity、role、schema、function owner、外部入力 | 認可突破、権限昇格、error漏洩 |
| Evidence map | 業務record、journal、audit、log、metric、照合 | 説明不能、検知漏れ、証拠の矛盾 |
| Failure map | 依存先、timeout、retry、部分成功、復旧順 | cascade failure、復旧時の重複・欠落 |
防御は3段階で考える
| 段階 | 問い | 例 |
|---|---|---|
| Prevent | そもそも壊せないか | constraint、privilege、lock、idempotency |
| Detect | すり抜けたら早く分かるか | integrity、reconciliation、audit alert |
| Recover | 安全に戻し、説明できるか | reversal、replay、runbook、復元後照合 |
推奨する学習順
- 01同時実行と競合制御
- 02脅威モデルと権限レビュー
- 03会計保証と証拠の設計
- 04信頼性設計と障害対応
- 05既存実装のRed Team review
- 06防御・test・運用改善案を優先順位化
上級修了課題:月末の大量満期を設計する
同じ日に10万件の定期預金が満期を迎える想定で、worker分割、順序、lock範囲、idempotency、interest rule、会計集計、backpressure、再実行、監視、照合、顧客通知、運用停止判断を設計してください。
単一RPCの正しさだけでなく、限界時にも重要業務を守り、途中から安全に再開できることが上級課題です。
実際のMinibankでは
Minibankは金融不変条件を観察する学習環境であり、大規模銀行の容量・外部決済・DRを再現していません。上級編では、実装済み保証と未実装の運用能力を明確に分けます。
問題を発見した時は、症状だけでなくroot cause、防御欠落、検出可能性、影響範囲、修正後に必要な回帰testまで説明してください。
CHECK YOUR UNDERSTANDING
3問で理解チェック
答えを頭の中で考えてから、各項目を開いて確認してください。
Q1上級者はすべての障害を予測できますか?
できません。代表的failure modeを備え、未知の異常も早く検知・限定・復旧できる構造を作ります。
Q2constraintがあれば監視は不要ですか?
不要ではありません。constraint外の誤rule、依存先障害、運用異常を検知する必要があります。
Q3Minibankのtestが全て通れば本物の銀行にできますか?
できません。外部決済、容量、DR、規制、組織運用など未実装の能力が多数あります。
完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。
SOURCE TRAIL
根拠と関連教材
CURRENT IMPLEMENTATIONは確認したrepository内の実装です。HISTORICAL IMPLEMENTATIONは導入・修正の履歴で、後続migrationによる再定義があり得ます。RELATED LESSONは教材への案内で、実装の一次Sourceではありません。ASSUMPTIONは仮定、UNKNOWNは未確認を表します。
確認基点: d02eae8914f39cbf06bfe422dc39c71886f82b3e / 2026-09-11。稼働環境への適用確認: UNKNOWN。パス実在の自動検査と、記述した技術的事実の確認は別です。
- HISTORICAL IMPLEMENTATION
supabase/migrations/競合・権限・会計保証の実装 - CURRENT IMPLEMENTATION
scripts/regression/既知failure modeの再発防止 - CURRENT IMPLEMENTATION
src/app/admin/運用・証拠・管理control plane