Điều phối Micro Frontend
Trong nền tảng VENI-AI, Micro Frontends (MFE) không chỉ là một mô hình UI—mà là một trụ cột kiến trúc cốt lõi được quản lý bởi Backend. Shell API đóng vai trò là bộ điều phối trung tâm cho phép các satellite độc lập được phát hiện, tải và bảo mật trong một không gian làm việc thống nhất.
1. Backend đóng vai trò Danh mục (Registry)
Khác với các thiết lập MFE truyền thống sử dụng URL cố định (hardcoded), VENI-AI sử dụng mô hình Danh mục Động (Dynamic Registry).
Bảng apps
Shell API duy trì một cơ sở dữ liệu về tất cả các satellite đã đăng ký. Mỗi bản ghi định nghĩa "hợp đồng" cho MFE đó:
- Slug: Mã định danh duy nhất được sử dụng trong URL (ví dụ:
/drive,/hrm). - UI URL: URL gốc nơi frontend của satellite được lưu trữ.
- API URL: Điểm cuối (endpoint) cho các dịch vụ backend của satellite.
- Entry Point: Đường dẫn đến tệp
remoteEntry.js(được chuẩn hóa tại thư mục gốc).
API Khám phá (Discovery API)
Shell UI không biết các ứng dụng nào tồn tại cho đến khi nó truy vấn backend:
- Endpoint:
GET /api/config/apps - Phản hồi: Danh sách các ứng dụng đang hoạt động kèm theo metadata Federation của chúng.
- Bộ đệm (Caching): Danh mục này được lưu trong Redis để đảm bảo độ trễ bằng không khi Shell khởi động.
2. Bắt tay Federation Động
Backend hỗ trợ quá trình "bắt tay" cho phép Shell UI nhúng một ứng dụng remote tại thời điểm thực thi.
Luồng Tải ứng dụng
- Yêu cầu: Người dùng điều hướng đến
/hrm. - Tra cứu: Shell UI hỏi Shell API: "Điểm truy cập của HRM ở đâu?"
- Giải quyết: Shell API trả về
http://localhost:4175/remoteEntry.js. - Nhúng: Shell UI sử dụng runtime Vite Module Federation để tải và gắn (mount) component remote.
3. Bảo mật Cầu nối (SSO)
Các micro frontend phải chia sẻ cùng một ngữ cảnh bảo mật mà không bắt người dùng phải đăng nhập nhiều lần. Backend thực hiện điều này thông qua cơ chế Phát sóng Token (Token Broadcasting).
Lan truyền Định danh
- Phát sóng: Khi Shell API cấp một JWT, Shell UI sẽ ghi nó vào
localStoragevà phát sóng quaBroadcastChannel. - Trao đổi tại Backend: MFE remote nhận JWT này của Shell và gọi API satellite của chính nó (
POST /auth/exchange). - Xác minh: Satellite API gọi endpoint JWKS của Shell API để xác minh token mà không cần dùng chung secret key.
4. Tại sao cần MFE điều khiển bởi Backend?
Bằng cách chuyển cấu hình MFE vào Nhân Backend (Backend Core), chúng ta đạt được nhiều lợi ích:
| Lợi ích | Mô tả |
|---|---|
| Cập nhật không gián đoạn | Bạn có thể trỏ đến phiên bản mới của satellite chỉ bằng cách cập nhật một dòng trong DB của Shell. |
| Bật/Tắt tính năng | Các ứng dụng có thể được bật hoặc tắt cho các tổ chức cụ thể thông qua danh mục backend. |
| Đồng nhất môi trường | Cùng một bản build Shell UI có thể hoạt động ở Dev, UAT và Prod vì nó giải quyết URL động từ API. |
| Triển khai Độc lập | Các satellite có thể được triển khai ở các cụm (cluster) hoặc khu vực khác nhau; Shell API chỉ đơn giản là trỏ đến URL chính xác. |
Hướng dẫn Tích hợp
Để tìm hiểu cách kết nối satellite của bạn với lớp điều phối này, hãy xem Tích hợp với Shell.