🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónTiempos de espera y dependencias caídas
5 tareas · 40 min · Principiante
Una aplicación moderna habla con media docena de servicios ajenos, y cada uno puede volverse lento, devolver un error o dejar de contestar. Cuánto se espera, cuántas veces se reintenta y qué se decide cuando la respuesta no llega son decisiones de seguridad, no solo de rendimiento. Droguería Siemprevida te entrega su configuración de servicios, dos clientes HTTP, el controlador del pago, el tablero de un incidente y el registro de una tarde de mantenimiento del antifraude.
Objetivo de la sala
Una aplicación moderna habla con media docena de servicios ajenos, y cada uno puede volverse lento, devolver un error o dejar de contestar. Cuánto se espera, cuántas veces se reintenta y qué se decide cuando la respuesta no llega son decisiones de seguridad, no solo de rendimiento. Droguería Siemprevida te entrega su configuración de servicios, dos clientes HTTP, el controlador del pago, el tablero de un incidente y el registro de una tarde de mantenimiento del antifraude.Mientras una petición espera a un servicio externo, el proceso que la atiende queda ocupado. Si no se declara un tiempo de espera, se usa el del cliente HTTP: en el de Laravel son 30 segundos para toda la petición y 10 para conectar. Cuando una dependencia se vuelve lenta, cada visitante que la toca retiene un proceso hasta ese límite; con suficientes visitantes no queda ninguno libre y la aplicación entera deja de responder, incluidas rutas que nunca usan esa dependencia. Es una falla en cascada, y la aprovecha igual un pico de tráfico legítimo que alguien que la provoca a propósito.
Los reintentos agravan el problema si no se piensan: multiplican la espera y la carga sobre un servicio que ya está mal. Se limitan, se espacian cada vez más y solo se aplican a operaciones que se pueden repetir sin efectos dobles.
Responde para continuar
Una dependencia que solo usa el paso de envío se vuelve lenta. ¿Por qué puede dejar sin servicio también al catálogo?
Ver pista de ayuda
Piensa en qué recurso comparten todas las rutas de la tienda.
Abre el laboratorio y lee servicios.php. Cada bloque declara a dónde se conecta la tienda y, en la mayoría, cuánto espera. Compara los cinco bloques y cruza el resultado con tablero-incidente.txt: el 20 de noviembre los 64 procesos web quedaron ocupados y el catálogo devolvió cientos de errores, con un solo proveedor en problemas.
Responde para continuar
¿Qué dependencia de servicios.php no declara su propio tiempo de espera? Escribe su clave tal como aparece en el archivo.
Ver pista de ayuda
Busca el bloque que solo tiene url.
Ahora lee ClienteTransportadora.php. En el cliente HTTP de Laravel, el primer número de retry es el total de intentos, y el segundo, los milisegundos de pausa entre uno y otro. Cada intento puede esperar hasta el límite que tenga la llamada, y esta llamada no declara ninguno. Calcula cuánto puede quedar ocupado un proceso web por una sola cotización cuando la transportadora contesta justo al borde del límite en todos los intentos.
Responde para continuar
En el peor caso, ¿cuántos segundos puede retener un proceso web una sola cotización de envío, sumando todos sus intentos? Escribe solo el número.
Ver pista de ayuda
Multiplica los intentos por el límite que se aplica cuando la llamada no declara el suyo; la pausa entre intentos es cero.
El cliente HTTP de Laravel no lanza una excepción cuando el servidor responde con un código 4xx o 5xx: devuelve la respuesta y es el código quien debe mirar si fue correcta. Lee ClienteAntifraude.php y CheckoutController.php. El controlador sí maneja bien las excepciones, que aquí son los tiempos de espera agotados: manda el pedido a revisión manual. Pero una respuesta 503 no es una excepción, y el cliente solo compara la decisión con un valor.
Responde para continuar
¿Cuántos pedidos quedaron aprobados después de que el antifraude respondiera con un error del servidor?
Ver pista de ayuda
Cuenta las líneas con un código que empieza por 5 cuyo pedido terminó aprobado.
El registro tiene un segundo síntoma del mismo error: el pedido SV-40507 recibió la decisión revisar, que el proveedor introdujo en su versión 2, y también terminó aprobado. Las dos fallas vienen de escribir la condición al revés: el código enumera lo que bloquea y aprueba todo lo demás, incluido lo que no entiende. Un control de seguridad hace lo contrario: aprueba solo ante una respuesta correcta y explícita, y cualquier otra cosa la trata como duda.
Responde para continuar
¿Qué cambio en ClienteAntifraude corrige las dos aprobaciones indebidas que muestra el registro?
Ver pista de ayuda
Lo que el código no entiende no puede contar como aprobación.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.