DDevArchive
Đăng nhập

Feature flags & A/B testing: ship an toàn, đo kết quả

Ship feature mới cho 100% user ngay lập tức = rủi ro. Feature flag cho phép bạn bật feature cho 10% user trước, đo xem có bug không, rồi mới rollout dần. A/B testing so sánh 2 phiên bản để chọn cái tốt hơn.

Feature flags: bật/tắt tính năng không cần deploy

// File: feature-flag.ts
// Cách đơn giản nhất: dùng database
const flags = await db.featureFlags.findAll()

// Trong component
function PricingPage() {
  const showNewPricing = flags["new_pricing_v2"]

  return showNewPricing
    ? <NewPricingTable />
    : <OldPricingTable />
}

// Rollout dần: bật cho % user
function isEnabled(flagName: string, userId: string) {
  const flag = flags[flagName]
  if (!flag.enabled) return false

  // Hash userId → số 0-100 → so sánh với rollout %
  const hash = hashCode(userId) % 100
  return hash < flag.rolloutPercent
}

A/B testing: dữ liệu quyết định, không phải cảm tính

Bạn nghĩ nút CTA màu xanh đẹp hơn đỏ? Đừng đoán — test. A/B testing chia user thành 2 nhóm, mỗi nhóm thấy phiên bản khác nhau, đo conversion rate. Con số nói lên tất cả.

Công cụFree tierƯu điểm
PostHog1M events/thángOpen-source, tự host được, feature flags + A/B + analytics all-in-one
LaunchDarklyLimitedEnterprise-grade, SDK đầy đủ
GrowthBookFree self-hostOpen-source, tập trung A/B testing
💡 Đừng A/B test mọi thứ

A/B testing cần đủ traffic (>1000 users/variant) để có kết quả đáng tin. Startup nhỏ: dùng feature flags để rollout an toàn, qualitative feedback từ user thay vì A/B testing quá sớm.

❓ Feature flag giải quyết vấn đề gì?

  • Implement feature flag đơn giản (database-based)
  • Rollout dần theo phần trăm user
  • Biết khi nào A/B testing có ý nghĩa thống kê
  • Setup PostHog feature flags