Skip to main content
Oct 8, 2026shift left performance testing

By Lucas Yoris · Performate

Shift-Left Performance: Who Owns the First k6 Script in a Product Team?

Shift-left performance with k6: DRIs, CI thresholds, and who owns the first script—SRE workbook culture meets k6 automation.

Platform emails say “shift-left performance,” but the new checkout service ships without a single k6 file in its repo. Postman collections exist; CI runs unit tests; and the first production incident becomes a debate about who should have load-tested—platform, SRE, or the squad that owns the feature.

Shift-left only works when ownership is named before scale, not assigned after an outage. This guide defines who owns the first k6 script in a product team, what that script must cover, how it graduates to CI, and which rituals keep it from rotting when the DRI rotates.

Why the first script owner matters more than a perf guild

Guilds and centers of excellence help with templates and training—they do not replace a directly responsible individual (DRI) on the squad that changes the API every sprint (SRE workbook culture).

  • Feature squads know which endpoints moved and which auth flows broke.
  • Platform provides secrets management, runner capacity, and golden templates—not every scenario.
  • SRE defines SLO math and reviews error-budget burn; they should not be the only author of squad scripts.
  • QA validates that reports map to acceptance criteria stakeholders already use.

The first script is intentionally small: readiness + one golden business path (for example login → read → write), not a whole-system simulation. Scope creep on day one is why teams never start.

When “platform owns perf” fails

Handoffs without a squad DRI mean scripts live in a orphaned repo, thresholds reference retired URLs, and CI secrets expire silently. The fix is not more meetings—it is a smoke scenario tagged with owner:checkout in k6 and a name in SERVICE.md.

Pair ownership with quarterly scenario health checks so the first script becomes a maintained asset, not a one-off hero run.

Practical k6: squad-owned smoke with promotion path

The DRI ships a smoke script in sprint one, then promotes the same file to CI after two green desktop runs.

Example script (illustrative). Adapt routes and auth to your service.

What this example demonstrates:

  • Low blast radius: per-vu-iterations with 3 VUs proves wiring before ARR tests.
  • Owner tags: owner:checkout (via env) shows up in reports and on-call filters.
  • Readiness + business path: /ready then /api/orders catches “up but useless.”
  • Threshold on errors only at smoke stage—add latency thresholds when baseline exists.
import http from 'k6/http';
import { check, sleep } from 'k6';

const BASE = __ENV.API_BASE || 'https://staging.example.com';
const SQUAD = __ENV.SQUAD || 'checkout';

export const options = {
  scenarios: {
    squad_smoke: {
      executor: 'per-vu-iterations',
      vus: 3,
      iterations: 5,
      tags: { owner: SQUAD, suite: 'smoke' },
    },
  },
  thresholds: {
    http_req_failed: ['rate<0.01'],
  },
};

export default function () {
  const ready = http.get(`${BASE}/ready`, { tags: { route: 'ready', owner: SQUAD } });
  check(ready, { ready: (r) => r.status === 200 });

  const orders = http.get(`${BASE}/api/orders`, {
    headers: { Authorization: `Bearer ${__ENV.TOKEN}` },
    tags: { route: 'orders', owner: SQUAD },
  });
  check(orders, { orders_ok: (r) => r.status >= 200 && r.status < 500 });
  sleep(0.5);
}

Patterns that work

  • Same Postman folder the squad already maintains → import instead of rewrite (Postman to k6).
  • Promote to smoke/load CI profiles only after two green runs on the same commit.
  • Add p(95) thresholds when product agrees on a number—not before.

Anti-patterns

  • Waiting for a dedicated perf hire before any script exists.
  • Platform team writing scripts without squad review—drift in auth within two sprints.
  • 500 VUs on first run—use VU and think-time sanity before scaling.

Decision framework: who does what at each maturity stage

StageSquad DRIPlatformSRE
New service (sprint 0–2)Author smoke; run locallyProvide template + secretsAgree SLO candidate
GA approachingAdd steady ARR scenarioWire CI runnerReview threshold vs error budget
Shared API consumed by manyExtend platform templateOwn breaking-change noticeMonitor tail across squads
Regulated dataCo-sign synthetic data onlyEnforce no-prod-data policyAudit trail of runs

Escalate to platform when runners, secrets, or shared templates block progress—not when the squad is unsure which route matters.

Escalate to SRE when thresholds need error-budget math or incident correlation—not to write the first smoke for every team.

Observability, documentation, and next steps

  • Record DRI name and backup in SERVICE.md or team handbook.
  • Link k6 workspace or repo path in the service README.
  • Add smoke job to CI within two sprints of service creation.
  • Archive first green export with git SHA for future regressions.
  • Schedule quarterly health review of smoke + steady scenarios.

How Performate enables shift-left ownership on the squad

Example: checkout squad ships week-one smoke

  1. Import the squad’s Postman folder on day one—no waiting for platform glue code. Problem solved: DRI starts from requests they already curate.
  2. Create squad_smoke in the visual editor with owner tag checkout. Problem solved: tags match the k6 model above without YAML typos.
  3. Run locally against staging; fix env secrets in Performate profiles. Problem solved: faster loop than hand-editing .env per developer.
  4. Add http_req_failed threshold; later add p(95) when SLO number exists. Problem solved: progressive gates without new files.
  5. Export k6 to the service repo; platform wires CI using the same file. Problem solved: one artifact from desktop to pipeline.
  6. Hand off PDF export to on-call runbooks with route tags for incidents. Problem solved: perf evidence lives where responders already look.

Closing takeaway

Shift-left performance is a named owner plus a smoke script, not a department slogan. Nominate the squad DRI, ship readiness + one golden path this sprint, and promote to CI only after evidence—not aspiration.

Add the DRI name to SERVICE.md today and run the smoke once before the next planning meeting asks for “perf confidence.”

Try Performate free | Guides | Book a demo

Ready to optimize your API performance?

Explore how Performate simplifies k6 load testing—from imports to results—so your team ships performance confidence faster.

← Back to all posts