Kratki pregled alata za testiranje i usporednu analizu lanca blokova

Kratki pregled alata za testiranje i usporednu analizu lanca blokova

Danas su rješenja za testiranje i benchmarking blockchaina prilagođena određenom blockchainu ili njegovim forkovima. Ali postoji i nekoliko općenitijih rješenja koja se razlikuju po funkcionalnosti: neka od njih su projekti otvorenog koda, druga se pružaju kao SaaS, ali većina su interna rješenja koja je izradio tim za razvoj blockchaina. Međutim, svi oni rješavaju slične probleme. U ovom sam članku pokušao ukratko prikazati nekoliko proizvoda dizajniranih posebno za testiranje blockchaina.

Rad blockchain mreže nalikuje radu distribuirane baze podataka, pa se za testiranje mogu koristiti slični alati i metode. Da biste bolje razumjeli kako se testiraju distribuirane baze podataka, pogledajte dobar izbor izvora i članaka stoga. Na primjer, latencija je razvrstana u dijelove u ovome članak, a da biste razumjeli kako traže pogreške u algoritmima replikacije, preporučujem da pročitate ovo članaka.

Opisat ću nekoliko popularnih rješenja za testiranje i benchmarking blockchaina. Bilo bi mi drago ako u komentarima opišete druge korisne softverske proizvode za rješavanje istih problema.

Kratki pregled alata za testiranje i usporednu analizu lanca blokova

Započet ću s alatom koji vam, iako nije kreiran posebno za blockchaine, omogućuje učinkovito testiranje njihovog rada pod uvjetom da već postoji pokrenuta mreža na kojoj možete eksperimentirati. Najvažniji čimbenik pouzdanosti distribuiranog sustava je mogućnost nastavka rada u slučaju problema s poslužiteljima i mrežom. To mogu biti mrežni zastoji, popunjenost diska, nedostupnost vanjskih usluga (DNS), hardverski kvarovi i stotine drugih razloga. Za provjeru stabilnosti bilo kojeg sustava koji radi zajedno na velikom broju strojeva sustava, možete koristiti Gremlin. Koristi iznimno učinkovit pristup koji se zove Chaos Engineering.

Koristeći vlastiti mrežni agent, Gremlin stvara mnoge različite vrste problema na potrebnom broju strojeva: mrežne kašnjenja, preopterećenje bilo kojeg resursa (CPU, disk, memorija, mreža), onemogućuje pojedinačne protokole itd. Za blockchaine, Gremlin se može koristiti na testnet poslužiteljima, emulirajući probleme iz stvarnog života i promatrajući ponašanje mreže. S njim programeri i administratori mogu promatrati u kontroliranom okruženju što će se dogoditi ako se sustav sruši ili kada se kod ažurira. U tom slučaju, mreža mora biti konfigurirana i postavljena unaprijed, kao i konfigurirana za prikupljanje potrebnih metrika.

Gremlin je prikladan alat za arhitekte, devops i sigurnosne stručnjake te univerzalno rješenje za testiranje bilo kojih gotovih i pokrenutih distribuiranih sustava, uključujući blockchaine.

Kratki pregled alata za testiranje i usporednu analizu lanca blokova

Hyperledger Caliper puno je specijaliziranije rješenje Hyperledger čeljust. Trenutno Caliper podržava nekoliko blockchaina odjednom - predstavnike obitelji Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), kao i Ethereum i FISCO BCOS mrežu.

Pomoću Calipera možete postaviti topologiju blockchain mreže i ugovore za testiranje, kao i opisati konfiguraciju čvora. Blockchain čvorovi se podižu u docker spremnicima na jednom stroju. Zatim možete odabrati ono što je potrebno ispitne konfiguracije i primite datoteku s izvješćem o rezultatima testa nakon pokretanja. Cjeloviti popis Caliper metrike i pristupa benchmarkingu možete pronaći ovdje Mjerni podaci o performansama Hyperledger Blockchaina, ovo je sjajan članak ako ste zainteresirani za temu blockchain benchmarkinga. Također možete postaviti zbirku metrika u zasebnom Prometheusu/Grafanu.

Hyperledger Caliper je alat namijenjen programerima i sistemskim arhitektima, jer pruža ponovljivost testa i automatizaciju testiranja i benchmarkinga. Koristi se u razvoju jezgre blockchaina: algoritama konsenzusa, virtualnog stroja za obradu pametnih ugovora, peer-to-peer sloja i drugih mehanizama sustava.

Kratki pregled alata za testiranje i usporednu analizu lanca blokova

MixBytes spremnik je alat koji je nastao u procesu razvoja algoritama konsenzusa i konačnosti za mreže temeljene na EOS-u i testiranja parachaina temeljenih na Parity Substrate (Polkadot). Što se tiče funkcionalnosti, blizak je Hyperledger Caliperu, jer vam omogućuje prikupljanje važnih metrika iz čvorova bilo kojeg distribuiranog sustava i klijentskih strojeva na kojima se izvode testne skripte.

