Nghiên cứu trường hợp Mô hình C4: Hệ thống Ngân hàng Trực tuyến của Big Bank plc

1. Tóm tắt cấp cao

Nghiên cứu trường hợp này ghi lại kiến trúc của Ngân hàng Trực tuyến cho Big Bank plc. Hệ thống được thiết kế để cho phép khách hàng cá nhân xem số dư tài khoản, xem lịch sử giao dịch và thực hiện thanh toán thông qua trình duyệt web và thiết bị di động.

Kiến trúc này tuân theo Mô hình C4 (Phạm vi, Thùng chứa, Thành phần, Mã nguồn), cung cấp cái nhìn phân cấp về hệ thống từ các khái niệm trừu tượng cấp cao xuống đến cơ sở hạ tầng triển khai.


2. Mức độ 1: Sơ đồ Bối cảnh Hệ thống

Mục tiêu: Hiển thị hệ thống trong bối cảnh người dùng và các phụ thuộc bên ngoài.

Sơ đồ tham khảo: Hình ảnh 4 (Chính) và Hình ảnh 1 (Bản xem đơn giản).

Phân tích

Hệ thống Ngân hàng Trực tuyến nằm trong ranh giới của Big Bank plc doanh nghiệp. Nó hoạt động như một kênh số cho Khách hàng Ngân hàng Cá nhân.

C4 Model System Context Diagram for Internet Banking System

  • Người dùng (Nhân vật):

    • Khách hàng Ngân hàng Cá nhân: Người dùng chính tương tác với hệ thống để xem số dư và thực hiện thanh toán.

    • Nhân viên Hỗ trợ Khách hàng: Nhân viên ngân hàng hỗ trợ khách hàng (được hiển thị trong Hình ảnh 4).

    • Nhân viên Hậu cần: Nhân viên hành chính và hỗ trợ (được hiển thị trong Hình ảnh 4).

  • Hệ thống bên ngoài:

    • Hệ thống ngân hàng mainframe: Hệ thống lưu trữ dữ liệu chính thức. Nó lưu trữ tất cả thông tin cốt lõi về ngân hàng (khách hàng, tài khoản, giao dịch). Hệ thống Ngân hàng trực tuyến dựa vào hệ thống này để lấy dữ liệu chính xác.

    • Hệ thống thư điện tử: Hệ thống Microsoft Exchange nội bộ được sử dụng để gửi thông báo (ví dụ: đặt lại mật khẩu, xác nhận) đến khách hàng.

    • Máy ATM: Một hệ thống phần mềm riêng biệt cho phép rút tiền mặt (được hiển thị trong Hình 4 để minh họa hệ sinh thái rộng lớn hơn).

Mối quan hệ chính: Khách hàng tương tác với Hệ thống Ngân hàng Trực tuyến, hệ thống này lại đóng vai trò như một lớp che giấu cho hệ thống Mainframe cũ để truy xuất dữ liệu và xử lý thanh toán.


3. Mức 2: Sơ đồ Container

Mục tiêu: Để thể hiện các lựa chọn công nghệ cấp cao và cách phân bổ trách nhiệm trong toàn bộ hệ thống.

Sơ đồ tham khảo: Hình 2.

Phân tích

Hệ thống ‘Ngân hàng Trực tuyến’ từ Mức 1 được phân tách thành năm container riêng biệt (đơn vị triển khai).

C4 Model Container Diagram for Internet Banking System

  1. Ứng dụng Web (Java và Spring MVC):

    • Vai trò: Chức năng là điểm vào cho người dùng web.

    • Chức năng: Cung cấp nội dung tĩnh (HTML/CSS/JS) và Ứng dụng Trang Đơn (SPA) đến trình duyệt khách hàng thông qua HTTPS.

  2. Ứng dụng Trang Đơn (JavaScript và Angular):

    • Vai trò: Logic phía client đang chạy trong trình duyệt.

    • Chức năng: Cung cấp đầy đủ các chức năng ngân hàng trực tuyến. Nó thực hiện các lời gọi API đến phía backend.

  3. Ứng dụng Di động (Xamarin):

    • Vai trò: Ứng dụng phía client dành cho thiết bị di động.

    • Chức năng:Cung cấp một tập hợp chức năng hạn chế so với ứng dụng web. Nó cũng thực hiện các lời gọi API đến backend.

  4. Ứng dụng API (Java và Spring MVC):

    • Vai trò: Logic nền tảng phía backend.

    • Chức năng: Cung cấp một API JSON/HTTPS. Nó xử lý xác thực, logic kinh doanh và giao tiếp với các hệ thống bên ngoài (Cơ sở dữ liệu, Mainframe, Email).

  5. Cơ sở dữ liệu (Schema cơ sở dữ liệu Oracle):

    • Vai trò: Bền vững dữ liệu.

    • Chức năng: Lưu trữ thông tin đăng ký người dùng, thông tin xác thực đã mã hóa và nhật ký truy cập.Ghi chú: Dữ liệu ngân hàng cốt lõi vẫn nằm trong Mainframe.

Mối quan hệ chính: Cả ứng dụng web (thông qua SPA) và ứng dụng di động đều giao tiếp với Ứng dụng API. Ứng dụng API sau đó giao tiếp với Cơ sở dữ liệu để dữ liệu cục bộ và Mainframe để dữ liệu ngân hàng cốt lõi.


4. Mức 3: Sơ đồ thành phần

Mục tiêu: Để phóng to vào một container cụ thể (ứng dụng API) nhằm hiển thị các khối xây dựng bên trong của nó.

Sơ đồ tham khảo: Hình ảnh 3.

