Tenant, host và bộ lọc dữ liệu
ToRun dựa trên mô hình nhiều tenant của ABP Framework. Một dòng được đánh dấu IsMultiTenant có cột TenantId mà framework tự động lọc theo; các truy vấn trong ngữ cảnh của một tenant không bao giờ thấy các dòng của tenant khác. Ngữ cảnh host (TenantId == null) thấy một phần riêng: đó là nơi chứa các danh mục chuẩn như SubscriptionPlan, AiProvider và LegalDocument.
Vì sao chúng tôi coi host là một bên tham gia đầy đủ
Phần lớn sản phẩm SaaS thêm host vào dưới dạng "công cụ quản trị". Chúng tôi mô hình hóa nó như một tenant anh em: host có bảng điều khiển riêng, chính sách AI riêng và quan hệ thanh toán riêng. Nhờ đó chúng tôi có thể chạy lưu lượng production của chính mình trên cùng những thành phần mà mọi khách hàng sử dụng.
Tính năng gắn với gói theo từng tenant
Các gói đăng ký mang các dòng FeatureLimit, Entitlement, Capability và Mode. Khi một tenant kích hoạt gói, tập tính năng mà tenant đó truy cập được là giao của gói và danh mục toàn cục. Thêm một chế độ mới không cần động đến từng tenant: tenant tự động nhận chế độ đó nếu gói đang dùng có bao gồm nó.
Đưa BYOK vào mỗi lệnh gọi
Ngay cả với hạ tầng dùng chung, thông tin xác thực BYOK vẫn chỉ giới hạn trong tenant sở hữu chúng. Mỗi yêu cầu AI lấy thông tin xác thực trong ngữ cảnh tenant bằng cùng bộ lọc dữ liệu; khóa không thể bị rò rỉ giữa các tenant ở tầng lưu trữ.
Những gì chúng tôi cố ý không làm
Chúng tôi không cô lập tenant ở cấp cơ sở dữ liệu hay tiến trình. Chi phí mở rộng một cơ sở dữ liệu riêng cho mỗi tenant phá hỏng kinh tế đơn vị của một sản phẩm SaaS nhiều tenant. Bộ lọc dữ liệu cùng bộ nhớ đệm tách theo tenant là đủ khi lược đồ được thiết kế cho điều đó ngay từ ngày đầu.