Definición: Patrón de resiliencia que previene fallos en cascada en sistemas distribuidos, deteniendo las peticiones a un servicio que falla repetidamente para permitir su recuperación.
— Fuente: NERVICO, Consultoría de Desarrollo de Producto
Qué es el patrón circuit breaker
El circuit breaker es un patrón de resiliencia para sistemas distribuidos que funciona de manera análoga a un interruptor eléctrico. Cuando un servicio externo falla repetidamente, el circuit breaker “se abre” para detener las peticiones hacia ese servicio, evitando que el fallo se propague al resto del sistema. Tras un tiempo configurable, permite peticiones de prueba para verificar si el servicio se ha recuperado.
Este patrón fue popularizado por Michael Nygard en su libro “Release It!” y es fundamental en arquitecturas de microservicios.
Cómo funciona
El circuit breaker opera en tres estados. En estado cerrado, las peticiones fluyen normalmente y se monitoriza la tasa de errores. Cuando los errores superan un umbral configurado, el circuit breaker pasa a estado abierto: todas las peticiones se rechazan inmediatamente con un error predefinido, sin intentar contactar al servicio remoto. Tras un periodo de espera, entra en estado semi-abierto, donde permite un numero limitado de peticiones de prueba. Si estas tienen éxito, vuelve a cerrarse. Si fallan, se abre de nuevo.
Bibliotecas como Resilience4j (Java), Polly (.NET) o Hystrix implementan este patrón con configuración declarativa.
Por qué importa
Sin circuit breaker, cuando un servicio dependiente falla, las peticiones se acumulan esperando respuesta, consumiendo hilos y conexiones. Esto degrada progresivamente el servicio que hace las llamadas, que a su vez degrada a otros que dependen de él, generando un efecto cascada que puede tumbar todo el sistema.
Ejemplo práctico
Un servicio de checkout llama al servicio de inventario para verificar stock. El servicio de inventario empieza a responder con latencia de 30 segundos en lugar de 50 milisegundos. Sin circuit breaker, los hilos del checkout se bloquean esperando, y en minutos el checkout deja de funcionar. Con circuit breaker configurado a un umbral de 5 fallos consecutivos, tras detectar el problema se abre el circuito y el checkout responde inmediatamente con “verificación de stock temporalmente no disponible”, manteniendo funcional el resto del flujo de compra.