Número 79
10 de xaneiro de 2024

Uso de recursos inestable

Catarina traballaba no departamento de informática dunha grande cadea de cafeterías e a súa principal responsabilidade era o mantemento do programa de revisión de pedidos.

Gráfica de monitorización dun programa na que os recursos medran sen control e o programa cae.

Unhas cen persoas usaban ese programa todos os días para se asegurar de que o mexuxe quente que os clientes mercaban e despois metían na súa boca cumprira os estándares de calidade da empresa — é dicir: que a concentración de aditivos e edulcorantes fose sempre inferior aos límites legais e tamén aos límites letais.

Como a empresa de Catarina era moderna, ese programa estaba desenvolto e despregado na nube, pero Catarina sempre tiña dificultades para mantelo funcionando cun custo razoable. Os usuarios queixábanse do rendemento, que ás veces se reducía sen causa aparente.

Ollando a monitorización, as liñas ían para arriba e para abaixo máis veces que o brazo dun vello nun mitin de Vox. Unha instancia calquera podía ir ben durante unhas horas e, de súpeto, collía varios gigabytes de RAM e un par de CPUs e poñíase a trebellar no disco e na rede ata que o Kubernetes o mataba, e despois do reinicio podía estar ben durante outras cinco horas ou cinco minutos.

Despois de pesquisar, Catarina demostrou que a causa deste problema era que o programa executaba varios tipos moi diferentes de cargas de traballo:

  1. A revisión de pedidos da cafetería.

    Esta era a función principal do programa: unha aplicación interactiva na que o programa cargaba información da base de datos e lla amosaba ao usuario. O usuario podía explorar eses datos, aprobar ou denegar o pedido e poñer comentarios.

  2. Caché.

    A maioría dos pedidos eran simples (“café con leite”, “cortado”, …), así que ocupaban pouco espazo e transmitíanse rápido pola rede. Outros pedidos, porén, eran moi complicados (especialmente nas cafeterías de Madrid) e tardaban moito en transmitirse, así que alguén engadiu unha caché no programa, que usaba memoria para gardar a información dos últimos pedidos sen ter que consultala na base de datos.

  3. Análise estatística dos pedidos.

    Había un departamento na empresa adicado a detectar patróns nos pedidos que facía a xente para impedir que ocorrera unha desgracia, como aquela vez que alguén pediu un batido con dez azucres e corenta xaropes para tentar asasinar a alguén dándolle diabetes. Estas análises non eran interactivas: duraban varios minutos e usaban moita CPU e I/O.

Con esta mestura de cargas de traballo no mesmo programa, non era de estrañar que fora tan inestable e o seu uso de recursos fose tan impredicible! Nun momento podía estar a facer I/O de rede e no seguinte podía estar a facer unha análise estatística mentres enchía a memoria con datos dun pedido para que un revisor lle botara unha ollada.

Para solucionar o problema, Catarina dividiu o programa en tres partes, unha para cada carga de traballo. Quitou a caché do programa e substituíuna por unha instancia local de Redis, e separou a función de revisión de pedidos da función de análise estatística.

Trala división, cada un dos programas resultantes tiña un consumo de recursos máis estable e predicible. Os revisores de pedidos tiñan sempre un rendemento aceptable, o programa de análise estatístico podía medrar ou encoller segundo precisara de recursos, o Kubernetes parou de matar instancias e os custos do aloxamento eran aceptables e constantes mes a mes.


Como recompensa por chegardes aquí, vouvos contar algo que parece unha toleada pero é totalmente certo: unha das empresas pioneiras da informática foi unha casa de té británica.

Dúas computadoras inglesas tomando o té e falando: “Oh you must try these scrumptious scones!” “Oh, no, I couldn’t possibly have another byte”.

Lyons era, nos anos 40, unha cadea británica de restaurantes, hoteis e casas de té, e despois da guerra querían modernizar os seus métodos de xestión. Foron aos EEUU para falar cos creadores de ENIAC e quedaron tan impresionados co computador electrónico que decidiron construír o seu propio computador, o Lyons Electronic Office (LEO).

A primeira aplicación de LEO, en 1951, foi calcular o custo dos ingredientes do pan e os pasteis. Despois usárono para as nóminas, pedidos, contabilidade, etc. Tivo tanto éxito que en 1954 crearon unha “spin-off” e daban servizos de computación a outras empresas. Ese foi o seu mellor momento, lamentablemente: a partir dos anos 60 a empresa Lyons entrou en perdas e tivo que vendelo todo, e hoxe practicamente só é coñecida como unha marca irlandesa de té.