Dalam pengembangan aplikasi SaaS Multi-Tenant, Feature Flags / Toggles digunakan untuk merilis fitur baru secara bertahap (Canary Release), mengaktifkan eksperimen A/B testing, atau memberikan fitur khusus untuk tenant tertentu (VIP).
Anda diminta membuat endpoint REST API Express.js untuk:
POST /features/evaluate
{
"tenantId": "tenant_acme",
"userId": "user_42",
"flagKey": "new_checkout_v2"
}
{
"enabled": true,
"reason": "TENANT_OVERRIDE"
}
const featureFlags = [
{
flagKey: "new_checkout_v2",
enabled: true,
rolloutPercentage: 50,
tenantOverrides: {
"tenant_acme": true,
"tenant_beta": false
}
},
{
flagKey: "dark_mode",
enabled: false,
rolloutPercentage: 100,
tenantOverrides: {}
}
];
tenantId, userId, atau flagKey kosong → HTTP 400 "tenantId, userId, and flagKey are required".flagKey tidak ada di array featureFlags → HTTP 404 "Feature flag not found".tenantId terdaftar di flag.tenantOverrides (boolean): Kembalikan HTTP 200 dengan enabled bernilai override tersebut, dan reason: "TENANT_OVERRIDE".flag.enabled === false: Kembalikan HTTP 200 dengan enabled: false dan reason: "GLOBAL_TOGGLE".userId (misal jumlah ASCII char code % 100).hashValue < flag.rolloutPercentage: Kembalikan enabled: true, reason: "PERCENTAGE_ROLLOUT".enabled: false, reason: "PERCENTAGE_ROLLOUT".Manajemen Feature Flag di Scaled Microservices Di bagian komentar kode solusi Anda, jelaskan:
- Penggunaan platform Feature Flag terpusat (seperti LaunchDarkly / Unleash).
- Strategi caching di Redis & in-memory memory sync untuk evaluasi flag dengan latency sub-millisecond.