Cadena de timeouts y tormentas de reintentos
Una integracion lenta o inestable dispara reintentos, bloqueos y cascadas de fallas entre servicios.
📈 Que cambia para el negocio
Ayuda a reducir fallas en cascada y a disenar limites mas sanos de timeout, retry y backoff.
💼 Que demuestra tecnicamente
Demuestra resiliencia aplicada mostrando como una dependencia lenta se convierte en incidente mayor cuando el servicio propio reintenta sin control.
✅ Evidencia que deja
- Contrasta /quote-legacy y /quote-resilient sobre el mismo proveedor simulado.
- Hace visible el costo de retries agresivos, timeouts repetidos y respuestas degradadas con fallback.
- Expone dependency/state, incidents y diagnostics/summary para leer el comportamiento del circuit breaker.
👀 Que mirar al ejecutarlo
- Si legacy tarda mas y consume mas intentos ante el mismo escenario provider_down.
- Si resilient abre circuito, usa fallback y contiene la degradacion.
- Si diagnostics/summary deja claro cuando la carga se amplifica y cuando queda contenida.
Como esta resuelto en cada stack
PHP 8.3 con retries legacy vs timeout corto, backoff, circuit breaker y fallback; Python con misma logica; Node.js 22 con AbortController/AbortSignal, circuit breaker y fallback; Java 21 con CompletableFuture.orTimeout + AtomicReference<BreakerState> CAS; .NET 8 con CancellationTokenSource con timeout + breaker Interlocked CAS
| Stack | Health check local | Compose | Detalle |
|---|---|---|---|
| 🐘 PHP 8.3 | http://localhost:8100/04/health | compose.root.yml | README del stack |
| 🐍 Python 3.12 | http://localhost:8200/04/health | compose.python.yml | README del stack |
| 🟢 Node.js 22 | http://localhost:8300/04/health | compose.nodejs.yml | README del stack |
| ☕ Java 21 | http://localhost:8400/04/health | compose.java.yml | README del stack |
| 🔵 .NET 8 | http://localhost:8500/04/health | compose.dotnet.yml | README del stack |
| 🐹 Go 1.23 | http://localhost:8600/04/health | compose.go.yml | README del stack |
| 🦀 Rust 1.83 | http://localhost:8700/04/health | compose.rust.yml | README del stack |
El expediente completo
El caso no empieza en el codigo: empieza en el sintoma y termina en el postmortem.