Número 22
17 de agosto de 2022

Calculade as vosas necesidades

Unha parte importante de moitos proxectos de software é estimar cantos recursos vai necesitar. De pouco nos serve ter unha aplicación excelente se resulta que, por non ter suficientes recursos, aos usuarios lles leva minuto e medio facer calquera operación. No outro extremo, se contratamos demasiados recursos para a aplicación, os usuarios non van ver o beneficio pero imos malgastar cartos a moreas.

Por desgraza, é moi común sobreestimar os recursos necesarios para unha aplicación e acabamos contratando máquinas, CPUs, memoria e outros recursos dos que non precisamos. Por sorte, aprender a estimalos correctamente é moi doado. Todo o que precisades de saber cabe nun email e, ademais, é unha desas cousas que aprendedes hoxe e seguen a servir dentro de corenta anos.

Un mono tira moedas ao mar diante dun home que o mira con espanto.

O primeiro que tedes que facer é calcular a utilización que ides facer da aplicación. Cunha pouca sorte descubriredes que esta utilización é tan baixa que non paga a pena facer unha estimación de recursos. Iso é o que pasou cunha PEME que quería instalar unha aplicación para 10 usuarios con 300 operacións diarias cada un. Iso sumaba 3.000 operacións diarias que, no horario laboral, supoñía unha operación cada dez segundos. Abondou con instalala nun servidor que xa tiñan.

O segundo paso consiste en facer probas de carga para determinar os recursos dos que precisa a aplicación por cada unidade de utilización. Como estamos na era das aplicacións web, vou usar a “petición” como unidade. Para o exemplo, supoñede que determinamos que cada petición tarda 100 milisegundos en completarse e consume 100 MB de RAM, 40 milisegundos de tempo de CPU e 1 MB de transferencia na rede.

Despois tedes que calcular o número de peticións simultáneas que o voso sistema vai servir. Para iso só tedes que multiplicar o número de peticións por segundo polo número de segundos que tarda cada petición.

Por exemplo, con 10 peticións por segundo e 100 milisegundos por petición, iso dá 1. Ou sexa: ides servir, de media, unha petición de cada vez. Por outra banda, se tiverades 50 peticións por segundo, iso darían 5 peticións simultáneas.

Con isto temos toda a información da que precisamos para calcular a capacidade necesaria na nosa plataforma: o número de peticións por segundo, o número de peticións simultáneas, e a cantidade de recursos usados por cada petición. Imos usar os exemplos de enriba para calcular canta RAM, cantas CPUs e que capacidade de rede necesitamos para servir 50 peticións por segundo.

Para a RAM, como cada petición só consume RAM mentres se está a executar, só temos que multiplicar o requirimento de RAM de cada petición polo número de peticións simultáneas, o que nos dá 500 MB de RAM.

Para a cantidade de CPUs, podemos multiplicar o tempo de CPU en cada petición polo número de peticións por segundo. Iso dá 2 segundos de CPU por segundo de tempo real, o que nos indica que precisamos de 2 CPUs.

Finalmente, para a capacidade da rede, multiplicamos o número de bytes por petición polo número de peticións por segundo, o que nos dá 50 MB por segundo, ou 500 mbps.

Estes son os nosos requirimentos mínimos. Como normalmente necesitamos algo máis para o sistema operativo e para os imprevistos, podemos duplicalos e dicir que, para servir 50 peticións por segundo, precisamos dun servidor con 1 GB de RAM, 4 CPUs e 1 Gbps de rede.

Ou sexa, as especificacións dunha Raspberry Pi barateira.

Calculade as vosas necesidades de recursos para non malgastar os vosos cartos.

A ilustración desta Folla procede dun gravado de Tony Johannot para unha edición das “Fábulas de La Fontaine”.