clement13.net
Original photo: Tableau de bord d'automobile de nuit : compte-tours et compteur de vitesse aux aiguilles rouges.
Description
Tableau de bord d'automobile de nuit : compte-tours et compteur de vitesse aux aiguilles rouges.
Source
Spacekid · original page
Licence
CC0 Public domain
Original photo, unretouched. The background is a version of it stylised by the site.

Performance and Scalability

This theme measures the software's ability to maintain its response times and processing times as volume or load increase, and the team's ability to prove it before…

Guide≈ 6 min readCheckedCheck doneFacts, figures and references were checked against the sources cited in the page.Written with AI assistance; sources are cited at the bottom of the page. An error? Report it via clement13.net.Reading
In brief

This theme measures the software's ability to maintain its response times and processing times as volume or load increase, and the team's ability to prove it before production. Commitments are expressed in latency percentiles, processing duration, and growth margin. Performance specific to reports and the semantic model is covered in BI 03.

On this page

Level: 🟢→🔴 · Theme code: PRF (DL matrix)

Why this theme#

Performance is technical debt that shows up all at once: everything works with the acceptance testing dataset, then real volume multiplies runtime by ten or a hundred because an algorithm is quadratic, an index is missing, or an execution plan changed. Little's Law (the average number of items in a system equals throughput multiplied by average time in system) reminds us that a saturated system sees delays explode nonlinearly: at 90% utilization, the queue is already long.

Two golden rules: measure before optimizing (intuition gets bottlenecks wrong), and reason in percentiles rather than averages (a p50 at 200 ms with a p99 at 8 s is poor service for 1 request out of 100). For batch data processing, the equivalent is the processing window: total duration, margin before the critical time, growth relative to volume.

Measurement variability: on shared platforms (elastic pool, shared capacity), elapsed time can vary by a factor of two from one run to another; measuring CPU consumption and logical reads, multiple times and in alternation, is more reliable than comparing single durations.

What the theme measures#

  • Axis: from “we discover slowdowns in production” to “performance is a design criterion that is tested, budgeted, and monitored.”
  • Key indicators: p95/p99 latency of critical operations; processing window duration and margin; elasticity (cost and time to absorb ×2 volume); share of performance regressions detected before production.
  • Unit: ms/s; minutes; ratio; %.

Five-level table#

Level Short name Commitment Typical indicator (orders of magnitude)
1 Suffered Performance is known only when it becomes a problem. No measurement; complaints
2 Measured We know how long each critical operation takes today. Spot measurements; quantified baseline
3 Budgeted Each critical operation has a budget, and overruns are seen before delivery. Budgets; non-regression test; documented p95
4 Projected We know what ×3 or ×10 volume will produce, and the cost to absorb it. Load tests on target volumes; margin ≥ 50%
5 Elastic The system adapts to load without intervention, with cost proportional to usage. Automatic scaling; cost per service unit tracked

Milestones by level#

ID Milestone Verifiable evidence
DL-PRF-1.1 The operations most sensitive to slowness are identified List of 5 to 10 critical operations
DL-PRF-1.2 Processing durations are logged Browsable history
DL-PRF-1.3 Production resources (CPU, memory, storage, I/O) are observable Dashboard available
DL-PRF-2.1 A baseline measurement exists for each critical operation (p50/p95) Dated table
DL-PRF-2.2 Measurements are taken on a dataset with representative volume Volume compared with production (≥ 50%)
DL-PRF-2.3 The measurement method is written down (repetitions, cache state, conditions) Written protocol
DL-PRF-2.4 Execution plans for critical queries are kept and understood Archived plans
DL-PRF-3.1 Each critical operation has a performance budget (time, resources) validated with the business Budget document
DL-PRF-3.2 An automated performance test detects regressions in CI or overnight A deliberate regression is detected
DL-PRF-3.3 Optimizations are decided based on measurement (profile, plan), never intuition Before/after file for 5 optimizations
DL-PRF-3.4 Data access is analyzed regularly (indexes, N+1 queries, locks) Quarterly review
DL-PRF-3.5 The processing window and its margin are known Duration / available window
DL-PRF-4.1 Load tests are run on volumes ≥ 3× current volume Test reports
DL-PRF-4.2 The algorithmic complexity of bulk processing is analyzed (time growth with volume) Duration = f(volume) curves
DL-PRF-4.3 A capacity plan projects 12-month usage and cost Dated, revised plan
DL-PRF-4.4 Bulk processing is incremental or partitionable when volume requires it Partial processing proven
DL-PRF-4.5 Processing window margin is ≥ 50% Measurement over 3 months
DL-PRF-5.1 Scaling is automatic or triggered in < 1 h based on indicator Load ramp-up test
DL-PRF-5.2 Cost per service unit (per user, per million rows) is tracked Cost curve
DL-PRF-5.3 Performance regressions in production are detected in < 1 day by comparison with baseline Drift alert
DL-PRF-5.4 Design choices are validated by load prototypes before commitment Prototype file

