Lo que no controlamos · Episodio 4 de 6
Dejar de llamar a quien no responde
La conexión con Bizum lleva dos minutos caída. Operaciones sigue llamando: cada llamada espera un segundo para fallar, Laura espera ese segundo y, cuando Bizum se recupere, recibirá toda la cola de golpe. Hay un momento en que hay que dejar de llamar.
El punto de partida
Reintentar con espera y jitter ayuda con los fallos breves. Pero cuando un sistema lleva minutos caído, cada reintento es una llamada perdida: ocupa una plaza, hace esperar a un cliente y, si el sistema se está levantando, le suma carga. Lo sensato es dejar de llamar durante un rato y comprobar de vez en cuando si ha vuelto.
Es lo que hace el cortacircuitos de una casa: cuando algo falla, salta y corta la corriente, y alguien lo rearma después de probar. El patrón se llama circuit breaker, y es una máquina de tres estados.
Dos minutos sin Bizum
Llegan cuatro peticiones por segundo. Marca «Bizum caído» y espera unos quince segundos. A la izquierda, Operaciones llama siempre; a la derecha, con un circuit breaker que se abre tras unos fallos seguidos. Cada diez segundos con el breaker abierto, deja pasar una llamada de prueba (semiabierto). Después recupera Bizum.
También puedes provocar un fallo suelto con Bizum funcionando, y cambiar el umbral.
Qué ha pasado
- Sin breaker, las llamadas siguen y todas fallan después de esperar. El tiempo máximo del episodio 1 limita cada espera a un segundo, pero no evita las llamadas.
- Con breaker, tras cinco fallos seguidos se abre y las peticiones fallan al instante. Laura recibe el error sin esperar, y Bizum no recibe nada mientras se recupera.
- Semiabierto es la parte inteligente: pasado un tiempo, el breaker deja pasar una sola llamada. Si sale bien, vuelve a cerrarse; si no, se abre otros diez segundos.
- El umbral es una decisión. Con un umbral de uno, un fallo suelto abre el breaker y se rechazan llamadas que iban a salir bien.
Un breaker por corresponsal
Con las transferencias internacionales, la conexión con otros bancos habla con cuatro corresponsales: Londres, Nueva York, Tokio y São Paulo. Tokio no responde. ¿Dónde se pone el breaker? Una conexión con un único breaker sería lo más simple. Lanza las veinticuatro transferencias y compara.
Por dependencia, no por servicio
Con un único breaker, los fallos de Tokio lo abren y las transferencias a Londres, Nueva York y São Paulo se rechazan sin llamar, aunque sus corresponsales funcionaban. Con un breaker por corresponsal, solo se corta Tokio. Es la misma idea del bulkhead del episodio 2: el corte se hace donde se quiere que el fallo se pare.
Para llevarse
- Un circuit breaker es una máquina de tres estados: cerrado (pasan), abierto (se rechaza sin llamar) y semiabierto (pasa una de prueba).
- Protege a quien llama, que no espera, y a quien se recupera, que no se ahoga.
- Se coloca por dependencia y con un umbral que no se asuste de un fallo suelto.
Con el breaker abierto, el banco tiene una decisión que no es técnica: qué hacer con lo que llega mientras tanto. Si es Fraude el que no responde, ¿se aprueba, se deniega o se espera?
Siguiente Episodio 5 · Si Fraude cae, ¿qué hacemos? Quince minutos sin veredicto: ¿se aprueba, se deniega o se espera, y hasta qué importe? Degradación con criterio.