La maggior parte dei sistemi distribuiti funziona correttamente in condizioni di rete nominali. Ma quando la latenza aumenta o le API HTTP a monte restituiscono errori 502 casuali, le normali strategie di gestione delle eccezioni crollano. ChaosProxy agisce come un middleware e sidecar per testare con precisione queste condizioni al limite.
Come si integra ChaosProxy nell'architettura
Posizionando ChaosProxy tra i tuoi servizi Python e le API esterne o i microservizi interni, puoi intercettare il traffico in uscita. Configuri regole dichiarative per il drop dei pacchetti, jitter artificiale e codici di stato di errore forzati senza modificare il codice applicativo.
Iniezione dichiarativa dei guasti
ChaosProxy mette a disposizione un'interfaccia Python pulita per configurare regole di guasto dinamiche durante i test di integrazione o le pipeline CI di resilienza.
from chaosproxy import ChaosProxy, LatencyRule, FailureRule
# Inizializza il proxy locale puntando a un'API a monte
proxy = ChaosProxy(target_url="https://api.payment-gateway.com", port=8080)
# Inietta 1500ms di latenza sul 30% delle richieste
proxy.add_rule(LatencyRule(delay_ms=1500, probability=0.30))
# Forza HTTP 503 Service Unavailable su POST /v1/charges (probabilità 10%)
proxy.add_rule(FailureRule(
method="POST",
path_pattern="/v1/charges",
status_code=503,
probability=0.10
))
proxy.start()Automazione della resilienza in CI/CD
L'integrazione dell'iniezione dei guasti direttamente nelle suite pytest assicura che le strategie di fallback, i meccanismi di retry e i circuit breaker vengano verificati automaticamente a ogni pull request.