Ir al contenido

Matěj Vais

Nuestras pruebas en Blacksmith

O lo que aprendimos al compararlo con los runners de GitHub con el mismo código

Nuestras pruebas en Blacksmith

Cada cambio que hacemos en nuestro constructor de sitios web tiene que superar un conjunto de pruebas automáticas antes de publicarse. Son 466, y en cada una Playwright recorre el sitio con un navegador tal como lo haría una persona. Las pruebas se ejecutan en GitHub Actions, repartidas en cuatro partes paralelas, y cada parte construye primero el sitio completo en su versión de producción antes de probarlo. Una ronda tarda unos veinte minutos.

Desde septiembre estas pruebas ya no se ejecutan en las máquinas de GitHub, sino en Blacksmith. El cambio supuso modificar una sola línea de la configuración. En octubre Blacksmith nos aceptó en su programa para startups, así que decidimos que era el momento de medir qué nos había aportado realmente. Hasta entonces nunca lo habíamos comparado directamente con las máquinas de GitHub.

Cómo lo medimos

Enviamos el mismo código dos veces, con 25 segundos de diferencia. Una ejecución fue a Blacksmith y la otra a los runners estándar de GitHub; la única diferencia era la línea que decide dónde se ejecutan las pruebas. Para que la comparación fuera justa, ambas máquinas tenían el mismo tamaño, 2 CPU virtuales.

Las dos ejecuciones terminaron con el mismo resultado: 395 pruebas superadas, 71 omitidas y ninguna fallida. Fue una ejecución por lado, así que toma las cifras de abajo como una medición concreta, no como una media.

Resultados

Gráfico: 21,0 min en Blacksmith, 33,3 min en los runners de GitHub
Del envío del código al último job terminado, mismo código y 2 vCPU en ambos lados. La mayor parte de la diferencia se debió a un mirror de paquetes atascado, ver abajo.
  • Del envío del código al último job terminado: 21,0 min en Blacksmith, 33,3 min en GitHub.
  • Parte más lenta: 20,6 min frente a 33,1 min.
  • Minutos facturados: 71 frente a 106.
  • Coste de una ronda a precio de lista: 0,28 $ frente a 0,64 $.

Los minutos facturados son la suma de todos los jobs, cada uno redondeado al minuto completo, que es como facturan ambos proveedores. El precio de lista de Blacksmith es de 0,004 $ por minuto; GitHub cobra 0,006 $ por una máquina Linux comparable.

De dónde salieron los 12 minutos de más

A primera vista parece una diferencia enorme. Sin embargo, la mayor parte se debió a un único imprevisto. Antes de empezar las pruebas, cada máquina tiene que instalar los paquetes del sistema para el navegador Chromium. En GitHub, dos de las cuatro partes se toparon con un mirror de paquetes de Ubuntu atascado que enviaba las fuentes a 35 kB/s, así que la instalación tardó unos 11 minutos en lugar de los 0,3 habituales. Las otras dos partes, y las cuatro en Blacksmith, terminaron este paso en 0,3 minutos.

Ese atasco explica 11 de los 12 minutos. Lo vimos en esta única ejecución y no hemos medido con qué frecuencia ocurre en GitHub.

¿Y el rendimiento en sí?

Sin contar la preparación, la diferencia es menor, pero sigue a favor de Blacksmith. La construcción del sitio (next build) tardó de media 1,78 minutos frente a 2,15 en GitHub, 1,2× más rápido. Las pruebas de Playwright tardaron 14,3 minutos frente a 16,4, 1,15× más rápido.

Blacksmith además partió con una pequeña ventaja porque restauró nuestras dependencias desde su caché, mientras que GitHub las instaló de nuevo en esta primera ejecución. A GitHub eso solo le costó unos 10 segundos por parte.

Lo que sacamos de esto

En una máquina del mismo tamaño, la construcción y las pruebas son entre un 15 y un 20 % más rápidas en Blacksmith. Además, el minuto cuesta un tercio menos y esta ejecución usó 35 minutos menos, de modo que una ronda de pruebas salió por menos de la mitad. La espera más larga de esta medición no la causó la CPU, sino un mirror de paquetes atascado, y eso no ocurrió en Blacksmith.

Gracias a Blacksmith por aceptarnos en su programa para startups.

¿Buscas un sitio web del que nos sigamos ocupando después del lanzamiento?

Creamos sitios web a medida y seguimos cuidándolos tras el lanzamiento: actualizaciones periódicas, copias de seguridad, supervisión de la disponibilidad y cambios continuos.

Contáctanos