引言
1. 執行摘要
本案例研究分析了虛構金融機構「BigBank」的網上銀行系統的架構設計。此專案的目標是讓個人銀行客戶能透過網頁與行動裝置,安全、便捷且跨管道地存取其帳戶,同時整合現有的傳統核心銀行基礎設施。
該架構以C4模型(容器圖)進行記錄,用以呈現高階的技術選擇,以及系統中各容器(應用程式、資料庫等)之間的互動方式。

2. 商業挑戰
-
傳統系統整合:銀行擁有一套強大但較舊的「主機銀行系統」,儲存客戶資料的核心真實資料。新系統必須能公開這些資料,而無需立即取代主機系統。
-
跨管道存取:客戶要求能透過桌面瀏覽器與行動裝置存取服務。
-
安全性:處理敏感的金融資料,需要嚴格的驗證機制與安全的通訊管道。
3. 架構解決方案(C4容器視圖)
該解決方案設計為一個解耦的系統,其中表示層與商業邏輯層及資料層分離。
A. 使用者介面層(前端)
該系統為個人銀行客戶:
-
單頁面應用程式(SPA):
-
技術: JavaScript 和 Angular。
-
角色: 這運行在客戶的網頁瀏覽器中。它提供完整的網上銀行功能。它是一個動態、響應式的介面,能與後端非同步通訊。完整 套件的網上銀行功能。它是一個動態、響應式的介面,能與後端非同步通訊。
-
-
網頁應用程式:
-
技術: Java 和 Spring MVC。
-
角色: 這作為網路體驗的入口點。它提供靜態內容(HTML/CSS/JS),並主機單頁面應用程式。它作為 Angular 應用程式的「啟動器」。
-
-
行動應用程式:
-
技術: Xamarin(支援跨平台開發,可能是 iOS 和 Android)。
-
角色: 提供針對行動裝置優化的「有限子集」功能。這表示複雜任務(如設定國際匯款)可能僅限於完整的 Web/SPA 界面,而常見任務(查詢餘額)則可在行動裝置上使用。
-
B. 商務邏輯層(後端)
-
API 應用程式:
-
技術: Java 和 Spring MVC。
-
角色: 這是架構的中樞神經系統。它作為一個API 網關 或前端後端(BFF).
-
功能: 它向 Web 和行動客戶端提供一個JSON/HTTPS API 。它處理驗證、授權以及資料請求的協調。
-
C. 資料與整合層
-
資料庫:
-
技術: Oracle 資料庫結構。
-
角色: 儲存網上銀行專用資料。包括使用者註冊資訊,雜湊驗證憑證 (安全最佳實務),以及存取記錄。它不會儲存實際的銀行餘額(這些資料位於主機系統中)。儲存實際的銀行餘額(這些資料位於主機系統中)。
-
通訊: API 應用程式透過JDBC.
-
-
主機銀行系統:
-
角色: 記錄系統。它儲存核心銀行資訊(客戶、帳戶、交易)。
-
通訊: API 應用程式使用XML over HTTPS。這表示主機系統很可能是一個傳統的 SOAP 為基礎的服務,或是一個需要結構化 XML 資料交換的舊系統。
-
-
電子郵件系統:
-
技術: Microsoft Exchange。
-
角色: 處理通知。
-
通訊: API 應用程式透過SMTP 傳送電子郵件至 Exchange 伺服器,再由伺服器將郵件傳送給客戶。
-
4. 關鍵資料流程與使用者旅程
情境 1:透過網頁瀏覽器登入
-
該個人銀行客戶導航至
bigbank.com/ib使用 HTTPS。 -
該請求會觸發網頁應用程式(Java/Spring MVC)。
-
網頁應用程式會將單頁面應用程式(Angular)傳送到客戶的瀏覽器。
-
客戶在 SPA 中輸入憑證。
-
SPA 會發出 API 請求(
JSON/HTTPS)至API 應用程式. -
API 應用程式會將憑證與資料庫(透過 JDBC)。
-
成功後,SPA 會請求帳戶餘額。API 應用程式會從主機銀行系統 (
XML/HTTPS取得此資料,並回傳給 SPA。
情境 2:行動交易通知
-
客戶透過行動應用程式(Xamarin)。
-
應用程式會向 發送請求API 應用程式.
-
API 應用程式會與 處理付款主機系統.
-
API 應用程式會透過向 發送 SMTP 請求來觸發確認郵件電子郵件系統 (Exchange)。
-
客戶會收到電子郵件通知。
5. 技術亮點與最佳實務
-
關注點分離: 該圖表明確地將「網路銀行」專屬資料(Oracle 資料庫)與「核心銀行」資料(主機系統)分開。這可防止網頁層直接接觸核心財務帳冊。
-
通訊協定轉換: API 應用程式扮演翻譯的角色。現代前端使用 JSON,但舊式後端使用 XML。API 應用程式彌補了這項差距。
-
安全性: 憑證會以「雜湊」方式儲存在資料庫中,確保即使資料庫遭到入侵,原始密碼也不會外洩。所有外部通訊均使用 HTTPS.
-
可擴展性: 透過使用單頁應用程式(Angular)與解耦的 API,前端可獨立於後端邏輯進行擴展。













