Multi-tenancy là kiến trúc mà một phiên bản duy nhất của phần mềm và cơ sở hạ tầng hỗ trợ của nó phục vụ nhiều khách hàng. Mỗi khách hàng chia sẻ ứng dụng phần mềm và cũng chia sẻ một cơ sở dữ liệu. Dữ liệu của mỗi người khách hàng bị cô lập và vẫn vô hình đối với những khách hàng khác.
![](http://our.idtek.com.vn/content/images/2021/05/image-1.png)
Lợi ích của Multi-tenancy
1. Chi phí thấp
Do các khách hàng dùng chung ứng dụng, tài nguyên, hạ tầng nên chi phí phát triển thấp dẫn đến tiết kiệm được cho doanh nghiệp và khách hàng.
2. Sử dụng hiệu quả tài nguyên
Bởi vì các khách hàng chia sẻ tài nguyên với nhau nên được sử dụng hiệu quả hơn, có thể dễ dàng tùy chỉnh tài nguyên hệ thống dựa trên nhu cầu của cách hàng.
3. Bảo trì, nâng cấp
Người dùng không cần bận tâm về việc cập nhật các tính năng và cập nhật mới, họ cũng không cần phải trả phí bảo trì, nâng cấp. Nếu có trả thêm một khoản phí nào đó thì nó sẽ được chia sẻ giữa các khách hàng.
Doanh nghiệp sẽ không phải lo nâng cấp, bảo trì riêng cho từng khách hàng
Khó khăn của Multi-tenancy
1. Khó tùy chỉnh riêng cho từng khách hàng
Vì khó khách hàng dùng chung ứng dùng, tài nguyên nên khó tùy chỉnh riêng cho từng khách như single-tenancy
2. Khó backup dữ liệu riêng cho từng khách hàng
3. Bảo mật
Phải đảm bảo các tenant chỉ được truy xuất dữ liệu của chính họ
3. Phát triển
Phải đảm bảo hiệu suất của hệ thống khi lượng người dùng lớn và dữ liệu phình to
Có 3 cách thiết kế Multi-tenancy
1. Dùng chung Database
![](http://our.idtek.com.vn/content/images/2021/05/image-2.png)
Dữ liệu của tất cả tenant được lưu chung với nhau và phân biệt bằng trường TenantId
Điểm mạnh:
- Thiết kế lưu trữ đơn giản.
- Dễ cho việc phát triển.
- Không gặp phải vấn đề đồng bộ cấu trúc bảng trong quá trình phát triền.
Nhược điểm:
- Không độc lập database nên nguy cơ tenant có thể xem dữ liệu lẫn nhau.
- Không thể backup, restore riêng cho từng tenant.
- Dữ liệu phình to, ảnh hưởng tới hiệu năng của hệ thống.
- Khó khăn khi scale hệ thống.
2. Mỗi tenant có database riêng
![](http://our.idtek.com.vn/content/images/2021/05/image-3.png)
Mỗi tenant sẽ có datase riêng biệt nhau
Điểm mạnh:
- Dữ liệu của các tenant độc lập với nhau
- Dễ cho việc phát triển.
- Không lo lắng khi dữ liệu phình to
- Có thể backup, restore riêng cho từng tenant
Nhược điểm:
- Khi thay đổi schema phải đồng bộ hết cho các tenant
- Chưa tối ưu hóa tài nguyên hệ thống
3. Sharded multi-tenant databases
![](http://our.idtek.com.vn/content/images/2021/05/image-4.png)
Các tenant sẽ được gom nhóm với nhau và mỗi nhóm sẽ dùng chung database với nhau
Điểm mạnh:
- Tối ưu hóa tài nguyên hệ thống
- Backup, store sẽ dễ dàng hơn phương án 1
Nhược điểm:
- Không độc lập database nên nguy cơ tenant có thể xem dữ liệu lẫn nhau.
- Khi thay đổi schema phải đồng bộ hết cho các nhóm
Thảo luận