HLDArena
HLD-217·Caching & Edge
Medium · 1,000 pts

Sticky A/B Experiment Assignment & Exposure Log

Design an experimentation bucketing and sticky-override service ensuring users always see a consistent treatment arm across requests while logging exposures.

Max p99
≤ 42 ms
Availability
≥ 99.5%
Budget
≤ $5,100

Functional Requirements

  • FR-1GET /experiments/{user_id}/assign — Returns sticky variant assignments across active studies under 32ms p99.
  • FR-2POST /experiments/{user_id}/override — Persists sticky holdout/QA overrides and logs exposure events.
  • FR-3PATCH & DELETE /experiments/{user_id}/assign — Updates, cancels, or deletes user_id records and immediately invalidates or updates cached state (read-after-write).
  • FR-4Sticky overrides must be visible immediately on the next request (read-after-write) and survive DB failover.

Workload Profile

Baseline Bucketing44,000 Read RPS / 5,000 Exposure/Override Write RPS
Homepage Ramp Surge122,000 Read RPS / 16,000 Write RPS
Active Working Set20 GB active sticky assignments & layer configs
Latency BudgetInline request-path dependency p99 <= 32 ms

Consistency Model

Read-after-write consistency required for sticky variant overrides so users never flip between arms.

Design Write-up
0 boxes · 0 edges
0 words
Hidden Cases #4–#7 run automatically on Submit
Case 1: Smoke & API ContractInput Workload
Read RPS
2,000 rps
Write RPS
400 rps
Key Distribution
Uniform (Low Skew)
Chaos Fault
None (Healthy Cluster)
Expected Pass CriteriaASSERTIONS
• Tail Latency: p99 ≤ 84 ms
• Availability: ≥ 99.5%
Valid end-to-end Client → Compute → Storage topology