Stručný prehľad nástrojov na testovanie blockchainu a benchmarking

Stručný prehľad nástrojov na testovanie blockchainu a benchmarking

Dnes sú riešenia na testovanie a benchmarking blockchainov prispôsobené konkrétnemu blockchainu alebo jeho forkom. Existuje však aj niekoľko všeobecnejších riešení, ktoré sa líšia funkčnosťou: niektoré z nich sú projekty s otvoreným zdrojom, iné sú poskytované ako SaaS, no väčšinou ide o interné riešenia vytvorené vývojovým tímom blockchainu. Všetky však riešia podobné problémy. V tomto článku som sa pokúsil stručne zhodnotiť niekoľko produktov určených špeciálne na testovanie blockchainov.

Prevádzka blockchainovej siete pripomína fungovanie distribuovanej databázy, takže na testovanie možno použiť podobné nástroje a metódy. Ak chcete lepšie pochopiť, ako sa testujú distribuované databázy, pozrite si dobrý výber zdrojov a článkov preto. Napríklad latencia je v tomto triedená na kúsky článok, a aby ste pochopili, ako hľadajú chyby v replikačných algoritmoch, odporúčam prečítať si toto článok.

Popíšem niekoľko populárnych riešení na testovanie a benchmarking blockchainov. Budem rád, ak v komentároch popíšete ďalšie užitočné softvérové ​​produkty na riešenie rovnakých problémov.

Stručný prehľad nástrojov na testovanie blockchainu a benchmarking

Začnem nástrojom, ktorý aj keď nie je vytvorený špeciálne pre blockchainy, umožňuje vám efektívne testovať ich fungovanie za predpokladu, že už existuje spustená sieť, na ktorej môžete experimentovať. Najdôležitejším faktorom spoľahlivosti distribuovaného systému je schopnosť pokračovať v práci v prípade problémov so servermi a sieťou. Môžu to byť oneskorenia siete, plnosť disku, nedostupnosť externých služieb (DNS), zlyhania hardvéru a stovky ďalších dôvodov. Ak chcete skontrolovať stabilitu akýchkoľvek systémov pracujúcich v zhode na veľkom počte systémových počítačov, môžete použiť škriatok. Využíva mimoriadne efektívny prístup nazývaný Chaos Engineering.

Pomocou vlastného sieťového agenta Gremlin vytvára mnoho rôznych typov problémov na požadovanom počte strojov: oneskorenia siete, preťaženie akéhokoľvek zdroja (CPU, disk, pamäť, sieť), deaktivuje jednotlivé protokoly atď. V prípade blockchainov je možné použiť Gremlin na testovacích serveroch, napodobňujúc skutočné problémy a pozorovanie správania siete. Pomocou neho môžu vývojári a správcovia v kontrolovanom prostredí pozorovať, čo sa stane, ak systém spadne alebo keď sa aktualizuje kód. V tomto prípade musí byť sieť vopred nakonfigurovaná a nasadená, ako aj nakonfigurovaná na zhromažďovanie potrebných metrík.

Gremlin je pohodlný nástroj pre architektov, vývojárov a bezpečnostných špecialistov a univerzálne riešenie na testovanie akýchkoľvek hotových a spustených distribuovaných systémov vrátane blockchainov.

Stručný prehľad nástrojov na testovanie blockchainu a benchmarking

Hyperledger Caliper je oveľa špecializovanejšie riešenie Posuvné meradlo Hyperledger. V súčasnosti Caliper podporuje niekoľko blockchainov naraz – zástupcov rodiny Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), ako aj Ethereum a sieť FISCO BCOS.

Pomocou Caliper môžete nastaviť topológiu blockchainovej siete a zmluvy na testovanie, ako aj opísať konfiguráciu uzla. Blockchainové uzly sa zhromažďujú v dockerových kontajneroch na jednom stroji. Ďalej si môžete vybrať potrebné testovacie konfigurácie a po spustení dostanete súbor so správou o výsledkoch testu. Úplný zoznam metrík Caliper a benchmarkingového prístupu nájdete tu Metriky výkonnosti Hyperledger Blockchain, toto je skvelý článok, ak vás zaujíma téma benchmarkingu blockchainu. Môžete tiež nastaviť zber metrík v samostatnom Prometheus/Grafana.

Hyperledger Caliper je nástroj určený pre vývojárov a systémových architektov, pretože poskytuje opakovateľnosť testov a automatizáciu testovania a benchmarkingu. Používa sa pri vývoji jadra blockchainov: konsenzuálnych algoritmov, virtuálneho stroja na spracovanie inteligentných zmlúv, vrstvy peer-to-peer a ďalších systémových mechanizmov.

Stručný prehľad nástrojov na testovanie blockchainu a benchmarking

Nádrž MixBytes je nástroj, ktorý sa objavil v procese vývoja konsenzuálnych a konečných algoritmov pre siete založené na EOS a testovanie parachainov založených na Parity Substrate (Polkadot). Z hľadiska funkčnosti je blízky Hyperledger Caliper, pretože vám umožňuje zbierať dôležité metriky z uzlov akéhokoľvek distribuovaného systému a klientskych počítačov, na ktorých sú spustené testovacie skripty.

