UNPKG

create-hokage-js-app

Version:

πŸ”₯ Best CLI tool to create a MERN stack template. Quick, clean, and customizable.

116 lines (81 loc) β€’ 2.69 kB
# Workflow: Performance Review Procedure for reviewing or improving performance characteristics of a change or hotspot. --- ## When to Run - New list/search/report endpoints - Changes to hot-path queries or serializers - Caching introduced/changed - User reports slowness / SLO burn - Large batch jobs added --- ## Step 1 β€” Define the Budget State the target: - API p95 latency budget - Throughput (RPS) expectation - Payload size limits - Memory ceiling for workers - Frontend: LCP/INP budgets if applicable Without a budget, β€œfaster” is undefined. --- ## Step 2 β€” Measure Gather evidence: - APM traces / flame graphs - DB `EXPLAIN (ANALYZE, BUFFERS)` - Query counts per request - Allocation profiles when memory-bound - Realistically sized data (prod-like volume) Do not optimize based on guesses alone. --- ## Step 3 β€” Identify Dominant Cost Classify the top cost: | Class | Typical fix | |-------|-------------| | Too many queries (N+1) | Batch / join / dataloader | | Slow query | Index, rewrite, denormalize carefully | | Overfetching | Select fewer columns; paginate | | External dependency latency | Timeout, parallelize, cache, async | | CPU serialization / templates | Cache, simplify payload, streaming | | Lock contention | Shorter transactions, queue, optimistic concurrency | | Unbounded work in request | Move to async job | Fix the top consumer first. --- ## Step 4 β€” Apply Fix Safely - Prefer simpler fixes (index, limit) over new caches. - Every cache needs TTL + invalidation/key design + tenant isolation. - Every external call retains timeout + resilience policy. - Validate correctness with tests; performance work that changes results is a bug. --- ## Step 5 β€” Re-measure - Compare p50/p95 and query counts before/after - Watch error rates β€” timeouts may increase if you tighten budgets incorrectly - Document results in the PR --- ## Performance Review Checklist - [ ] Budget stated - [ ] Measurement attached (EXPLAIN, trace screenshot/numbers) - [ ] No N+1 - [ ] Result sets bounded - [ ] Indexes justified (not speculative shotgun indexing) - [ ] Cache correctness reviewed (if any) - [ ] Timeouts/bulkheads present - [ ] No large sync work left on request thread without justification - [ ] Regression risk assessed --- ## Red Flags in PRs - `findAll()` without pagination - Queries inside loops - Remote calls inside DB transactions - Cache keys missing tenant/user - Loading full ORM graphs to compute one field - `SELECT *` on wide tables for lists --- ## Output Template ```markdown ## Performance Review - Budget: ... - Before: ... - Bottleneck: ... - Change: ... - After: ... - Residual risk: ... ```