From dev to prod in 15 minutes — small-team release engineering
Many small teams take hours to ship a single PR — manual checks, slow CI, fragile deploys, on-call coordination. Getting commit-to-prod under 15 minutes is achievable with focused decisions on each pipeline stage.
The gap between "PR ready" and "running in production" is often hours for small teams. Not because anything is broken, but because each stage takes longer than necessary, and the sum is brutal.
Getting it under 15 minutes — including review, CI, deploy, monitoring — is achievable. The win compounds: faster feedback, less context-switching, more confident shipping.
The 15-minute breakdown
- 0-5 min: PR review.
- 5-10 min: CI (lint, test, build).
- 10-12 min: Deploy.
- 12-15 min: Smoke test, monitor.
Each stage has specific blockers and fixes.
PR review — make it fast
Most PRs don't need senior review. Most reviews don't need to take a day.
- Small PRs. Aim for <200 lines changed. Big PRs sit in review for days; small ones get reviewed in 5 minutes.
- Auto-merge on approval. GitHub auto-merge when CI passes plus 1 approval.
- Codeowners file. Routes reviews to relevant people automatically.
- Don't require multiple reviewers. One reviewer is plenty for small team. Two adds delay without value.
- Junior reviewers welcome. Review is also learning. Senior bottleneck is artificial.
CI — under 10 minutes
If CI takes 30 minutes, the rest doesn't matter.
- Test selection. Run only tests for changed code. Tools like Vitest, Nx, Pytest with pytest-changed-tests.
- Parallelize. Split test suite across runners. GitHub Actions matrix.
- Skip what doesn't matter. Frontend PR doesn't need backend tests.
- Cache dependencies. Don't reinstall on every run.
- Optimize Docker builds. Multi-stage, layer caching, build only what changed.
- Profile and fix. Find the slowest test. Either fix or move to nightly.
5-7 minute CI is a great target for typical SaaS.
Deploy — under 3 minutes
- Pre-built artifacts. CI built the Docker image; deploy just retags it.
- Rolling deploy with health checks. Avoid downtime, abort if health check fails.
- Database migrations separate. Run before deploy; safe to skip if schema unchanged.
- No manual steps. Click-ops kills speed.
Vercel, Cloudflare Pages, Netlify deploy in under a minute. Custom Kubernetes deploys with rolling restart take 2-3 minutes. Both fine.
Smoke test — under 3 minutes
After deploy:
- 5-10 critical endpoint health checks.
- Verify monitoring shows expected traffic patterns.
- Check error rate from Sentry — should match baseline.
- If anything looks off, automatic rollback.
Automated smoke test catches deploys that complete but broke things.
The full pipeline, instrumented
commit pushed at 14:00:00
PR opened at 14:01:30
review done at 14:04:20 (2:50)
CI started at 14:01:35
CI finished at 14:08:42 (7:07)
merged at 14:08:50
deploy start 14:09:00
deploy done 14:11:30 (2:30)
smoke pass 14:13:00 (1:30)
live in prod 14:13:00 (13 min from commit)
Instrument this. Look at p50 and p95 times. Optimize bottlenecks.
Rollback under 2 minutes
When something goes wrong, rollback must be fast:
- Previous N images kept ready in registry.
- One command/script triggers redeploy of last good version.
- No human gate (use feature flags for safer alternatives).
- Auto-rollback on health check failure during deploy.
Feature flags
Deploys are scary. Feature flags decouple deploy from release:
- Deploy code at any time (no user impact).
- Toggle flag separately (controlled rollout).
- Disable flag if problems (instant rollback without deploy).
Use ConfigCat, GrowthBook, Unleash, or a simple Postgres-backed flag service.
Reduce review friction
- Define what doesn't need review (typo fix, dependency update with passing tests, documentation).
- Auto-merge bots for renovate/dependabot PRs.
- Pair programming counts as review.
- Mob programming for high-risk changes.
Cultural elements
- Trust developers. Process exists to support, not replace, judgment.
- Blameless postmortems. Mistakes are inevitable; learn fast.
- No "deploy blocks" for vague reasons. Either it's broken or it ships.
- Friday deploys are okay if your pipeline is reliable. Banning them is admission your pipeline isn't trustworthy.
When 15 minutes is wrong
- Regulated environments (banking, healthcare) needing audit trails.
- Long integration tests with external systems.
- Heavily-dependent multi-service deploys.
For most boutique SaaS, none of these apply. The 15-minute target works.
Verdict
Commit-to-prod under 15 minutes is a sensible target for small teams shipping web apps. Small PRs, fast CI, automated deploy, automated smoke tests, fast rollback. Cultural support for trust and blameless post-mortems. Compound benefits — faster feedback loops, less context switching, more confident shipping.