Detailed reading by level#

🟢 Level 1 — Suffered#

  • Signs: “it's been slow since Monday”; emergency fixes; indexes added blindly.
  • Benefit: no investment.
  • Does not guarantee: that slowness remains manageable as volume grows.
  • Difficulty: 1/5 · Effort: 1/5.

🟢 Level 2 — Measured#

  • Signs: a baseline duration table, a representative dataset, preserved execution plans. The team talks in numbers.
  • Benefit: a comparison baseline; end of opinion debates.
  • Does not guarantee: anticipation.
  • Difficulty: 2/5 · Effort: 2/5.

🟡 Level 3 — Budgeted#

  • Signs: a budget (“the page loads in under 2 s at p95,” “consolidation finishes in under 90 min”) and a test that fails if it is exceeded. Optimizations are documented before/after.
  • Benefit: regressions are caught at the source.
  • Does not guarantee: holding up at higher volume.
  • Difficulty: 3/5 · Effort: 3/5.

🔴 Level 4 — Projected#

  • Signs: we plot duration = f(volume) to know whether growth is linear or quadratic; we test at ×3; we have a capacity plan. A process that goes from 20 min to 80 min when volume doubles is a signal of excessive complexity.
  • Benefit: we invest before failure, not after.
  • Does not guarantee: automatic elasticity.
  • Difficulty: 4/5 · Effort: 4/5.

🔴 Level 5 — Elastic#

  • Signs: indicator-based scaling; usage-based cost; drift detected in production.
  • Benefit: performance and cost follow demand.
  • Does not guarantee: cost control without governance — elasticity can also cause the bill to drift.
  • Difficulty: 5/5 · Effort: 5/5.

Partial achievement and rating#

Apply the rating rule.

  • 0.5 on DL-PRF-3.2: the performance test exists, but runs only before major releases.
  • 0.5 on DL-PRF-4.1: load tests only at ×1.5.
  • A partial 5: cost per service unit is tracked, scaling is still manual.
⚠️ Pitfall

Optimizing without measuring. Symptom: three weeks to gain 2% on a step that accounts for 3% of the total. Cause: intuition. Remedy: profile first; target the largest share of total time.

⚠️ Pitfall

Dataset too clean. Symptom: everything is fast in acceptance testing, slow in production. Cause: non-representative volumes, value distribution, and statistics (parameter bias, asymmetry). Remedy: realistic-volume dataset and real (anonymized) distribution.

💡 Expert tip

Measure across several runs in alternation (A, B, A, B…) rather than in sequence; on a shared platform, compare CPU consumption and logical reads, not just elapsed time.

🧪 Example

A consolidation goes from 40 to 48 min with +20% volume (linear growth, comfortable margin). After adding a join on a non-indexed column, it goes from 48 min to 3 h: the overnight non-regression test (milestone 3.2) would have flagged it the next day, and the preserved execution plan (2.4) shows a full scan.

⚠️ Pitfall (Goodhart)

A budget set on the average is met by sacrificing extreme cases. Set it on a high percentile and monitor the tail.

Moving to the next level#

Possible means (optional)

  • 1 → 2: baseline table, real-volume dataset, plan archiving.
  • 2 → 3: budgets shared with the business, overnight non-regression test.
  • 3 → 4: tests at ×3, duration-volume curves, incremental or partitioned processing, capacity plan.
  • 4 → 5: automatic scaling, unit cost tracking, production drift detection.

See also#

✻ Written by Claude Sonnet 5.5