Lo que no controlamos · Episodio 6 de 6

Más de lo que cabe

Día 1 de mes, nueve de la mañana. Llegan los ficheros de recibos, los Bizum de siempre, los pagos con tarjeta y miles de clientes mirando su nómina: 210 peticiones por segundo contra un core que atiende 100. Una parte tiene que esperar o irse, y la pregunta es cuál.

Concepto: rate limiting y load shedding~10 min

El punto de partida

Hasta ahora, lo que fallaba era el otro. En este episodio no falla nadie: simplemente llega más de lo que cabe. Es el último caso de la serie y el más honesto, porque ya no hay un culpable al que ponerle un tiempo máximo. Hay un límite, y hay que decidir qué pasa con lo que lo supera.

Hay dos formas de decidirlo. La primera protege a quien recibe: limitar el ritmo al que se envía (rate limiting). La segunda protege lo importante cuando todo llega a la vez: descartar con prioridad lo que no cabe (load shedding).

Limitarse a uno mismo

Las transferencias internacionales trajeron un límite que no es nuestro: cada corresponsal acepta como mucho 5 por segundo y, si se superan, bloquea las peticiones durante 10 segundos. El día de pago de nóminas, las empresas mandan ráfagas de 40 transferencias.

Un cubo de fichas es la solución clásica: el cubo se rellena a ritmo fijo, cada transferencia gasta una ficha y, si no quedan, espera. A la izquierda, sin limitar; a la derecha, un cubo cuyo ritmo y tamaño puedes cambiar.

Qué ha pasado

Limitarse a uno mismo es la versión educada de lo que haría el corresponsal a la fuerza: pasa lo mismo, pero sin pérdidas y sin bloqueos.

Cuando lo que sobra es nuestro

Ahora el límite está dentro: el core que contrata el banco atiende 100 peticiones por segundo. El día 1 llegan, además de lo de siempre (30 pagos, 30 Bizum y 30 consultas por segundo), 1.200 recibos de golpe en diez segundos. Son 210 por segundo contra 100.

Pulsa «Llega el fichero de recibos». A la izquierda, una cola única; a la derecha, una cola con prioridades según el orden de la serie: primero los pagos con tarjeta, luego los Bizum, después los recibos y, por último, las consultas, que se descartan.

Quién espera y quién se va

El orden de prioridad es, otra vez, una decisión de negocio: está escrito en el dominio y lo aplica la arquitectura. Y las consultas que se descartan no se pierden en silencio: reciben un «inténtalo en un momento», que es mejor que una espera sin fin.

Para llevarse

Y con esto termina Lo que no controlamos. En seis episodios, New Capital Bank ha aprendido a cortar las llamadas que se alargan, a aislar lo lento, a reintentar sin ahogar, a dejar de llamar a quien no responde, a decidir qué hacer sin un sistema crítico y a elegir qué se sacrifica cuando no cabe todo. En todos los casos, la respuesta era una decisión de negocio que la arquitectura refleja.

Lo que queda abierto es cómo ve el cliente un sistema con tantas piezas. Si lo que Laura ve en su extracto viene de una lectura que llega más tarde que la escritura, ¿por qué no ve su Bizum? Esa es la serie de lecturas frente a escrituras.