Client isolation thực sự cho agency, không cần đến Multisite
Các agency thường tìm đến WordPress Multisite vì nó hứa hẹn là một nơi duy nhất để chạy nhiều site khách hàng. Nhưng rồi vấn đề về cô lập dữ liệu (isolation) xuất hiện. Khách hàng hỏi dữ liệu của họ nằm ở đâu và ai khác có thể đụng vào nó. Một plugin chạy tốt cho khách này lại làm hỏng site của khách khác. Một site cụ thể cần được restore, nhưng không có cách nào dọn dẹp gọn gàng để roll back duy nhất site đó. Multisite gom các khách hàng của bạn lại với nhau, nhưng gom nhóm không đồng nghĩa với cô lập, và đối với công việc của agency, sự khác biệt này rất quan trọng.
Bài viết này dành cho các agency cần các site khách hàng thực sự tách biệt: dữ liệu riêng, plugin riêng, theme riêng, và kiểm soát được blast radius. Chúng tôi sẽ hướng dẫn cách GrabWP Tenancy Pro mang đến điều đó trên một bản cài đặt WordPress tiêu chuẩn duy nhất, hoàn toàn không cần Multisite.
Nơi mà sự cô lập của Multisite bộc lộ điểm yếu đối với agency
Multisite vốn là tính năng mạng lưới (networking), không phải để cô lập, và ba thiết kế cốt lõi của nó lại đi ngược với yêu cầu quản lý khách hàng của agency.
- Dùng chung database. Mọi site trong mạng lưới Multisite đều nằm chung một database. Mỗi site có một bộ bảng phân biệt bằng prefix số, nhưng tất cả đều nằm trong một schema, truy cập qua cùng một connection. Khi khách hàng hỏi liệu dữ liệu của họ có được lưu tách biệt khỏi các khách hàng khác của agency hay không, câu trả lời thực tế trên Multisite là không.
- Dùng chung plugin và theme. Plugin và theme được cài đặt một lần cho toàn mạng. Bạn có thể activate plugin cho từng site, nhưng code là dùng chung, phiên bản dùng chung, và mọi thứ chạy trong cùng một PHP process. Bạn không thể để khách hàng A dùng một phiên bản plugin cũ được ghim lại, trong khi khách hàng B chạy bản mới nhất.
- Một lỗi nhỏ, sập toàn bộ. Vì database, codebase và runtime là dùng chung, nên một bản update plugin lỗi, một bảng bị hỏng, hay một fatal error sẽ có blast radius ra toàn mạng. Một vấn đề đáng lẽ chỉ của một khách hàng lại có thể kéo sập toàn bộ hệ thống.
Với một tệp khách hàng trả phí, “phân tách bằng table prefix” không phải là một giải pháp mà bạn muốn đem ra thuyết phục họ. Các agency cần những bức tường thực sự giữa các site.
Thế nào là cô lập thực sự?

Sự cô lập khách hàng thực sự (true per-client isolation) có nghĩa là mỗi site sở hữu dữ liệu và code của riêng nó, và mặc định không chia sẻ gì cả. GrabWP Tenancy Pro tạo mỗi khách hàng thành một tenant với ba lớp phân tách.
- Database riêng cho mỗi khách hàng. Bản Pro cho phép bạn chọn cho từng tenant: dùng chung MySQL với table prefix, dùng một MySQL database riêng, hoặc dùng SQLite database. Với khách hàng của agency, việc thiết lập per client database wordpress đảm bảo nội dung của một khách hàng nằm trong database riêng thay vì dùng chung schema với mọi người. Đây là một kiến trúc data-isolation, mang lại cho bạn khả năng tuân thủ (compliance) tốt hơn nhiều so với thiết lập shared-database nơi mọi khách hàng nằm chung một schema.
- Thư mục wp-content độc lập. Trên bản Pro, mỗi tenant có một thư mục wp-content hoàn toàn tách biệt, bên trong chứa các thư mục themes và plugins riêng. File của khách hàng không bị trộn lẫn trong một thư mục chung.
- Uploads riêng biệt. Ngay cả bản GrabWP Tenancy miễn phí cũng đã cô lập thư mục uploads của mỗi tenant và cấp cho nó một database table prefix riêng. Bản Pro xây dựng trên nền tảng đó bằng cách bổ sung dedicated database và thư mục wp-content hoàn toàn tách biệt.
Kết quả là dữ liệu của khách hàng này không bao giờ lẫn lộn với khách hàng khác, vì chúng không xài chung database, wp-content, hay thư mục uploads.
Mỗi khách hàng một bộ plugin và theme riêng, không lo xung đột

