“Funciona en mi máquina”. ¿Pero su script bash funciona cuando la API de terceros tarda 15 segundos en responder? ¿Su servicio de backend trata graciosamente un aumento repentino de errores 503 de un proveedor de pago? Escribir un servidor de mock completo solo para probar una lógica de retry simple en un guión a menudo es overkill. . Chaos Engineering directly in the terminal Nosotros utilizaremos y un proxy Chaos basado en la nube para inyectar fallos en solicitudes de red reales sin cambiar una sola línea de código de su aplicación. curl El problema: Localhost es demasiado perfecto Cuando se desarrolla localmente, la latencia de la red está cerca de cero. Las APIs funcionan (200 OK) o no (Conexión rechazada). El servidor está ocupado. : 5% de las solicitudes caen. : Usted ha golpeado el límite de tasa. High Latency Intermittent Failures Throttling Simular esto en un terminal suele implicar complejo reglas o herramientas locales como (Control de tráfico) Hay una manera más fácil. iptables tc Solución: Cloud Chaos Proxy En lugar de configurar su sistema operativo, redirigiremos solicitudes específicas a través de un proxy que "rompe" el tráfico de acuerdo con las reglas que definimos. Utilizaré chaos-proxy.debuggo.app para esto, pero el concepto se aplica a cualquier proxy programable. Guía de vídeo (1:27) Aquí está el flujo de trabajo de 90 segundos: https://www.youtube.com/watch?v=x_S-guPwPEk&embedable=true Step-by-Step Tutorial 1 Define el fracaso Primero, debemos decirle al proxy qué romper. Target: httpbin.org (o su dominio de API). Retraso: 7 segundos (Lag simulado) Tasa de fracaso: 1 (100% de las solicitudes fallarán). Código de error: 503 Servicio no disponible. Confía en el certificado (la configuración "una vez") Dado que estamos interceptando el tráfico HTTPS, necesitamos confiar en el certificado CA del proxy. Descargar el desde el dashboard. mitmproxy-ca-cert.pem Añádelo a Keychain Access -> Sistema y establezca "Siempre Confía". MacOS: Copia a /usr/local/share/ca-certificates/ y actualiza. Linux: 3 El mando mágico Ahora, utilizamos Con la La bandera Proxy. curl -x curl -v -x http://user:pass@chaos-proxy.debuggo.app:13979 https://httpbin.org/get Comprender el resultado Cuando se ejecuta este comando varias veces: Escenario A (El Caos): Se notará que el terminal "se coloca" durante 7 segundos (nuestra demora). < HTTP/1.1 500 Internal Server Error < content-length: 56 < content-type: text/plain ... Debuggo Chaos Injection: 500 Error El otro 50% del tiempo, la solicitud pasa a través del servidor real: Scenario B (Success) < HTTP/1.1 200 OK ... { "args": {}, "headers": { ... } } Real World Use Cases Prueba de tuberías CI: Verifique que sus scripts de implementación no se colapsen si una dependencia es lenta. Cron Jobs: Asegúrese de que sus retiros de sincronización de datos nocturnos sean correctos en caso de falla. Controles rápidos de sanidad: Antes de presionar el código, verifique cómo el cliente de la API maneja un error 503. Conclusión Usted no necesita una infraestructura pesada para probar la resiliencia de la red. Una configuración simple de proxy le permite inyectar el caos en cualquier cliente HTTP. , de , o sus scripts Python/Node.js. curl wget ¡Happy Breaking!