Load tests don't look like production
Scripted tests hit a few endpoints at a steady rate. Real surges are a mix of user journeys, retries and spikes, and that mix is what breaks things.
Incident rehearsal for production
Aftershock turns your real production traffic into load scenarios, replays past incidents against staging, and shows whether your alerts would have caught them.
Now inviting 3–5 SRE teams to shape the product as design partners.
The problem
Scripted tests hit a few endpoints at a steady rate. Real surges are a mix of user journeys, retries and spikes, and that mix is what breaks things.
Production tracing is usually sampled at 1–5%. Rare journeys and exact incident-time rates fall through the gaps.
Dashboards and alerts get tuned after the last incident. Until the next one, nobody knows whether monitoring would catch it in time.
How it works
Point the miner at your edge logs (nginx first) or traces. It finds user journeys, arrival curves and the request mix, on your machine.
A precise load engine replays the scenario from an agent inside your network, or from our hosted zones for verified public endpoints.
Every request carries a trace context and run ID. Aftershock reads your Prometheus, Elastic, OpenSearch, Tempo or Jaeger and shows which service the latency came from.
Your pipeline fails the release when SLOs break or it regresses against the last good run. Multi-hour soaks run without holding a CI runner.
Incident replay
Pick the window when things went wrong. Aftershock rebuilds the traffic that caused it, replays it against staging, and checks what your monitoring saw.
The miner reads every request in the incident window, not a 1% sample. Session keys are hashed on the spot, and raw logs never leave your machine.
Requests are grouped into sessions and clustered into journeys, with their weights and think times. The surge keeps its exact shape, second by second.
scenario: admissions-surge-replay
source: nginx # Mar 14, 09:30–10:30
arrival:
curve: incident-rates.csv # 1-second rates
journeys:
- name: apply-and-signup
weight: 0.62
steps: [GET /apply, POST /signup, GET /status]
think: { p50: 4s }
data:
email: unique() # synthetic, never real PII
slo:
p99: 800ms
errors: "< 1%"
You get a plain scenario file you can read, edit and keep in git. Payloads come from your API schemas with synthetic data; real values are never replayed.
Arrivals follow the incident curve whether or not your system keeps up, so a slowdown can't hide itself. Every request carries traceparent and the run ID.
The report shows where the latency came from, using your own telemetry, and which alerts fired in time. Fix the gap now, not during the real thing.
Observability coverage
Every replay doubles as a test of your monitoring. Aftershock checks your Alertmanager and Elastic alerting during the run and tells you which alerts fired, how fast, and which never fired at all.
Release ledger
Your teams keep metrics in Grafana, Datadog and OpenSearch, and a release report means screenshots from all three. Aftershock keeps a summary of every run, for every critical component, for years.
Enterprise readiness
When a large customer signs, they bring traffic you haven't seen and a security team with questions. Aftershock gives SRE teams a way to prove readiness instead of promising it.
Model the new customer's expected traffic, replay it against staging at 2× or 5×, and share a report that shows where the limits are.
One page per release: critical components at risk, regressions this quarter and headroom against the forecast peak, with HTML and PDF exports.
Scheduled capacity tests leave a dated record of what was tested and what passed. Useful for SOC 2 availability controls and customer security questionnaires.
Replay an incident in staging and run the on-call drill against it. Find out whether the pages, dashboards and runbook steps hold up.
Security and data
Aftershock is built to pass your security review, because it holds almost nothing worth taking.
The engine
Requests arrive at the rate production saw, even when your system slows down. Closed-loop tools quietly back off; real users don't.
Latency is measured from when each request should have been sent, so a stalled server can't hide its own slowness.
Full-resolution latency distributions, merged across agents, so p99 and p99.9 mean what they say.
Multi-step journeys with cookies, auth, extracted values and unique synthetic data.
W3C traceparent and the run ID ride along, so your telemetry can be filtered to exactly our traffic.
One binary runs scenarios on your laptop or in CI. The cloud adds coordination, history and reports.
Design partners
We're looking for a small group of SRE teams to build with on real systems before general availability. If incidents keep surprising your team, let's talk.
Aftershock is founded by Ruben Quinones, a former SRE performance engineering leader who has spent years running load tests, capacity reviews and incident retros on large platforms.
Tell us what happened, how you load test today and what you wish you'd known beforehand. The founder reads and answers every message.
A load-testing tool that starts from your production traffic and ends with your observability. It generates the load and reads your existing monitoring; it doesn't replace either.
No. Edge logs (nginx first, more formats to follow) are enough to rebuild journeys and traffic shape. Traces add detail if you keep enough of them.
Only aggregates: scenarios, latency histograms, run metadata, per-service summaries and metric summaries. Raw logs, traces, metrics, payloads and personal data stay with you.
No. Each component is read from whichever tool its team uses, and the report puts them side by side. Prometheus-compatible stacks, Elastic and OpenSearch come first; Datadog is on the roadmap.
Those are good at generating load from scripts you write. Aftershock builds the scenario from your real traffic, replays incidents with their exact shape, checks whether your alerts would have caught them, and keeps the results by release.
It's designed for staging first. Hosted load zones only target domains you've verified, under rate caps, with a kill switch, and during the design-partner program every hosted run is approved by us.
Nothing during the design-partner program. Pricing comes later and will be shaped with our partners.