Lợi ích thực tế nhất của wp-content độc lập là mỗi khách hàng chạy một bộ plugin và theme riêng. Một khách hàng có thể chạy cửa hàng WooCommerce với các plugin thanh toán và vận chuyển riêng, trong khi khách khác chạy một trang membership với một bộ hoàn toàn khác. Hai site này không bao giờ xung đột với nhau, vì chúng không xài chung thư mục plugins.
Bạn quản lý stack của từng tenant từ trang Extensions. Tại đây, bạn có thể activate hay deactivate các plugin và đổi theme cho một tenant cụ thể, trạng thái hoạt động được hiển thị rõ ràng cho từng mục. Bạn đang cấu hình site của một khách hàng mà không đụng chạm đến site của bất kỳ ai khác. Bạn không cần phải đau đầu với việc activate trên toàn mạng, và không có rủi ro nào khi bật một plugin cho khách này lại làm thay đổi hành vi của toàn bộ hệ thống.
Đây chính là bức tường mà Multisite không thể mang lại cho bạn. Thay vì một codebase dùng chung cho mọi site, mỗi khách hàng sẽ có một stack được tinh chỉnh độc lập. Nhờ đó, việc tương thích plugin trở thành quyết định trên từng site, thay vì là một canh bạc trên toàn mạng lưới.
Kiểm soát blast radius: sửa lỗi cho một khách hàng mà không ảnh hưởng phần còn lại
Sự cô lập có giá trị nhất vào thời khắc tồi tệ nhất, khi có sự cố xảy ra. Vì mỗi tenant là tự thân (self-contained), một lỗi sẽ chỉ khoanh vùng trong đó, và việc khôi phục diễn ra một cách chính xác (surgical).
GrabWP Tenancy Pro cấp cho mỗi tenant một công cụ backup và restore riêng, với workflow từng bước bao phủ cả database, uploads, wp-content và cấu hình. Khi một khách hàng cần roll back, bạn chỉ cần restore độc lập tenant đó. Các khách hàng khác trên cùng một bản cài đặt sẽ không bao giờ bị dính líu, không bị gián đoạn, và không gặp rủi ro gì từ thao tác này.
Quy trình restore cũng đủ linh hoạt cho các thao tác migration thực tế. Bản Pro hỗ trợ khôi phục chéo database, nên bạn có thể chuyển đổi một tenant giữa các loại database, từ shared MySQL sang MySQL database riêng hoặc sang SQLite khi nhu cầu của khách thay đổi. Và vì bản backup của mỗi tenant là độc lập, blast radius khi phục hồi của bạn luôn nằm gọn trong đúng một khách hàng, điều này thể hiện đúng chuẩn mực quản trị rủi ro của agency.
Ngược lại với restore trên Multisite, nơi dùng chung database đồng nghĩa với việc roll back sạch sẽ một site là vô cùng cồng kềnh, và giải pháp bạn thường phải bấu víu vào là restore toàn bộ mạng lưới một cách thô bạo.
Cách áp dụng giải pháp này mà không cần Multisite
Phần tuyệt vời nhất là tất cả những điều này không đòi hỏi bạn phải thay đổi cấu trúc sang Multisite. GrabWP Tenancy Pro chạy trực tiếp trên một bản cài đặt WordPress đơn lẻ tiêu chuẩn.
- Cài đặt trên một site WordPress bình thường. Thêm plugin GrabWP Tenancy miễn phí và GrabWP Tenancy Pro vào một bản cài đặt tiêu chuẩn. Bạn không cần bật mạng Multisite, cũng không cần thay đổi cấu trúc site hiện tại.
- Thiết lập mặc định về cô lập. Trong phần cài đặt của Pro, chọn dedicated database làm mặc định cho các tenant mới và xác nhận việc cô lập content. Như vậy, mọi khách hàng bạn tạo ra sẽ kế thừa sự phân tách thực sự ngay từ đầu.
- Tạo tenant cho mỗi khách hàng. Mỗi khách hàng mới trở thành một tenant biệt lập với database riêng, wp-content riêng, và thư mục uploads riêng, tất cả đều nằm dưới một bản cài đặt mà bạn đang quản trị.
- Quản lý mỗi stack một cách độc lập. Dùng trang Extensions để cài đặt plugin và theme cho từng khách hàng, đồng thời tạo một baseline backup cho mỗi tenant để có điểm khôi phục sạch trước khi bắt đầu công việc.
Bạn vẫn giữ được sự đơn giản của một bản cài đặt WordPress và một dashboard duy nhất, trong khi khách hàng của bạn có được sự cô lập mà kiến trúc shared của Multisite không thể mang lại. Đây là một giải pháp wordpress multisite alternative for agencies hoàn hảo. Để có quy trình chuẩn xác khi tạo ra các isolated wordpress client sites, hãy kết hợp với client site provisioning checklist của chúng tôi.
Dựng lên bức tường thực sự cho từng khách hàng
Multisite gom nhóm khách hàng của bạn vào một database chung và bộ plugin chung. Nhưng công việc agency lại cần điều ngược lại: một database riêng, wp-content độc lập, và một blast radius giới hạn đúng trong một khách hàng cho mỗi thao tác. GrabWP Tenancy Pro cung cấp điều đó trên một bản cài đặt WordPress tiêu chuẩn, cấp license một lần trên mỗi bản cài và không thu phí theo từng khách, với giá từ $9.99/month. Hãy xem cách nó phù hợp với workflow của bạn trên agency page, và đối chiếu mức độ cô lập giữa bản miễn phí và bản Pro trên comparison page trước khi đưa ra quyết định.
Câu hỏi thường gặp
- Vì sao WordPress Multisite không phải là giải pháp cô lập thực sự?
- Multisite chạy mọi site chung trên một database, các site phân biệt với nhau chỉ bằng table prefix. Plugin và theme được cài đặt chung cho cả mạng lưới, dùng chung code và PHP process. Vì vậy, một lỗi plugin hay sự cố database có thể ảnh hưởng đến mọi khách hàng. Đó chỉ là phân tách trên danh nghĩa, không phải cô lập thực sự.
- Tôi có cần dùng Multisite để tạo các isolated wordpress client sites với GrabWP không?
- Không. GrabWP Tenancy Pro chạy trực tiếp trên một bản cài WordPress đơn lẻ tiêu chuẩn. Mỗi khách hàng sẽ là một tenant độc lập với dữ liệu và database riêng. Bạn sẽ có được wordpress client isolation without multisite mà không cần phải bật Multisite hay thay đổi cấu trúc cài đặt hiện tại.
- Mỗi khách hàng có thể có database riêng không?
- Có. Với bản Pro, bạn có thể chọn cho mỗi tenant: dùng chung MySQL với table prefix, dùng một MySQL database riêng, hoặc dùng SQLite. Việc cung cấp per client database wordpress đảm bảo dữ liệu của khách này không bao giờ lẫn lộn với khách khác trong cùng một schema.
- Tôi có thể backup và restore cho một khách hàng mà không ảnh hưởng đến những người khác không?
- Có. Mỗi tenant có quy trình backup và restore riêng biệt. Bạn có thể khôi phục một site hoàn toàn độc lập, thậm chí restore chéo giữa các loại database, nên việc khắc phục sự cố cho một site sẽ không gây nguy hiểm cho toàn bộ các khách hàng khác của agency.
Editorial standards: Our content is written by WordPress experts with hands-on multi-tenancy experience. Articles are fact-checked and regularly updated to ensure accuracy.