IBIANBANK ATLAS進入網銀

IAN'S BANKING LAB台北 · 持續建造中

我不是真的要
開一家銀行。

我只是想知道——一筆錢在網路上移動時,究竟需要多少層信任。

於是我從登入、餘額與轉帳開始,一路蓋到資料一致性、訊息事件、日終清算、監控與 VPS。IanBank 是我的數位銀行,也是我理解金融科技的方法。

01客戶體驗
02銀行業務
03資料一致性
04事件處理
05平台工程
06營運監控
01

BUILD LOG

這不是功能清單。
是我一路遇見的問題。

每一層架構都不是為了讓圖變複雜,而是因為我真的碰到一個不能忽略的問題。點子變成程式,程式再逼我學會代價。

CH.01

先讓錢算得準

我把所有金額從浮點數改成 BigDecimal 與 DECIMAL(19,4)。銀行可以慢一點,但不能把 0.1 + 0.2 算錯。

12 個金額欄位完成精度遷移
CH.02

再讓轉帳只發生一次

手機網路會重送、使用者會連點。我加入冪等鍵,讓同一個意圖無論送來幾次,都只扣一次錢。

Idempotency-Key · 24 小時結果快取
CH.03

處理同時發生的世界

同一個帳戶可能同時收到多筆請求。我用 Redis 分散式鎖、資料庫樂觀鎖與重試機制,把競爭變成可控制的順序。

分散式鎖 + @Version 最後防線
CH.04

看見系統正在呼吸

服務上線不代表故事結束。我加入 Prometheus、Grafana、Loki,讓錯誤率、延遲和日誌能被一起看見。

Metrics · Dashboard · Logs
CH.05NOW

模擬一家銀行怎麼收工

我繼續往日終批次、清算檔案、稽核紀錄與帳戶凍結走。因為真正的銀行不只服務客戶,也必須能對帳與追責。

EOD · Settlement · Audit
02

THE LIFE OF A TRANSFER

我最在意的,
始終是這一筆錢。

轉帳按鈕只需要一秒,背後卻是一條不能斷的信任鏈。這是我用 IanBank 親手拆解後,留下的六個控制點。

CONTROL POINT 01Kong

01

守住入口

先限制異常流量,讓核心服務不必直接面對所有請求。

信任鏈進度 1 / 6
03

MY TRADE-OFFS

架構不是答案。
是我願意承擔的代價。

這裡不假裝每個選擇都是最佳實務。它們是在「一個人維護、真的上線、想摸懂全棧」的條件下,我做出的判斷。

A

模組化單體

我選了

把銀行業務留在一個 Spring Boot 核心。

我接受

我放棄了看起來更時髦的微服務;換來一個人真的維護得動的系統。

B

自建 VPS

我選了

資料庫、快取、訊息、Gateway 與監控都自己養。

我接受

它不是最省事的上線方式,卻是最能摸到每一層的學習方式。

C

錢沒有近似值

我選了

金額一律 BigDecimal 與 DECIMAL(19,4)。

我接受

程式碼更囉嗦,但金融系統不能接受『差不多正確』。

WHY I KEEP BUILDING

「銀行真正的產品有兩個:
一個是給客戶用的 App,
另一個是我自己學會怎麼經營一家科技銀行。

IanBank 不處理真錢,也不假裝取代真實銀行。它存在,是為了把每一個看不見的金融系統問題,變成我能親手驗證的東西。

NEXT CHAPTER

銀行還在營業。
我也還在學。

下一步,我會讓 Atlas 接上經過整理的唯讀營運摘要,並持續記下每一個新的設計決策。