Matěj Vais
Testujeme na Blacksmithu
Aneb co ukázalo srovnání s runnery GitHubu na stejném kódu

Každá změna, kterou uděláme v našem nástroji na stavbu webů, musí před nasazením projít sadou automatických testů. Je jich 466 a v každém z nich prohlížeč pomocí Playwrightu prokliká web tak, jak by to udělal člověk. Testy běží na GitHub Actions, rozdělené do čtyř souběžných částí, a každá část si před testováním nejprve sestaví celý web v produkční podobě. Jedno kolo tak zabere zhruba dvacet minut.
Od září nám tyto testy neběží na strojích GitHubu, ale na Blacksmithu. Přechod nás stál změnu jediného řádku v konfiguraci. V říjnu nás Blacksmith přijal do svého startup programu, a tak jsme si řekli, že je načase změřit, co nám přechod skutečně přinesl. Přímé srovnání se stroji GitHubu jsme totiž do té doby neměli.
Jak jsme měřili
Stejný kód jsme odeslali dvakrát, s odstupem 25 sekund. Jednou běžel na Blacksmithu, podruhé na standardních runnerech GitHubu – jediný rozdíl byl v řádku, který určuje, kde se testy spustí. Aby bylo srovnání férové, měly oba stroje stejnou velikost, 2 virtuální procesory.
Oba běhy skončily úspěšně se stejným výsledkem: 395 testů prošlo, 71 bylo přeskočeno a žádný neselhal. Na každé straně šlo o jeden běh, čísla níže proto berte jako jedno konkrétní měření, ne jako průměr.
Výsledky

- Od odeslání kódu po dokončení poslední úlohy: 21,0 min na Blacksmithu, 33,3 min na GitHubu.
- Nejpomalejší část: 20,6 min oproti 33,1 min.
- Účtované minuty: 71 oproti 106.
- Cena jednoho kola podle ceníku: 0,28 $ oproti 0,64 $.
Účtované minuty jsou součet všech úloh, přičemž každá se zaokrouhluje nahoru na celou minutu – tak účtují oba poskytovatelé. Blacksmith si podle ceníku účtuje 0,004 $ za minutu, GitHub za srovnatelný linuxový stroj 0,006 $.
Odkud se vzalo 12 minut navíc
Na první pohled to vypadá jako obrovský rozdíl. Většinu z něj ale způsobila jedna nečekaná událost. Než začnou testy, musí si každý stroj nainstalovat systémové balíčky pro prohlížeč Chromium. Na GitHubu se u dvou ze čtyř částí zaseklo zrcadlo balíčků Ubuntu, které posílalo fonty rychlostí 35 kB/s, a instalace tak místo obvyklých 0,3 minuty trvala zhruba 11 minut. Zbylé dvě části i všechny čtyři na Blacksmithu měly tento krok hotový za 0,3 minuty.
Právě tohle zaseknutí dělá 11 z celkových 12 minut rozdílu. Viděli jsme ho v tomto jediném běhu a jak často se na GitHubu stává, jsme neměřili.
A co samotný výkon?
Když přípravu prostředí odečteme, rozdíl se zmenší, ale zůstává na straně Blacksmithu. Sestavení webu (next build) mu trvalo v průměru 1,78 minuty oproti 2,15 minuty na GitHubu, tedy 1,2× rychleji. Samotné testy v Playwrightu zabraly 14,3 minuty oproti 16,4 minuty, tedy 1,15× rychleji.
Drobný náskok měl Blacksmith i v tom, že obnovil nainstalované závislosti z mezipaměti, zatímco GitHub je při tomto prvním běhu instaloval znovu. To ho ale stálo jen asi 10 sekund na každou část.
Co si z toho bereme
Na stejně velkém stroji běží sestavení i testy na Blacksmithu zhruba o 15 až 20 % rychleji. Minuta navíc stojí o třetinu méně a tento běh jich spotřeboval o 35 méně, takže jedno kolo testů vyšlo na méně než polovinu ceny. Nejdelší čekání nám v tomto měření nezpůsobil procesor, ale zaseknuté zrcadlo balíčků, a to se na Blacksmithu neobjevilo.
Blacksmithu děkujeme, že nás přijal do svého startup programu.
Hledáte web, o který se postaráme i po spuštění?
Weby stavíme na míru a po spuštění se o ně dál staráme – pravidelné aktualizace, zálohování, dohled nad dostupností i průběžné úpravy.
Kontaktujte nás