1. 09:44 12/10/2026
Feature flags (cờ tính năng) và A/B testing là hai kỹ thuật cốt lõi để phát hành tính năng an toàn, đo lường tác động và tùy biến trải nghiệm người dùng mà không cần deploy liên tục. Dưới đây là quy trình thực tế đã áp dụng trong một dự án đa nền tảng (React Web + React Native).
1. Chọn giải pháp quản lý cờ
- Dùng dịch vụ SaaS như LaunchDarkly hoặc Unleash nếu cần dashboard, phân đoạn người dùng phức tạp.
- Nếu team muốn tự host, triển khai Unleash trên Kubernetes và kết nối qua REST/GraphQL.
- Đối với dự án nhỏ, một context React đơn giản kết hợp với file JSON cấu hình cũng đủ.
2. Kiến trúc chung
- Tạo một package `feature-flags` chia sẻ giữa web và native. Package này export hook `useFlag(flagKey)` và hàm `initFlags(config)`.
- `initFlags` được gọi ở entry point (`index.tsx` web, `App.tsx` native) sau khi fetch cấu hình từ backend hoặc CDN.
- Cờ lưu trong Redux slice hoặc React Context để mọi component truy cập đồng bộ.
3. Ví dụ sử dụng trong component
```
const NewCheckout = () => {
const enabled = useFlag('new_checkout_flow');
if (!enabled) return <OldCheckout />;
return <CheckoutV2 />;
};
```
Trên native, cùng hook hoạt động y hệt vì logic nằm ở package chung.
4. A/B testing
- Mỗi biến thể được đại diện bởi một cờ boolean hoặc enum (`variant: 'control' | 'treatment'`).
- Ghi sự kiện `exposure` khi component mount, gửi đến analytics (Amplitude, Mixpanel).
- Phân tích kết quả sau 1‑2 tuần, quyết định bật/tắt cờ cho toàn bộ người dùng.
5. Best practices
- Luôn có giá trị mặc định (fallback) để tránh lỗi khi config chưa load.
- Gom nhóm cờ theo domain (checkout, onboarding, notification) để dễ dàng audit.
- Viết test unit cho hook `useFlag` với các kịch enabled/disabled.
- Thiết lập quy trình review: PR thêm cờ mới phải có mô tả, metric đo lường và ngày hết hạn dự kiến.
6. Cleanup
- Sau khi tính năng ổn định, xóa cờ khỏi code và config. Sử dụng script tự động quét các `useFlag` không còn tham chiếu.
Áp dụng quy trình này giúp team phát hành nhanh, giảm rủi ro rollback và có dữ liệu thực tế để ra quyết định sản phẩm.