Đa Tenant
Quyết định
Phần tiêu đề “Quyết định”Mô hình cô lập hybrid hai-tier.
| Tier | Instance ứng dụng | Database | Khách hàng mục tiêu |
|---|---|---|---|
| Standard | Process chia sẻ | Schema chia sẻ với cô lập row ở cấp database | Khách hàng SaaS SMB mà nhu cầu tùy chỉnh được đáp ứng bởi engine cấu hình |
| Dedicated | Process/container riêng | Database riêng | Khách hàng có yêu cầu vượt quá engine cấu hình, hoặc có nhu cầu cô lập hợp đồng |
Standard là mặc định và mục tiêu đầu tư chính. Dedicated là escape hatch được hỗ trợ — nó không bao giờ được trở thành cơ chế cho code fork theo từng khách hàng.
Bối cảnh
Phần tiêu đề “Bối cảnh”Một mô hình cô lập duy nhất không thể chi phí-hiệu quả phục vụ cả đa số khách hàng SaaS SMB và thiểu số có nhu cầu tùy chỉnh sâu hoặc nhu cầu cô lập hợp đồng. Cách tiếp cận hybrid giữ cho vận hành instance chia sẻ đơn giản cho đội ngũ ≤5 kỹ sư trong khi cung cấp đường dẫn đáng tin cậy cho các khách hàng vượt quá engine cấu hình.
Engine cấu hình là ranh giới tier. Nếu yêu cầu của khách hàng có thể được đáp ứng bởi trường tùy chỉnh, quy tắc xác thực hoặc bước quy trình công việc, tier Standard áp dụng. Dedicated dành cho các yêu cầu vượt cấu trúc engine — không phải lối tắt xung quanh các tính năng còn thiếu.
Định nghĩa Tier
Phần tiêu đề “Định nghĩa Tier”Tier Standard
Phần tiêu đề “Tier Standard”- Một process ứng dụng và database chia sẻ
- Cô lập tenant được thực thi ở cả cấp database engine và lớp truy vấn ứng dụng
- Không có hạ tầng riêng theo khách hàng; tenant được cấp phát bằng cách chèn một bản ghi vào tenant registry
Tier Dedicated
Phần tiêu đề “Tier Dedicated”- Container ứng dụng và database riêng cho mỗi khách hàng (cùng schema và migrations như Standard)
- Phòng thủ theo chiều sâu: các chính sách cô lập row-level vẫn được áp dụng, dù cô lập chính là process và database separation
- Triển khai on-premises inherently Dedicated
Một instance Dedicated luôn phục vụ chính xác một tenant. Cùng một binary được triển khai — khác biệt chỉ là cấu hình môi trường, không bao giờ là code fork.
Tiêu chí gán Tier
Phần tiêu đề “Tiêu chí gán Tier”| Tiêu chí | Ví dụ |
|---|---|
| Giới hạn engine cấu hình | Nhu cầu tùy chỉnh không thể biểu diễn cấu trúc trong trường tùy chỉnh / quy tắc xác thực / bước quy trình công việc |
| Cô lập hợp đồng | Chính sách pháp lý, quy định hoặc bảo mật của khách hàng yêu cầu process và data separation |
| Performance SLA | Workload sẽ tạo rủi ro noisy-neighbor trên instance chia sẻ |
| Triển khai on-premises | Khách hàng tự host trên server riêng |
Tenant Registry
Phần tiêu đề “Tenant Registry”Một database quản trị cấp nền tảng (tách biệt với dữ liệu tenant) ánh xạ mỗi tenant đến tier, cấu hình routing và chi tiết kết nối của nó. Nó là nguồn thật duy nhất cho authentication middleware và công cụ provisioning. Chi tiết kết nối tier Dedicated được mã hóa at rest và giữ trong process memory — không bao giờ được log hoặc expose cho khách hàng.
Routing
Phần tiêu đề “Routing”Tier Standard: Request đến một hostname chia sẻ. Auth middleware validate session, xác định tenant từ token đã xác thực, verify tier của tenant và thiết lập tenant scope trên database connection.
Tier Dedicated: Request đến một hostname dành riêng cho khách hàng. Auth middleware verify tenant đã xác thực khớp với tenant duy nhất mà instance này được cấu hình để phục vụ, và reject mismatch trước khi bất kỳ logic ứng dụng nào thực thi.
Nguyên Tắc Quan Trọng
Phần tiêu đề “Nguyên Tắc Quan Trọng”- Tenant identity được suy ra exclusively từ authenticated session — không từ request parameters, query strings hoặc route values.
- Tenant scoping được áp dụng automatically tại data access layer cho mọi query — không phải bằng filters thủ công trong từng query.
- Bypassing tenant scoping không được phép trong mã ứng dụng. Exceptions (platform admin operations, ETL) là explicit, audited và isolated đến một access path riêng.
- Mọi data store có phải kèm theo automated tests xác minh không có cross-tenant data leakage.
- Cross-tenant platform operations (billing, reporting, ETL) sử dụng một privileged access path riêng không bao giờ exposed đến tenant-facing request handlers.
- Dedicated instances phải reject requests từ bất kỳ tenant nào khác với tenant chúng được cấu hình để phục vụ.
Cổng Kiểm Tra
Phần tiêu đề “Cổng Kiểm Tra”- Trước tenant live Standard-tier đầu tiên: isolation tests phải authenticate là Tenant A và assert không có data từ Tenant B được trả về, across all data-access paths.
- Trước instance Dedicated-tier đầu tiên go live: tests phải verify mismatched-tenant sessions bị reject trước bất kỳ application logic nào thực thi.
- Một penetration test tập trung vào tenant isolation phải hoàn thành trước production go-live.
Truy Cập Cấp Nền Tảng
Phần tiêu đề “Truy Cập Cấp Nền Tảng”Cross-tenant operations sử dụng một privileged access path với isolation enforcement bypassed, logged đến platform audit log riêng. Dedicated-tier cross-tenant aggregation (ví dụ: billing) query mỗi tenant’s database independently — đây là asynchronous background work, không phải real-time request path.