“Het werkt op mijn machine.” Hebben we het allemaal gezegd.Maar werkt uw bash script wanneer de API van derden 15 seconden duurt om te reageren?Heeft uw backend-service een plotselinge stijging van 503-fouten van een betalingsleverancier gracieus behandeld? Het schrijven van een full mock server alleen om een eenvoudige retry logica in een script te testen is vaak overkill. . Chaos Engineering directly in the terminal We zullen gebruiken en een cloud-gebaseerde Chaos Proxy om storingen te injecteren in echte netwerkverzoeken zonder een enkele regel van uw applicatiecode te wijzigen. curl Het probleem: Localhost is te perfect Wanneer lokaal ontwikkeld, netwerk latency is bijna nul. API's werken (200 OK) of ze niet (verbinding geweigerd). De server is druk. : 5% van de verzoeken dalen. Je hebt de tarieflimiet bereikt. High Latency Intermittent Failures Throttling Simuleren van dit in een terminal omvat meestal complex regels of lokale hulpmiddelen zoals (Traffic Control) Er is een makkelijker manier. iptables tc De oplossing: Cloud Chaos Proxy In plaats van uw besturingssysteem te configureren, sturen we specifieke verzoeken via een proxy die het verkeer "breekt" volgens de regels die we definiëren. Ik gebruik hiervoor chaos-proxy.debuggo.app, maar het concept geldt voor elke programmeerbare proxy. Video gids (1:27) Hier is de 90 seconden workflow: https://www.youtube.com/watch?v=x_S-guPwPEk&embedable=true Step-by-Step Tutorial 1 Definieer het falen Eerst moeten we de proxy vertellen wat te breken. Doel: httpbin.org (of uw API domein) Vertraging: 7 seconden (Simulatie van vertraging) Failure Rate: 1 (100% van de verzoeken zal falen). Foutcode: 503 Service niet beschikbaar. Vertrouw het certificaat (de "one-time" setup) Omdat we HTTPS-verkeer onderscheppen, moeten we het CA-certificaat van de proxy vertrouwen. Download het van het dashboard. mitmproxy-ca-cert.pem Voeg het toe aan Keychain Access -> Systeem en stel "Always Trust" in. MacOS: Kopieer naar /usr/local/share/ca-certificates/ en update. Linux: 3 Het magische commando Nu gebruiken we Met de Een proxy vlag. curl -x curl -v -x http://user:pass@chaos-proxy.debuggo.app:13979 https://httpbin.org/get Begrijpen van de output Wanneer u deze opdracht meerdere keren uitvoert: Scenario A (The Chaos): Je merkt dat de terminal "hangt" gedurende 7 seconden (onze vertraging). < HTTP/1.1 500 Internal Server Error < content-length: 56 < content-type: text/plain ... Debuggo Chaos Injection: 500 Error De andere 50% van de tijd gaat het verzoek door naar de echte server: Scenario B (Success) < HTTP/1.1 200 OK ... { "args": {}, "headers": { ... } } Real World Use Cases Testen van CI-pijpleidingen: Controleer of uw implementatie-scripts niet instorten als een afhankelijkheid traag is. Cron Jobs: Zorg ervoor dat uw nachtelijke gegevens synchronisatie retries correct op mislukking. Quick Sanity Checks: Controleer voordat u code duwt hoe de API-client een 503-fout behandelt. Conclusie Je hebt geen zware infrastructuur nodig om de veerkracht van het netwerk te testen. Een eenvoudige proxy-installatie stelt je in staat om chaos in elke HTTP-client te injecteren - of het nu is. - het , of uw Python/Node.js scripts. curl wget Happy breaking!