Stručný přehled nástrojů pro testování blockchainu a benchmarking

Stručný přehled nástrojů pro testování blockchainu a benchmarking

Dnes jsou řešení pro testování a benchmarking blockchainů přizpůsobena konkrétnímu blockchainu nebo jeho forkům. Existuje však také několik obecnějších řešení, která se liší funkčností: některá z nich jsou projekty s otevřeným zdrojovým kódem, jiné jsou poskytovány jako SaaS, ale většina jsou interní řešení vytvořená vývojovým týmem blockchainu. Všechny však řeší podobné problémy. V tomto článku jsem se pokusil krátce zhodnotit několik produktů určených speciálně pro testování blockchainů.

Provoz blockchainové sítě připomíná provoz distribuované databáze, takže k testování lze použít podobné nástroje a metody. Chcete-li lépe porozumět tomu, jak se testují distribuované databáze, podívejte se na dobrý výběr zdrojů a článků proto. Například latence je v tomto tříděna na kousky článek, a abyste pochopili, jak hledají chyby v replikačních algoritmech, doporučuji přečíst si toto článek.

Popíšu několik populárních řešení pro testování a benchmarking blockchainů. Budu rád, když v komentářích popíšete další užitečné softwarové produkty pro řešení stejných problémů.

Stručný přehled nástrojů pro testování blockchainu a benchmarking

Začnu nástrojem, který, i když není vytvořen speciálně pro blockchainy, umožňuje efektivně testovat jejich fungování za předpokladu, že existuje již spuštěná síť, na které můžete experimentovat. Nejdůležitějším faktorem spolehlivosti distribuovaného systému je schopnost pokračovat v práci v případě problémů se servery a sítí. Mohou to být zpoždění sítě, zaplnění disku, nedostupnost externích služeb (DNS), selhání hardwaru a stovky dalších důvodů. Chcete-li zkontrolovat stabilitu všech systémů pracujících ve shodě na velkém počtu systémových strojů, můžete použít Skřítek. Využívá extrémně efektivního přístupu zvaného Chaos Engineering.

Pomocí vlastního síťového agenta vytváří Gremlin mnoho různých typů problémů na požadovaném počtu strojů: zpoždění sítě, přetížení jakéhokoli zdroje (CPU, disk, paměť, síť), deaktivace jednotlivých protokolů atd. Pro blockchainy lze Gremlin použít na testovacích serverech, emulovat skutečné problémy a sledovat chování sítě. Díky němu mohou vývojáři a administrátoři v kontrolovaném prostředí pozorovat, co se stane, pokud systém spadne nebo když se aktualizuje kód. V tomto případě musí být síť předem nakonfigurována a nasazena a také nakonfigurována tak, aby shromažďovala potřebné metriky.

Gremlin je pohodlný nástroj pro architekty, vývojáře a bezpečnostní specialisty a univerzální řešení pro testování jakýchkoli hotových a běžících distribuovaných systémů, včetně blockchainů.

Stručný přehled nástrojů pro testování blockchainu a benchmarking

Hyperledger Caliper je mnohem specializovanější řešení Posuvné měřítko Hyperledger. V současné době Caliper podporuje několik blockchainů najednou - zástupce rodiny Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), stejně jako Ethereum a síť FISCO BCOS.

Pomocí Caliper můžete nastavit topologii blockchainové sítě a smlouvy pro testování a také popsat konfiguraci uzlu. Blockchainové uzly jsou umístěny v dockerových kontejnerech na jednom počítači. Dále můžete vybrat potřebné testovací konfigurace a po spuštění obdržet soubor se zprávou o výsledcích testu. Úplný seznam metrik Caliper a přístupu k benchmarkingu naleznete zde Metriky výkonu Hyperledger Blockchain, toto je skvělý článek, pokud vás zajímá téma benchmarkingu blockchainu. Sběr metrik můžete také nastavit v samostatném Prometheus/Grafana.

Hyperledger Caliper je nástroj zaměřený na vývojáře a systémové architekty, protože poskytuje opakovatelnost testů a automatizaci testování a benchmarkingu. Používá se při vývoji jádra blockchainů: konsenzuálních algoritmů, virtuálního stroje pro zpracování chytrých kontraktů, peer-to-peer vrstvy a dalších systémových mechanismů.

Stručný přehled nástrojů pro testování blockchainu a benchmarking

Nádrž MixBytes je nástroj, který se objevil v procesu vývoje konsenzuálních a konečných algoritmů pro sítě založené na EOS a testování parachainů založených na Parity Substrate (Polkadot). Z hlediska funkčnosti se blíží Hyperledger Caliper, protože umožňuje sbírat důležité metriky z uzlů libovolného distribuovaného systému a klientských strojů, na kterých běží testovací skripty.

