Lo que no controlamos · Episodio 2 de 6
Que el extracto no tumbe los pagos
Un domingo por la tarde, miles de clientes repasan el mes a la vez. Cada extracto es una consulta pesada contra Cuentas, y los pagos con tarjeta, que necesitan un cuarto de segundo, hacen cola detrás. Dos cosas de importancia muy distinta compiten por las mismas conexiones.
El punto de partida
En el episodio anterior, un servicio lento agotó las plazas de Operaciones y arrastró a todo lo que las compartía. El tiempo máximo corta cada retención, pero no cambia el hecho de fondo: todo comparte lo mismo. Si una tarea lenta puede quedarse con todas las plazas, lo que no tenía nada que ver con ella también cae.
La respuesta viene de los barcos. Un casco se divide en compartimentos estancos, los mamparos (en inglés, bulkheads), y si uno se inunda, el agua no pasa al siguiente.
Un domingo por la tarde
Cuentas tiene doce conexiones a su base de datos. Un pago con tarjeta usa una un cuarto de segundo; un extracto, tres segundos. Un día normal llegan seis pagos y un extracto por segundo. El domingo, ocho extractos. La red de tarjetas no espera un pago más de tres segundos.
Marca «Domingo por la tarde» y compara. A la derecha puedes cambiar cuántas plazas tiene el compartimento de extractos.
Qué ha pasado
- Sin compartimentos, los extractos piden 24 plazas y hay 12. Cada pago espera a que se libere alguna, y la red lo deniega antes. Nadie ha roto nada: simplemente lo urgente compite en la misma cola que lo pesado.
- Con compartimentos, los extractos solo pueden usar las suyas. Se rechazan muchos, y eso duele, pero pasa lo que importa. El sacrificio es explícito y se decide antes del domingo, no durante.
- El tamaño importa: un compartimento se calcula como un tiempo máximo, ritmo por duración. Con una sola plaza para los pagos, también fallan.
Un corresponsal lento, y el precio
Con las transferencias internacionales, el mismo problema aparece en otro sitio. Operaciones atiende Bizum, transferencias nacionales e internacionales con doce plazas. Una internacional retiene su plaza ocho segundos, mientras el corresponsal acusa recibo. Si el corresponsal de Tokio va lento, los Bizum acaban esperando a Tokio.
Pero los compartimentos tienen un precio. Prueba el pico del viernes por la noche con el corresponsal normal, en los dos paneles.
El precio de aislar
El conjunto único aprovecha cada plaza: en un pico de Bizum usa las que las internacionales no necesitan. Los compartimentos no se prestan nada, así que un pico de Bizum rechaza Bizum con plazas libres al lado. No hay un reparto que gane siempre: se elige qué fallo se quiere evitar y cuánta capacidad sin usar se acepta a cambio.
El criterio del compartimento también es una decisión: por tipo de operación, por destino, por cliente. Se traza donde se quiere que un fallo se pare.
Para llevarse
- Un bulkhead reparte los recursos compartidos en compartimentos con plazas propias, para que lo lento solo agote su parte.
- Se dimensiona con ritmo por duración, con holgura. Demasiado pequeño falla; demasiado grande no aísla.
- Aislar cuesta capacidad: un compartimento no presta sus plazas libres.
Hasta aquí, el fallo se contiene. El siguiente episodio es sobre lo que se hace al primer síntoma: reintentar, y cómo hacerlo sin empeorarlo.
Siguiente Episodio 3 · Reintentar sin ahogar al core El core se cae cinco segundos y, al volver, los reintentos lo tumban otra vez. Backoff y jitter.