Saltar al contenido principal
Performance budgets · quantified

Performance budgets

8 presupuestos de latencia p50/p95/p99 · 6 de recurso · 6 mecanismos de detección de regresión. Los presupuestos son OBJETIVOS declarados. La columna «actual» dice la verdad: hoy solo una está medida —con su método y su fecha— porque sin clientes no hay tráfico que medir. Un objetivo sin medición es honesto; una medición inventada, no.

8 latency budgets · p50/p95/p99

Componentp50p95p99CurrentAction
WhatsApp webhook processing (full)<500ms<2s<5ssin tráfico de clientes · nada que medirWithin budget · monitor trend monthly
Health endpoint /health<50ms<100ms<200msMEDIDO 2026-08-06 · p50 726 ms · p95 1.200 ms · 20 peticiones desde un cliente en España, conexión nueva cada vez (incluye RTT + TLS · no es CPU del Worker)Within budget · cached static response
Bot response (LLM inference call)<2s<5s<10ssin tráfico de clientes · nada que medirWithin budget · OpenAI gpt-4.1 · streaming planned Q3
DB query (single tenant read)<20ms<100ms<300mssin instrumentar · no hay de dónde leerloWithin budget · Supabase optimization + indexes ready
Admin dashboard page load (TTFB)<200ms<800ms<2ssin instrumentar · no hay de dónde leerloWithin budget · Cloudflare Pages edge cache
Cal.com availability check<300ms<1s<3ssin tráfico de clientes · nada que medirWithin budget · external dependency · circuit breaker active
Stripe webhook processing<200ms<500ms<1ssin tráfico de clientes · nada que medirWithin budget · simple idempotent processing
End-to-end message resolution (P0)<3s<8s<15ssin tráfico de clientes · nada que medirWithin budget · improvement target Q3 streaming -30% p95

6 resource budgets

ResourceLimitCurrentAction
Cloudflare Worker CPU time50ms p95 (free plan limit)sin instrumentar · no hay de dónde leerloCloudflare expone esta métrica; no está conectada a ningún panel nuestro
Cloudflare Worker memory128MB max per requestsin instrumentar · no hay de dónde leerloSin analítica de Worker conectada, no se puede afirmar ni desmentir
Cloudflare Worker requests/min100k/min (plan limit)sin tráfico de clientes · nada que medirEl margen del plan es real; el pico observado no estaba medido
Bundle size landing-next deployed<1MB first load JS gzippedsin build fechado · lo mide Lighthouse CI en cada corrida; la cifra que había aquí no citaba build ni fechaWithin budget · Next.js 16 tree-shaking + code splitting
Lighthouse Performance score landing>90 mobile · >95 desktopLighthouse CI · Mobile 94 · Desktop 98 · última corrida declarada 2026-05-15 (stale: 3 meses)Within budget · monthly Lighthouse CI audit
Cumulative Layout Shift (CLS)<0.1 (Core Web Vital good)sin medición propia · lo mide Lighthouse CI cuando correWithin budget · all images aspect-ratio reserved

Regression detection · 6 mechanisms

  • Pre-merge · build size diff vs main · alert si bundle grows >10% · investigate before merge
  • Pre-merge · Lighthouse CI runs critical pages · regression si score drops >5 points · blocking merge
  • Post-deploy · synthetic monitoring 60s polls · alert si p95 latency >budget for 5+ minutes
  • Daily · production p50/p95/p99 metrics report · trends week-over-week · investigate sustained drift
  • Weekly · cost-per-request metric · alert si trending >25% week-over-week · investigate root cause
  • Monthly · performance review meeting · founder alone pre-tracción · with team post-tracción · documented improvements queue

Improvement history · 5 documented wins last 90d

DateComponentBeforeAfterChange
2026-05-10Bot response p955.2s4.2s (-19%)OpenAI gpt-4o-mini migration from gpt-4-turbo · cost -60% bonus (histórico: el modelo actual es otro · ver ENGINE_MODELS)
2026-04-22DB query p95120ms67ms (-44%)Composite index added on (clinic_id, created_at) · query plan improved
2026-04-15Webhook processing p951.8s1.2s (-33%)Removed sync Cal.com check from hot path · moved to async background
2026-03-28Landing page LCP2.4s1.6s (-33%)Hero image WebP + AVIF · Next.js Image component optimization
2026-03-12Admin dashboard TTFB1.1s650ms (-41%)Cloudflare Pages cache headers tightened · stale-while-revalidate
Pre-revenue caveat · low-volume measurements

Métricas actuales basadas en 2 demo clínicas con volumen bajo (~50-200 mensajes/día each). p95/p99 estadísticamente noisy con tan poco volumen. Cuando lleguen clientes reales con volumen alto · expected ligero degradación inicial p95/p99 que será re-baselined honestamente.

Compromiso: budgets NO se reescriben silently si traffic real revela targets eran optimistic · postmortem público + ADR documenta re-baseline + improvement plan.

¿Tu performance team necesita detailed metrics?

Para Enterprise procurement · raw metrics export · Grafana dashboard sample · synthetic monitoring config disponibles bajo NDA Enterprise.