MixBytes Tank využívá několik cloudových služeb (Digital Ocean, Google Cloud Engine atd.), ve kterých může spouštět mnoho uzlů, provádět předběžné konfigurační procedury, spouštět několik benchmarků paralelně na různých strojích, shromažďovat potřebné metriky a automaticky vypnout síť.

MixBytes Tank vám umožňuje ušetřit peníze na cloudových serverech tím, že po testu automaticky minimalizuje nepotřebné zdroje. Dalším výrazným rysem je použití balíčku Molecule, který vývojáři umožňuje lokálně otestovat nasazení požadovaného blockchainu.

MixBytes Tank vám umožňuje včas odhalit úzká hrdla a chyby v algoritmech, které vznikají v reálných sítích s velkým počtem geograficky distribuovaných serverů a klientů. Tank vám pomůže pochopit, co se na uzlech stane, pokud klienti v případě potřeby pošlou transakce s daným tps ve vysoce opakovatelných podmínkách a s reálným počtem uzlů rozmístěných po různých kontinentech.

Stručný přehled nástrojů pro testování blockchainu a benchmarking

Whiteblock Genesis je testovací platforma pro blockchainy založené na Ethereu. Tento nástroj má poměrně širokou funkcionalitu: umožňuje spustit síť, vytvořit v ní požadovaný počet účtů, zvýšit požadovaný počet klientů, nakonfigurovat topologii sítě, zadat parametry šířky pásma a ztráty paketů a spustit test.

Whiteblock Genesis poskytuje vlastní testovací zařízení. Vývojáři stačí zadat parametry testu, spustit je pomocí hotového rozhraní API a získat výsledky pomocí pohodlného řídicího panelu.

Whiteblock Genesis umožňuje nakonfigurovat poměrně podrobný test, který platforma automaticky provede při každé významné změně kódu. To vám umožní zachytit chyby v rané fázi a okamžitě posoudit dopad změn na důležité parametry sítě, jako je rychlost transakcí a zdroje spotřebované uzly.

Madt

Dalším zajímavým mladým produktem pro testování distribuovaných systémů je madt. Je napsán v Pythonu a umožňuje vytvořit požadovanou topologii sítě a požadovaný počet serverů a klientů pomocí jednoduchého konfiguračního skriptu (příklad). Poté služba nasadí síť do několika kontejnerů Docker a otevře webové rozhraní, ve kterém můžete sledovat zprávy ze serverů a klientů sítě. Madt lze použít pro testování blockchainů – projektové úložiště má test p2p sítě založený na protokolu Kademlia, při kterém se postupně navyšují zpoždění v doručování dat do uzlů a kontroluje se stav těchto dat.

Madt se objevil teprve nedávno, ale vzhledem k jeho velmi flexibilní architektuře se může vyvinout ve funkční produkt.

Další řešení

Téměř každé testování systémové části blockchainů vyžaduje spouštění předběžných skriptů, přípravu účtů a podmínek pro test (může se jednat o testování chyb konsenzu, které mohou generovat četné forky řetězců, testování scénářů hard forku, změnu systémových parametrů atd.). Všechny tyto manipulace se v různých blockchainech provádějí různě, takže pro týmy je snazší postupně přizpůsobovat testování a benchmarking produktů internímu CI/CD a využívat vlastní vývoj, který se postupně s rozvojem funkčnosti blockchainu stává složitějším.

Přesto použití hotových řešení může těmto týmům značně zkrátit dobu testování, takže si myslím, že tento software bude v následujících letech aktivně vyvíjen.

Závěr

Na závěr této krátké recenze uvedu několik důležitých charakteristik nástrojů pro testování blockchainu:

  • Schopnost automaticky nasadit blockchainovou síť za opakovatelných podmínek. Tento faktor je důležitý při vývoji systémových částí blockchainů: konsenzuální algoritmy, finalita, systémové chytré smlouvy.
  • Náklady na vlastnictví systému, spotřebované zdroje a pohodlí při neustálém používání. Tento faktor poskytuje projektu vysoce kvalitní testy za málo peněz.
  • Flexibilita a jednoduchost konfigurace testu. Tento faktor zvyšuje šance na identifikaci systémových problémů – je menší šance, že něco důležitého přehlédnete.
  • Přizpůsobení pro konkrétní typy blockchainů. Vývoj řešení založeného na existujícím řešení může výrazně zlepšit kvalitu a snížit časové náklady.
  • Pohodlí a dostupnost získaných výsledků a jejich typu (přehledy, metriky, grafy, protokoly atd.). To je naprosto nezbytné, pokud chcete sledovat historii vývoje produktu nebo pokud požadujete hlubokou analýzu chování blockchainové sítě.

Hodně štěstí při testování a ať jsou vaše blockchainy rychlé a odolné proti chybám!

Zdroj: www.habr.com

Přidat komentář