MixBytes Tank koristi nekoliko usluga u oblaku (Digital Ocean, Google Cloud Engine, itd.), u kojima može pokrenuti mnoge čvorove, provesti preliminarne konfiguracijske procedure, pokrenuti nekoliko usporednih testova paralelno na različitim strojevima, prikupiti potrebne metrike i automatski isključiti mreža.

MixBytes Tank vam omogućuje uštedu novca na poslužiteljima u oblaku automatskim smanjivanjem nepotrebnih resursa nakon testa. Još jedna posebna značajka je korištenje paketa Molecule, koji razvojnom programeru omogućuje lokalno testiranje implementacije željenog blockchaina.

MixBytes Tank omogućuje rano otkrivanje uskih grla i pogrešaka u algoritmima koji se javljaju u stvarnim mrežama s velikim brojem geografski raspoređenih poslužitelja i klijenata. Spremnik će vam pomoći razumjeti što će se dogoditi na čvorovima ako klijenti pošalju transakcije s danim tps-om u vrlo ponovljivim uvjetima i sa stvarnim brojem čvorova raspoređenih po različitim kontinentima, ako je potrebno.

Kratki pregled alata za testiranje i usporednu analizu lanca blokova

Whiteblock Genesis je platforma za testiranje za blockchaine temeljene na Ethereumu. Ovaj alat ima prilično široku funkcionalnost: omogućuje vam pokretanje mreže, stvaranje potrebnog broja računa u njoj, podizanje potrebnog broja klijenata, konfiguriranje topologije mreže, određivanje propusnosti i parametara gubitka paketa i pokretanje testa.

Whiteblock Genesis nudi vlastite objekte za testiranje. Programeri samo trebaju specificirati testne parametre, pokrenuti ih pomoću gotovog API-ja i dobiti rezultate pomoću prikladne nadzorne ploče.

Whiteblock Genesis vam omogućuje da konfigurirate prilično detaljan test koji će platforma automatski provesti za svaku značajnu promjenu koda. To će vam omogućiti da uhvatite pogreške u ranoj fazi i odmah procijenite utjecaj promjena na važne mrežne parametre, kao što su brzina transakcije i resursi koje troše čvorovi.

Madt

Još jedan zanimljiv mladi proizvod za testiranje distribuiranih sustava je madt. Napisan je u Pythonu i omogućuje vam stvaranje potrebne topologije mreže i potrebnog broja poslužitelja i klijenata pomoću jednostavne konfiguracijske skripte (primjer). Nakon toga, usluga postavlja mrežu u nekoliko Docker spremnika i otvara web sučelje u kojem možete promatrati poruke s poslužitelja i klijenata mreže. Madt se može koristiti za testiranje blockchaina - repozitorij projekta ima test p2p mreže temeljen na Kademlia protokolu, u kojem se kašnjenja u isporuci podataka čvorovima postupno povećavaju i provjerava status tih podataka.

Madt se tek nedavno pojavio, ali s obzirom na vrlo fleksibilnu arhitekturu može se razviti u funkcionalan proizvod.

Ostala rješenja

Gotovo svako testiranje sistemskog dijela blockchaina zahtijeva pokretanje preliminarnih skripti, pripremu računa i uvjeta za testiranje (to može biti testiranje grešaka konsenzusa koje mogu generirati brojne forkove lanaca, testiranje scenarija hard forka, mijenjanje parametara sustava itd.). Sve te manipulacije provode se različito u različitim lancima blokova, tako da je timovima lakše postupno prilagođavati testiranje proizvoda i benchmarking internom CI/CD-u i koristiti se vlastitim razvojem, koji postupno postaje sve složeniji kako se funkcionalnost blockchaina razvija.

Ipak, korištenje gotovih rješenja može uvelike skratiti vrijeme testiranja tim timovima, stoga mislim da će se ovaj softver aktivno razvijati sljedećih godina.

Zaključak

Za kraj ovog kratkog pregleda navest ću nekoliko važnih karakteristika alata za testiranje blockchaina:

  • Sposobnost automatske implementacije blockchain mreže pod ponovljivim uvjetima. Ovaj faktor je važan pri razvoju dijelova sustava blockchaina: algoritama konsenzusa, konačnosti, pametnih ugovora sustava.
  • Trošak posjedovanja sustava, potrošeni resursi i pogodnost za stalnu upotrebu. Ovaj čimbenik daje projektu visokokvalitetne testove za malo novca.
  • Fleksibilnost i jednostavnost konfiguracije testa. Ovaj čimbenik povećava šanse za prepoznavanje problema u sustavu - manja je mogućnost da propustite nešto važno.
  • Prilagodba za određene vrste blockchaina. Razvijanje rješenja na temelju postojećeg može uvelike poboljšati kvalitetu i smanjiti vremenske troškove.
  • Praktičnost i dostupnost dobivenih rezultata i njihove vrste (izvješća, metrike, grafikoni, zapisnici itd.). Ovo je apsolutno neophodno ako želite pratiti povijest razvoja proizvoda ili ako vam je potrebna duboka analitika ponašanja blockchain mreže.

Sretno s testiranjem i neka vaši lanci blokova budu brzi i tolerantni na greške!

Izvor: www.habr.com

Dodajte komentar