Det virker på min maskine.” Har vi alle sagt det. Men fungerer dit bash script, når tredjeparts-API tager 15 sekunder at svare? håndterer din backend-tjeneste graciøst en pludselig stigning i 503-fejl fra en betalingsudbyder? At skrive en fuld mock server bare for at teste en simpel retry logik i et script er ofte overkill. . Chaos Engineering directly in the terminal Vi vil bruge og en cloud-baseret Chaos Proxy til at injicere fejl i rigtige netværksforespørgsler uden at ændre en enkelt linje af din applikationskode. curl Problemet: Localhost er for perfekt Når du udvikler lokalt, er netværkslatensen tæt på nul. API'er enten fungerer (200 OK) eller de ikke (forbindelse nægtet). Serveren er optaget. 5 % af anmodningerne falder. Du har ramt satsgrænsen. High Latency Intermittent Failures Throttling Simulering af dette i en terminal involverer normalt komplekse Regler eller lokale værktøjer som (Trafikstyring) Der er en nemmere måde. iptables tc Løsningen: Cloud Chaos Proxy I stedet for at konfigurere dit OS, vil vi rute specifikke anmodninger gennem en proxy, der "bryder" trafikken i henhold til regler, vi definerer. Jeg vil bruge chaos-proxy.debuggo.app til dette, men konceptet gælder for enhver programmerbar proxy. Videovejledning (1:27) Her er 90 sekunders arbejdsproces: https://www.youtube.com/watch?v=x_S-guPwPEk&embedable=true Step-by-Step Tutorial 1) Definition af fiasko Først skal vi fortælle proxy, hvad man skal bryde. Mål: httpbin.org (eller dit API domæne) Forsinkelse: 7 sekunder (Simuleret forsinkelse) Svigtfrekvens: 1 (100% af anmodningerne vil mislykkes). Fejlkode: 503 Tjeneste ikke tilgængelig. Tillid til certifikatet (The "One-Time" Setup) Da vi aflytter HTTPS-trafik, skal vi stole på proxyens CA-certifikat. Download den af Dashboard. mitmproxy-ca-cert.pem Tilføj det til Keychain Access -> System og sæt "Always Trust." MacOS: Kopiér til /usr/local/share/ca-certificates/ og opdater. Linux: Den magiske kommando Nu bruger vi Med den Flag af proxy. curl -x curl -v -x http://user:pass@chaos-proxy.debuggo.app:13979 https://httpbin.org/get Forstå udbyttet Når du kører denne kommando flere gange: Scenario A (The Chaos): Du vil bemærke terminalen "hænger" i 7 sekunder (vores forsinkelse). < HTTP/1.1 500 Internal Server Error < content-length: 56 < content-type: text/plain ... Debuggo Chaos Injection: 500 Error Den anden 50% af tiden, forespørgslen passerer gennem til den virkelige server: Scenario B (Success) < HTTP/1.1 200 OK ... { "args": {}, "headers": { ... } } Real World Use Cases Test af CI-rørledninger: Kontroller, at dine implementeringsskripter ikke kolliderer, hvis en afhængighed er langsom. Cron Jobs: Sørg for, at dine natlige data synkroniseres korrekt ved fejl. Quick Sanity Checks: Før du trykker koden, skal du kontrollere, hvordan API-klienten håndterer en 503-fejl. Konklusionen Du behøver ikke tunge infrastrukturer til at teste netværksmodstandsdygtighed. En simpel proxy-installation giver dig mulighed for at injicere kaos i enhver HTTP-klient – det være sig det. , der , eller dine Python/Node.js scripts. curl wget Held og lykke!