Phân tích

Sơ đồ này phân tích Ứng dụng API container thành các thành phần logic.

C4 Model Component Diagram for Internet Banking System

  • Controllers (Controllers Rest Spring MVC): Chúng xử lý các yêu cầu HTTP đến.

    • Bộ điều khiển Đăng nhập: Xử lý xác thực người dùng.

    • Bộ điều khiển Khôi phục mật khẩu: Xử lý quy trình khôi phục mật khẩu.

    • Bộ điều khiển Tóm tắt tài khoản: Lấy dữ liệu tài khoản cho người dùng.

  • Thành phần (Spring Beans): Chúng chứa logic kinh doanh.

    • Thành phần Bảo mật: Xử lý đăng nhập và thay đổi mật khẩu. Được sử dụng bởi các bộ điều khiển Đăng nhập và Khôi phục mật khẩu.

    • Thành phần Thư điện tử: Xử lý gửi thư điện tử. Được sử dụng bởi bộ điều khiển Khôi phục mật khẩu.

    • Lớp bao bọc Hệ thống Ngân hàng Mainframe: Một lớp bao quanh hệ thống Mainframe bên ngoài. Nó chuyển đổi các lời gọi API nội bộ thành định dạng XML/HTTPS yêu cầu bởi Mainframe cũ. Được sử dụng bởi bộ điều khiển Tóm tắt tài khoản.

Mối quan hệ chính: Thành phần Bộ điều khiển Tóm tắt tài khoản sử dụng Lớp bao bọc Hệ thống Ngân hàng Mainframe để lấy dữ liệu từ Mainframe bên ngoài, minh họa sự tách biệt giữa lớp API và lớp tích hợp.


5. Mức độ 4: Sơ đồ Triển khai

Mục tiêu: Để hiển thị cách các container phần mềm được ánh xạ vào cơ sở hạ tầng vật lý.

Sơ đồ tham khảo: Hình ảnh 5.

Phân tích

Sơ đồ này minh họa môi trường chạy chương trình.

C4 Model Deployment Diagram for Internet Banking System

  • Phía Khách hàng:

    • Thiết bị di động:Chạy ứng dụng di động (iOS/Android).

    • Máy tính:Chạy trình duyệt web (Chrome/Firefox/Safari/Edge) chứa ứng dụng đơn trang.

  • Trung tâm dữ liệu Big Bank plc:

    • Máy chủ web (bigbank-web*):** Các nút Ubuntu 16.04 LTS đang chạy Apache Tomcat 8.x.

      • Chứa Ứng dụng web và Ứng dụng API.

    • Máy chủ cơ sở dữ liệu (bigbank-db01/02): Các nút Ubuntu 16.04 LTS đang chạy Oracle 12c.

      • Oracle – Chính: Cơ sở dữ liệu chính.

      • Oracle – Phụ: Một bản sao cho dự phòng/tính sẵn sàng cao.

Mối quan hệ chính: Ứng dụng di động và trình duyệt web kết nối qua internet đến Ứng dụng API được lưu trữ trên Tomcat. Ứng dụng API kết nối qua JDBC đến cụm cơ sở dữ liệu Oracle.


6. Các khái niệm và nguyên tắc chính được áp dụng

Dựa trên nghiên cứu trường hợp này, các nguyên tắc mô hình hóa C4 sau đây đã được áp dụng:

  1. Mức độ trừu tượng: Mô hình thành công chuyển từ “Ai sử dụng nó?” (Bối cảnh) đến “Nó được tạo nên từ gì?” (Thùng chứa) đến “Nó được tổ chức như thế nào?” (Thành phần) đến “Nó chạy ở đâu?” (Triển khai).

  2. Giới hạn phạm vi:

    • Ở Mức 1, ranh giới “Big Bank plc” rõ ràng phân biệt các hệ thống nội bộ với các tác nhân bên ngoài.

    • Ở Mức 2, ranh giới “Hệ thống Ngân hàng Trực tuyến” bao bọc phần mềm cụ thể đang được xây dựng, tách biệt nó khỏi Mainframe cũ.

  3. Tách biệt các vấn đề quan tâm:

    • Phần giao diện người dùng (Frontend) so với Phần máy chủ (Backend): Việc tách biệt Ứng dụng Trang Đơn (frontend) khỏi Ứng dụng API (backend) cho phép phát triển và mở rộng độc lập.

    • Tách biệt Dữ liệu: Dữ liệu cốt lõi nhạy cảm về ngân hàng được lưu trữ trên Mainframe, trong khi Hệ thống Ngân hàng Trực tuyến chỉ lưu trữ tạm dữ liệu truy cập người dùng cần thiết trong cơ sở dữ liệu Oracle riêng của nó.

  4. Tính trung lập công nghệ (khi phù hợp): Các sơ đồ xác định các công nghệ (Java, Angular, Oracle) khi chúng liên quan đến quyết định kiến trúc, nhưng tập trung chủ yếu vào mối quan hệ và trách nhiệm của các khối.

  5. Ký hiệu: Sử dụng ký hiệu C4 chuẩn:

    • Người dùng: Hình người bằng que (hoặc hình tròn trong phong cách hiển thị cụ thể này).

    • Hệ thống phần mềm/Thùng chứa/Thành phần: Hình chữ nhật bo tròn với các màu sắc khác nhau (Xanh dương cho nội bộ/chính, Xám cho bên ngoài/phụ).

    • Mối quan hệ: Mũi tên đứt đoạn với nhãn mô tả giao thức (ví dụ: [HTTPS], [JSON], [JDBC]).