学習・技術検証用デモ — 本システムは実際の銀行サービスではありません。

公開情報をもとに構築した教育目的のシステムです。実在する個人情報・口座情報・機密情報・認証情報等を入力しないでください。

ミニ銀行ACADEMY SYSTEM LEARNING
教材メニュー
学習進捗0 / 134
あと134項目
ADVANCED · 発展COURSE 04 · SOFTWARE ENGINEERING

上級者編:壊れ方から設計する

上級者は、正常系を詳しくする人ではありません。競合・権限昇格・部分障害・誤操作・大量処理を先にモデル化し、複数の防御と検証可能な証拠へ変える人です。

07 / 11
SOFTWARE ENGINEERING · ソフトウェア工学

境界、transaction、並行制御、脅威、テスト、障害対応をFailure Firstで学ぶ。

Prerequisite: FOUNDATION / BANKING SYSTEM

LEARNING GOALS

このページで学ぶこと

  • 上級設計レビューの視点
  • 予防・検知・復旧の多層化
  • 不確実性を安全な判断へ変える方法

PLAIN LANGUAGE

まず、ここだけつかむ

1

上級者は、失敗・攻撃・競合・大量処理を設計入力として扱います。

2

予防だけでなく、すり抜けた異常の検知と安全な復旧までを同じ設計に含めます。

3

実装済み保証と未実装の運用能力を分け、不確実性を隠しません。

DIFFICULT PARTS, STEP BY STEP

難しいポイントを、順番にほどく

専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。

01

Failure mode

やさしく言うと

どのように壊れ、何が観測されるかの型です。

なぜ必要?

『障害』を一括りにせず対策とtestを選べます。

Minibankでは

timeout、二重実行、deadlock、audit欠落を分けます。

02

Blast radius

やさしく言うと

1回の失敗が影響する顧客・金額・機能・時間です。

なぜ必要?

完全防止できない失敗の被害を限定します。

Minibankでは

上限、権限分離、段階release、停止機能で考えます。

03

Evidence map

やさしく言うと

判断に使える業務・会計・監査・運用証拠の関係図です。

なぜ必要?

障害時に矛盾した数字の正解を判断するためです。

Minibankでは

transfer、journal、audit、reconciliationを関連づけます。

上級者が追加する4つの地図

地図記載するもの見つけたい問題
Concurrency map同じ行・勘定・契約を更新する全経路lost update、deadlock、二重処理
Trust mapidentity、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、復元後照合

推奨する学習順

  1. 01同時実行と競合制御
  2. 02脅威モデルと権限レビュー
  3. 03会計保証と証拠の設計
  4. 04信頼性設計と障害対応
  5. 05既存実装のRed Team review
  6. 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 IMPLEMENTATIONsupabase/migrations/競合・権限・会計保証の実装
  • CURRENT IMPLEMENTATIONscripts/regression/既知failure modeの再発防止
  • CURRENT IMPLEMENTATIONsrc/app/admin/運用・証拠・管理control plane