ADR-025: Chiến lược Phiên bản hóa Tenant Stack (Multi-Tenant Versioning Strategy)¶
Bối cảnh¶
Hệ thống dx-vas triển khai theo mô hình multi-tenant với mỗi trường (tenant) có stack dịch vụ riêng biệt. Trong một số trường hợp thực tế, không phải tất cả tenant đều sẵn sàng nâng cấp lên phiên bản mới cùng lúc (do lý do nghiệp vụ, thời gian triển khai, kiểm thử…).
Do đó, hệ thống cần một chiến lược phiên bản hóa phù hợp để: - Hỗ trợ đồng thời nhiều phiên bản dịch vụ (per tenant) - Giảm thiểu rủi ro cập nhật hàng loạt - Cho phép tenant thử nghiệm trước trên staging
Quyết định¶
1. Mỗi tenant có thông tin version riêng¶
- Trong config (hoặc secret) của từng tenant, có trường
stack_version:
-
Giá trị này dùng để:
-
Gắn vào log, alert, metric
- Định danh Docker image được deploy
- Điều hướng contract test tương ứng
2. Pipeline CI/CD hỗ trợ build nhiều version¶
-
Mỗi commit được tag
vX.Y.Zsẽ: -
Build Docker image
sub-user:vX.Y.Z - Tạo release notes, changelog tự động
-
Pipeline phát hành theo tenant:
-
dx-deploy --tenant abc --version v1.3.5
3. Tenant staging để kiểm thử trước¶
- Mỗi tenant có môi trường
staging.tenant-a.dx-vas.vn - Tenant có thể thử phiên bản mới tại staging trước khi duyệt lên
prod
4. Superadmin quản lý mapping version¶
- Superadmin Webapp có bảng mapping:
| Tenant | Version | Trạng thái |
|---|---|---|
| A | v1.3.5 | Production |
| B | v1.4.0-beta | Staging |
| C | v1.2.9 | Legacy |
- Cho phép kiểm soát rollback, hotfix riêng cho từng tenant
Hệ quả¶
✅ Ưu điểm:
- Cho phép rollout theo cụm hoặc từng tenant
- Giảm rủi ro lỗi diện rộng
- Hỗ trợ A/B testing, backward compatibility dễ dàng
- Tenant chủ động kiểm thử mà không ảnh hưởng sản phẩm chính
⚠️ Lưu ý:
- Quản lý version cần đồng bộ với DB schema → cần kết hợp với
adr-023-schema-migration-strategy.md - Tăng độ phức tạp của CI/CD & Monitoring