Funcționează pe mașina mea.” Cu toții am spus-o. Dar scriptul dvs. bash funcționează atunci când API-ul terțului are nevoie de 15 secunde pentru a răspunde? Serviciul dvs. backend se ocupă grațios de o creștere bruscă a erorilor 503 de la un furnizor de plăți? Scrierea unui server de mock complet doar pentru a testa o logică simplă de retry într-un script este adesea overkill. . Chaos Engineering directly in the terminal Vom folosi și un proxy Chaos bazat pe cloud pentru a injecta eșecuri în solicitările rețelei reale fără a schimba o singură linie a codului aplicației. curl Problema: Localhost este prea perfect Atunci când se dezvoltă local, latența rețelei este aproape de zero. API-urile fie funcționează (200 OK), fie nu (Conectarea refuzată). Serverul este ocupat. • 5% din cereri scad. Ați atins limita ratei. High Latency Intermittent Failures Throttling Simularea acestui lucru într-un terminal implică de obicei complexul reguli sau instrumente locale, cum ar fi (Controlul traficului) Există o cale mai ușoară. iptables tc Soluția: Cloud Chaos Proxy În loc să vă configurați sistemul de operare, vom direcționa solicitări specifice printr-un proxy care "ruptează" traficul în funcție de regulile pe care le definim. Voi folosi chaos-proxy.debuggo.app pentru aceasta, dar conceptul se aplică oricărui proxy programabil. Ghidul video (1:27) Iată fluxul de lucru de 90 de secunde: https://www.youtube.com/watch?v=x_S-guPwPEk&embedable=true Step-by-Step Tutorial 1 Definiți eșecul În primul rând, trebuie să spunem proxy-ului ce să rupă. Țintă: httpbin.org (sau domeniul API) Întârziere: 7 secunde (simularea întârzierii) Rata de eșec: 1 (100% din solicitări vor eșua). Cod de eroare: 503 Serviciu indisponibil. Încredere în certificat (Setarea „O singură dată”) Deoarece interceptăm traficul HTTPS, trebuie să avem încredere în certificatul CA al proxy-ului. Descărcați de pe dashboard. mitmproxy-ca-cert.pem Adăugați-l la accesul la cheie -> sistem și setați "Întotdeauna încredere". MacOS: Copiați la /usr/local/share/ca-certificates/ și actualizați. Linux: 3. comanda magică Acum folosim Cu cei Proxy pentru steag. curl -x curl -v -x http://user:pass@chaos-proxy.debuggo.app:13979 https://httpbin.org/get Înțelegerea rezultatului Când executați această comandă de mai multe ori: Scenariul A (Chaosul): Veți observa că terminalul "se atârnă" timp de 7 secunde (întârzierea noastră). < HTTP/1.1 500 Internal Server Error < content-length: 56 < content-type: text/plain ... Debuggo Chaos Injection: 500 Error Restul de 50% din timp, cererea trece prin serverul real: Scenario B (Success) < HTTP/1.1 200 OK ... { "args": {}, "headers": { ... } } Real World Use Cases Testarea conductelor CI: Verificați că scripturile de implementare nu se prăbușesc dacă o dependență este lentă. Cron Jobs: Asigurați-vă că sincronizarea nocturnă a datelor reîncepe corect la eșec. Verificări rapide de sănătate: Înainte de a apăsa codul, verificați modul în care clientul API tratează o eroare 503. Concluzie Nu aveți nevoie de o infrastructură grea pentru a testa reziliența rețelei. O setare simplă a proxy-ului vă permite să injectați haos în orice client HTTP - fie că este vorba de , , sau scripturile dvs. Python / Node.js. curl wget Bucură-te de Breaking!