Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Tiempos 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.

0 de 5 · 0%

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.

Inicia sesión para registrar tus puntos y progreso en el ranking.

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