Diagrammatic

Design an A/B Testing Framework for ML Models — System Design Interview Practice

Design an A/B testing and experimentation framework specifically for ML models in production, supporting traffic splitting, statistical analysis, multi-armed bandits, and automated experiment conclusion. Work through the requirements, architecture trade-offs, and an interactive design review.

Concepts and architecture decisions to consider

  • mlopsConcept to explore
  • ab testingConcept to explore
  • experimentationConcept to explore
  • statisticsConcept to explore
  • traffic routingConcept to explore
  • banditsConcept to explore

Interview prompt

Design Design an A/B testing and experimentation framework specifically for ML models in production, supporting traffic splitting, statistical analysis, multi-armed bandits, and automated experiment conclusion. so users can Route traffic between model variants reliably at scale.

  • Define the source of truth for Route traffic between model variants; Implement statistically rigorous A/B tests and make retries idempotent.
  • Use bounded, partitioned state to meet Support feature flag-based model selection and Traffic routing latency under 5ms.
  • Separate the critical request path from Use consistent hashing for user bucketing, Implement sequential testing for early stopping, Use Bayesian methods for faster experiment conclusion.
  • Explain consistency, failure recovery, authorization, observability, and a degraded mode.

Requirements and scale assumptions

  • Support the core workflow to Route traffic between model variants.
  • Expose status, results, and freshness appropriate to Design an A/B testing and experimentation framework specifically for ML models in production, supporting traffic splitting, statistical analysis, multi-armed bandits, and automated experiment conclusion..
  • Support authorization, validation, updates, deletion, and recovery semantics.
  • Meet Traffic routing latency under 5ms under normal load.
  • Scale to Support feature flag-based model selection without a single hot key or unbounded synchronous work.
  • Do not lose committed state; make retries and duplicate events safe.
  • Degrade safely when downstream workers, caches, or external dependencies fail.
  • Support feature flag-based model selection
  • Partition by the primary tenant, user, item, or geographic key and isolate hot partitions.
  • Keep serving state bounded; retain raw events or durable records for replay and auditing.
  • Peak scale: Support feature flag-based model selection — Capacity assumption that drives partitioning and backpressure.
  • Latency target: Traffic routing latency under 5ms — User-facing budget for the primary request or read path.
  • Durable boundary: Committed before async — The source of truth is Route traffic between model variants; Implement statistically rigorous A/B tests.
  • Async boundary: At-least-once workers — Keep Use consistent hashing for user bucketing, Implement sequential testing for early stopping, Use Bayesian methods for faster experiment conclusion off the synchronous path.

Key entities

  • DatasetVersiondatasetId, version, schemaHash, qualityStatus, lineage, createdAt

    Immutable a b testing framework input version used for reproducible training, evaluation, or replay.

  • FeatureSnapshotentityId, featureSetVersion, eventTime, values, sourceWatermarks

    Point-in-time a b testing framework features with source watermarks so online and offline values can be compared.

  • TrainingRunrunId, datasetVersion, codeVersion, metrics, artifactUri, status

    Audited a b testing framework run that records data, code, dependency, and evaluation lineage.

  • ModelVersionmodelId, version, stage, schema, qualityGates, endpoint

    A promotable a b testing framework model version with rollout state, contract, and rollback metadata.

Data flow

  1. 1. Register and validate training dataThe a b testing framework gateway records an immutable dataset version, schema, lineage, quality status, and privacy disposition.
  2. 2. Build point-in-time featuresFeature workers join a b testing framework inputs using event-time watermarks, prevent leakage, and publish the same feature contract for training and serving.
  3. 3. Train and evaluate asynchronouslyThe orchestrator schedules a b testing framework runs with checkpointed artifacts, reproducible environments, and metrics tied to the exact input versions.
  4. 4. Gate and serve a model versionA registry compares a b testing framework quality, bias, safety, and compatibility gates before canary or production rollout with an immediate rollback pointer.
  5. 5. Monitor drift and learn from feedbackOnline inference records latency, errors, drift, and delayed labels so a b testing framework retraining is evidence-driven rather than triggered by guesswork.

Deep dives and trade-offs

  • Reproducibility and leakage preventionPin a b testing framework data, feature, code, dependency, and model versions for every run. Use point-in-time joins and quarantine failed quality or privacy checks before training. Keep raw inputs and artifacts immutable so a result can be replayed after a dependency changes.
  • Safe promotion and serving contractsSeparate a b testing framework model registration from deployment and require signed artifacts plus schema compatibility. Use shadow traffic, canaries, rollback pointers, and per-version latency/error budgets. Return model version and feature freshness so clients can explain or reproduce a prediction.
  • Drift, feedback, and costMeasure feature drift, prediction drift, label delay, and segment-level quality for a b testing framework rather than only aggregate accuracy. Sample expensive inference and cap retraining concurrency with an explicit GPU or compute budget. Keep human corrections and delayed labels linked to the original prediction and model version.
  • Batch versus online featuresPrefer a shared feature contract with batch backfills and a low-latency online serving path for decisions that need freshness. Two independently defined transformations create training-serving skew and hard-to-debug regressions.
  • Synchronous versus asynchronous inferenceKeep interactive a b testing framework inference synchronous within a strict budget and queue large or expensive jobs. A request path that waits for model loading, enrichment, or retraining turns downstream slowness into an outage.
  • Global model versus segment modelsStart with one versioned model and add segment-specific models only when quality or policy evidence justifies the operational cost. Many simultaneously active versions multiply monitoring, rollback, and data-lineage burden.
Diagrammatic — system design practice and architecture review.