MixBytes Tank využíva niekoľko cloudových služieb (Digital Ocean, Google Cloud Engine atď.), v ktorých môže spúšťať mnoho uzlov, vykonávať predbežné konfiguračné postupy, spúšťať niekoľko benchmarkov paralelne na rôznych počítačoch, zhromažďovať potrebné metriky a automaticky vypnúť siete.

MixBytes Tank vám umožňuje ušetriť peniaze na cloudových serveroch automatickým minimalizovaním nepotrebných zdrojov po teste. Ďalšou charakteristickou črtou je použitie balíka Molecule, ktorý vývojárovi umožňuje lokálne otestovať nasadenie požadovaného blockchainu.

MixBytes Tank vám umožňuje včas odhaliť úzke miesta a chyby v algoritmoch, ktoré vznikajú v reálnych sieťach s veľkým počtom geograficky distribuovaných serverov a klientov. Tank vám pomôže pochopiť, čo sa stane na uzloch, ak klienti v prípade potreby pošlú transakcie s daným tps vo vysoko opakovateľných podmienkach a s reálnym počtom uzlov rozmiestnených na rôznych kontinentoch.

Stručný prehľad nástrojov na testovanie blockchainu a benchmarking

Whiteblock Genesis je testovacia platforma pre blockchainy založené na Ethereu. Tento nástroj má pomerne širokú funkčnosť: umožňuje vám spustiť sieť, vytvoriť v nej požadovaný počet účtov, zvýšiť požadovaný počet klientov, nakonfigurovať topológiu siete, špecifikovať parametre šírky pásma a straty paketov a spustiť test.

Whiteblock Genesis poskytuje svoje vlastné testovacie zariadenia. Vývojári musia špecifikovať parametre testu, spustiť ich pomocou pripraveného rozhrania API a získať výsledky pomocou pohodlného ovládacieho panela.

Whiteblock Genesis vám umožňuje nakonfigurovať pomerne podrobný test, ktorý platforma automaticky vykoná pri každej významnej zmene kódu. To vám umožní zachytiť chyby v počiatočnom štádiu a okamžite posúdiť vplyv zmien na dôležité parametre siete, ako je rýchlosť transakcií a zdroje spotrebované uzlami.

Madt

Ďalším zaujímavým mladým produktom na testovanie distribuovaných systémov je madt. Je napísaný v Pythone a umožňuje vám vytvoriť požadovanú topológiu siete a požadovaný počet serverov a klientov pomocou jednoduchého konfiguračného skriptu (príklad). Potom služba nasadí sieť do niekoľkých kontajnerov Docker a otvorí webové rozhranie, v ktorom môžete sledovať správy zo serverov a klientov siete. Madt je možné použiť na testovanie blockchainov – úložisko projektu má test p2p siete založený na protokole Kademlia, pri ktorom sa postupne zvyšujú oneskorenia pri doručovaní údajov do uzlov a kontroluje sa stav týchto údajov.

Madt sa objavil len nedávno, ale vzhľadom na jeho veľmi flexibilnú architektúru sa môže vyvinúť do funkčného produktu.

Iné riešenia

Takmer každé testovanie systémovej časti blockchainov si vyžaduje spustenie predbežných skriptov, prípravu účtov a podmienok pre test (môže to byť testovanie chýb konsenzu, ktoré môžu generovať početné forky reťazcov, testovanie scenárov hard forku, zmena systémových parametrov atď.). Všetky tieto manipulácie sa v rôznych blockchainoch uskutočňujú odlišne, takže pre tímy je jednoduchšie postupne prispôsobovať testovanie produktov a benchmarking internému CI/CD a využívať vlastný vývoj, ktorý sa s vývojom funkcionality blockchainu postupne stáva zložitejším.

Napriek tomu použitie hotových riešení môže týmto tímom výrazne skrátiť čas testovania, preto si myslím, že tento softvér sa bude v nasledujúcich rokoch aktívne rozvíjať.

Záver

Na záver tohto krátkeho prehľadu uvediem niekoľko dôležitých charakteristík nástrojov na testovanie blockchainu:

  • Schopnosť automaticky nasadiť blockchainovú sieť za opakovateľných podmienok. Tento faktor je dôležitý pri vývoji systémových častí blockchainov: konsenzuálne algoritmy, finalita, systémové inteligentné zmluvy.
  • Náklady na vlastníctvo systému, spotrebované zdroje a pohodlie pri neustálom používaní. Tento faktor poskytuje projektu kvalitné testy za málo peňazí.
  • Flexibilita a jednoduchosť konfigurácie testu. Tento faktor zvyšuje šance na identifikáciu systémových problémov – je menšia šanca, že vám niečo dôležité unikne.
  • Prispôsobenie pre konkrétne typy blockchainov. Vývoj riešenia založeného na existujúcom riešení môže výrazne zlepšiť kvalitu a znížiť časové náklady.
  • Pohodlie a dostupnosť získaných výsledkov a ich typu (správy, metriky, grafy, protokoly atď.). Je to absolútne nevyhnutné, ak chcete sledovať históriu vývoja produktu alebo ak požadujete hĺbkovú analýzu správania blockchainovej siete.

Veľa šťastia pri testovaní a nech sú vaše blockchainy rýchle a odolné voči chybám!

Zdroj: hab.com

Pridať komentár