SCS-021 系統效能與非功能(Performance/NFR)程式設計規格(跨域)
| 項目 |
內容 |
| 文件編號 |
SCS-021 |
| 版本 |
1.0 |
| 狀態 |
已核定(規格先行·跨域) |
| 對應需求 |
BRD-003 效能(授權 P99 ≤ 200ms 等)、吞吐(≥ 1,000 TPS)、容量規劃、效能測試(12 項,對應 TRP-001 §10) |
| 技術棧 |
Java 21 + Spring Boot 4.1.1(參 CSP-006);Redis 8 快取;Kafka 4.3.1 非同步;Oracle 權威+Postgres 讀模型(CQRS) |
| 關聯文件 |
BRD-003、SAD-006 §4(容量)、TRP-001 §10、CSP-006
|
1. 對應需求(效能類 NFR,實測目標值)
| 類別 |
指標 |
目標 |
來源 |
| 效能 |
本行卡授權處理 P99 |
≤ 200 ms |
BRD-003(G4/G5) |
| 效能 |
交易路由決策 P99 |
≤ 5 ms |
BRD-003(G4/G5) |
| 效能 |
端到端授權(含機構往返)P95 |
≤ 500 ms |
BRD-003(G5) |
| 吞吐 |
授權交易(未分庫分表) |
≥ 1,000 TPS |
BRD-003(G5) |
| 吞吐 |
即時支付引擎 |
> 2,000 TPS |
BRD-003(G5) |
其餘 NFR(可用性、容量規劃 3 項、效能測試 12 項)見 BRD-003 完整追蹤表,均對應 SAD-006 與 TRP-001 §10。
2. 效能設計策略
| 策略 |
說明 |
對應技術 |
| 快取 |
高頻讀取(產品參數、額度、卡狀態)經 Redis 8 快取,降低 Oracle 壓力 |
Redis 8(CSP-006) |
| 連線池 |
HikariCP 連線池調校,避免連線耗盡 |
Spring Boot 4.1.1 |
| 非同步 |
通知、點數、對帳經 Kafka 事件解耦,削峰 |
Kafka 4.3.1(CSP-006) |
| CQRS 讀寫分離 |
寫側 Oracle(CC_*);讀側 Postgres(proj/rpt)承接高頻查詢 |
SAD-003 §9 |
| Saga 協調 |
跨服務長事務經 common-saga 狀態機,避免分散式鎖定 |
common-saga |
| 閘道限流 |
api-gateway(8100)限流/熔斷,保護下游 |
Spring Cloud 2025.1.3 |
3. 關鍵路徑效能目標
-
授權路徑:
api-gateway → bff → authorization-service →(快取命中)本地決策;P99 ≤ 200ms。Stand-in 降級時仍須維持目標(SCS-001 §8)。
-
路由決策:≤ 5ms(純記憶體/快取查詢)。
-
端到端:含機構(VISA/MC/NCCC)往返 P95 ≤ 500ms。
4. 容量與壓測
- 容量模型:
SAD-006 §4(容量規劃,對應 BRD-003 容量規劃 3 項)。
- 壓測:依
TRP-001 §10 效能測試(12 項)產出 P95/P99 曲線,對比 §1 門檻。
- 線性擴展:領域服務無狀態,橫向擴展(K8s HPA)因應 TPS 目標。
5. 測試案例(對應 TRP-001 §10)
- 授權 P99/P95 壓測(
BRD-003 效能目標)
- 吞吐測試(≥ 1,000 TPS 授權、> 2,000 TPS 即時支付)
- 快取失效/下游降級下的效能退化邊界
6. 已知限制(誠實揭露)
- 上表 ≤ 200ms/≤ 500ms/≥ 1,000 TPS 為
BRD-003 目標值;實測須待服務實作後壓測驗證,目前尚無實測數據(規格先行)。
- 分庫分表(sharding)與否影響吞吐上限(
BRD-003 註「未分庫分表」前提下 ≥ 1,000 TPS),若客戶要求更高須提 CR。
- 容量模型(
SAD-006 §4)之具體假設(成長率、尖峰因子)待 SA 凍結。