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
| Table | Purpose |
|---|---|
feature_flags | Flag definitions |
flag_rules | Targeting rules per flag |
flag_evaluations | Evaluation history |
API Endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /flags | List all flags |
| POST | /flags | Create a flag |
| PUT | /flags/{id} | Update flag |
| DELETE | /flags/{id} | Delete flag |
| POST | /evaluate | Evaluate 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}]
}