Back to production requirements

Autoscaling, reindex, and ingest stability

Status: Underway (Pending Central)
Priority: Must have
Audience: SRE, search platform


Why these belong together

These issues show up under the same production load profile: Serverless capacity changes interacting with search, backfills, and writes. Treat them as one hardening workstream before locking production SLOs.

ThemeSymptom
AutoscalingScale oscillation hurts search latency / stability
ReindexLong backfills interrupt when capacity changes
Ingest tailOccasional extreme write latency

Options

OptionWhat it meansTradeoff
A. Joint tuning + resilient patterns (recommended)Cooldowns, pre-warm, capacity buffer; checkpointed reindex; measure and bound ingest tails before write SLOsMedium effort; unblocks production without waiting on every platform fix
B. Wait for platform-only fixesRely on Elastic Serverless autoscaling / reindex / ingest improvements aloneLower near-term ops work; cutover risk if SLOs are locked too early
C. Oversize Search capacityKeep high minimum / Search Power so scale events are rareStabilizes latency; higher ongoing VCU cost
D. Defer production trafficHold live cutover until all three themes are closedLowest risk; delays value from Serverless
E. Accept interim exceptionsDocumented lag / ingest / backfill exceptions with expiry datesFastest path to limited production; needs security / SRE sign-off

Recommendation

Commit to option A, with production-like validation pending Azure Central US:

  1. Autoscaling — Tune cooldowns, scale-down sensitivity, and buffer above minimum Search capacity; pre-warm ahead of known peaks; retest under representative QPS once Central US is available.
  2. Reindex — Use resumable / checkpointed backfills (slices, updated_at windows, idempotent bulk); automate resume after capacity changes.
  3. Ingest tail — Measure p95 / p99 / max under production-like write rates; correlate with scale events; agree a mitigation or signed exception before formal write SLOs.

Use option C only as a temporary bridge during cutover if needed. Prefer A over B so you are not blocked on an open-ended platform calendar. Keep E narrow and time-boxed if anything remains open.


Detail by theme

1. Autoscaling tuning

Scale-up / scale-down that is too sensitive can sawtooth under production-like traffic.

  1. Capture baseline latency under representative QPS.
  2. Tune cooldowns, scale-down sensitivity, and buffer above minimum Search capacity.
  3. Pre-warm or schedule capacity ahead of known peaks when possible.
  4. Re-test and watch for oscillation in project telemetry.

2. Reindex under autoscaling

Long reindex / backfill jobs can break when nodes are replaced or capacity changes mid-job.

  1. Prefer resumable / checkpointed patterns (slices, updated_at windows, idempotent bulk).
  2. Avoid single long-lived tasks that cannot survive a node change.
  3. Automate resume from the last successful checkpoint.
  4. Retest full backfill after related platform improvements ship.

3. Ingestion tail latency

Average ingest can look fine while p99 / max spikes miss write SLOs.

  1. Measure ingest percentiles under production-like write rates.
  2. Correlate spikes with autoscaling, bulk size, mapping changes, and concurrent search.
  3. Agree interim mitigations (batching, backoff, queue depth) if needed.
  4. Gate formal write SLOs on a closed root cause or signed exception.

Acceptance criteria

  • No sustained scale oscillation under the agreed load profile
  • Search p95 / p99 within SLO during scale events
  • Backfill can pause / resume without a full restart
  • Ingest tail characterized; fix or mitigation verified
  • Capacity, reindex, and write SLO notes documented in one runbook section
  • Chosen option (A–E) recorded with owners and target date

Related

  • Cold cache during deployments (also control-plane / capacity adjacent)
  • Autosharding (index shape before load tests)
  • Snapshot restore → Point-in-time restore (cutover windows)