Feature Flags Service

Feature flag management system with A/B testing support and flag evaluation SDK

Feature Flags Service (Port 8014)

The feature-flags-service provides centralized feature flag management across all MQUAD services, supporting gradual rollouts, A/B testing, and environment-specific toggles.

Database

Database: feature_flags_db

TablePurpose
feature_flagsFlag definitions
flag_rulesTargeting rules per flag
flag_evaluationsEvaluation history

API Endpoints

MethodPathPurpose
GET/flagsList all flags
POST/flagsCreate a flag
PUT/flags/{id}Update flag
DELETE/flags/{id}Delete flag
POST/evaluateEvaluate a flag

Flag Model

{
  "id": "flag-uuid",
  "key": "new-survey-designer",
  "name": "New Survey Designer",
  "description": "Enable the new survey designer UI",
  "enabled": true,
  "environment": "production",
  "rules": [
    {
      "type": "percentage",
      "value": 50,
      "target": "users"
    },
    {
      "type": "tenant",
      "values": ["tenant-uuid-1", "tenant-uuid-2"]
    }
  ]
}

Evaluating Flags

Services evaluate flags via the API or a cached client:

POST /evaluate
{
  "flag_key": "new-survey-designer",
  "context": {
    "user_id": "user-uuid",
    "tenant_id": "tenant-uuid",
    "environment": "production"
  }
}

# Response
{
  "flag_key": "new-survey-designer",
  "enabled": true,
  "reason": "matched_percentage_rule"
}

A/B Testing

Supports percentage-based rollouts for A/B testing:

# 50% of users get the new feature
POST /flags
{
  "key": "new-dashboard-layout",
  "rules": [{"type": "percentage", "value": 50}]
}