Contact Now
Giải pháp

Platform & SaaS

Xây một sản phẩm cho một khách hàng và xây một nền tảng cho nhiều khách hàng là hai bài toán khác nhau, và cái thứ hai khó hơn nhiều so với vẻ ngoài của nó.

Multi-tenant: quyết định đầu tiên và khó sửa nhất

Multi-tenancy — nhiều khách hàng dùng chung một hệ thống — có ba cách làm, và chọn sai thì sửa về sau rất tốn kém.

CáchCách lyChi phí vận hànhHợp với
Chung database, chung table, phân biệt bằng cột tenantThấp nhấtThấp nhấtNhiều khách hàng nhỏ
Chung database, mỗi tenant một schemaTrung bìnhTrung bìnhVừa phải cả hai chiều
Mỗi tenant một databaseCao nhấtCao nhấtÍt khách hàng lớn, yêu cầu tuân thủ chặt

Rủi ro lớn nhất của cách thứ nhất là một câu query quên điều kiện lọc theo tenant sẽ để khách hàng này nhìn thấy dữ liệu của khách hàng kia. Cách phòng không phải là cẩn thận hơn, mà là làm cho việc quên trở nên bất khả thi — đặt bộ lọc ở tầng truy cập dữ liệu, hoặc dùng row-level security của PostgreSQL, để không có đường nào viết được một query thiếu điều kiện đó.

Microservices khi nào là đúng

Microservices giải quyết vấn đề tổ chức nhiều hơn vấn đề kỹ thuật. Chúng cho phép nhiều đội làm việc và deploy độc lập với nhau.

Nếu chỉ có một đội, chia nhỏ hệ thống thành mười service thường làm mọi thứ chậm đi: mỗi thay đổi phải sửa nhiều repository, gỡ lỗi phải lần qua nhiều service, và một transaction trải trên bốn service khó hơn nhiều so với một transaction trong một database.

Cách bắt đầu ít rủi ro hơn là một hệ thống đơn khối nhưng có ranh giới module rõ ràng bên trong. Khi một module chứng minh được là nó cần scale riêng hoặc cần đội riêng, tách nó ra. Ranh giới sạch sẵn khiến việc tách sau này không đau.

Sẵn sàng cho production nghĩa là gì

Một nền tảng phục vụ nhiều khách hàng cần những thứ mà sản phẩm nội bộ bỏ qua được.

Cần đo được: log có cấu trúc, metric, và trace để lần theo một request đi qua nhiều service. Khi một khách hàng báo chậm, phải trả lời được chậm ở đâu, chứ không phải đoán.

Cần tách được ảnh hưởng: một khách hàng chạy báo cáo nặng không được làm chậm mọi khách hàng khác. Thường xử lý bằng rate limit theo tenant và hàng đợi riêng cho công việc nặng.

Và cần onboarding tự động. Nếu thêm một khách hàng mới đòi hỏi kỹ sư chạy script bằng tay thì đó chưa phải nền tảng, mới chỉ là một sản phẩm được cài nhiều lần.

Câu hỏi thường gặp

Nên bắt đầu bằng microservices hay đơn khối?

Với một đội, bắt đầu bằng hệ thống đơn khối có ranh giới module rõ ràng bên trong, rồi tách khi có lý do cụ thể — module cần scale riêng, hoặc cần một đội riêng sở hữu nó. Microservices trả lại lợi ích khi số đội tăng lên, không phải khi số dòng code tăng lên.

Nice Solutions có kinh nghiệm nào về nền tảng multi-tenant?

Nice Travel là nền tảng đặt vé máy bay B2B đa kênh phục vụ các đại lý, kết nối trực tiếp Vietjet, Bamboo Airways và Vietnam Airlines, với khách hàng thương mại đầu tiên là Galaxy Pay. Platform Intake Hub dùng kiến trúc microservices kết hợp AI, triển khai được on-premise.

Bạn đang có một bài toán cụ thể?

Mô tả ngắn gọn tình huống của bạn. Chúng tôi phản hồi trong vòng 24 giờ làm việc, và nếu bài toán không thuộc phạm vi của mình, chúng tôi sẽ nói thẳng.

Liên hệ với chúng tôi

Điền thông tin bên dưới, chúng tôi sẽ liên hệ lại sớm nhất có thể