Kratak pregled Blockchain testiranja i benchmarking alata

Kratak pregled Blockchain testiranja i benchmarking alata

Danas su rješenja za testiranje i benchmarking blockchain-a prilagođena specifičnom blockchainu ili njegovim viljuškama. Ali postoji i nekoliko općenitijih rješenja koja se razlikuju po funkcionalnosti: neka od njih su projekti otvorenog koda, druga se nude kao SaaS, ali većina su interna rješenja kreirana od strane blockchain razvojnog tima. Međutim, svi oni rješavaju slične probleme. U ovom članku pokušao sam ukratko pregledati nekoliko proizvoda dizajniranih posebno za testiranje blockchaina.

Rad blockchain mreže podsjeća na rad distribuirane baze podataka, tako da se slični alati i metode mogu koristiti za testiranje. Da biste bolje razumjeli kako se distribuirane baze podataka testiraju, pogledajte dobar izbor resursa i članaka odavde. Na primjer, latencija se u ovom slučaju sortira u dijelove članak, i da biste razumjeli kako traže greške u algoritmima replikacije, preporučujem da pročitate ovo članak.

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

Kratak pregled Blockchain testiranja i benchmarking alata

Počeću sa alatom koji, iako nije kreiran posebno za blockchaine, omogućava vam da efikasno testirate njihov rad, pod uslovom da već postoji mreža na kojoj možete eksperimentisati. Najvažniji faktor u pouzdanosti distribuiranog sistema je sposobnost da nastavi sa radom u slučaju problema sa serverima i mrežom. To mogu biti kašnjenja mreže, popunjenost diska, nedostupnost eksternih usluga (DNS), kvarovi hardvera i stotine drugih razloga. Da biste provjerili stabilnost bilo kojeg sistema koji rade zajedno na velikom broju sistemskih mašina, možete koristiti Gremlin. Koristi izuzetno efikasan pristup koji se zove Chaos Engineering.

Koristeći vlastiti mrežni agent, Gremlin stvara mnogo različitih tipova problema na potrebnom broju mašina: kašnjenje mreže, preopterećenje bilo kojeg resursa (CPU, disk, memorija, mreža), onemogućuje pojedinačne protokole itd. Za blockchains, Gremlin se može koristiti na testnet serverima, emulirajući probleme iz stvarnog života i posmatrajući ponašanje mreže. Pomoću njega programeri i administratori mogu posmatrati u kontrolisanom okruženju šta će se dogoditi ako se sistem sruši ili kada se kod ažurira. U tom slučaju, mreža mora biti unaprijed konfigurirana i raspoređena, kao i konfigurirana za prikupljanje potrebnih metričkih podataka.

Gremlin je zgodan alat za arhitekte, devops i stručnjake za sigurnost i univerzalno rješenje za testiranje svih gotovih i pokrenutih distribuiranih sistema, uključujući blockchains.

Kratak pregled Blockchain testiranja i benchmarking alata

Hyperledger Caliper je mnogo specijalizovanije rešenje Hyperledger Caliper. U ovom trenutku, Caliper podržava nekoliko blockchaina odjednom - predstavnike porodice Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), kao i Ethereum i FISCO BCOS mrežu.

Koristeći Caliper, možete postaviti topologiju blockchain mreže i ugovore za testiranje, kao i opisati konfiguraciju čvora. Blockchain čvorovi se podižu u docker kontejnerima na jednoj mašini. Zatim možete odabrati ono što je potrebno test konfiguracije i primite datoteku sa izvještajem o rezultatima testa nakon pokretanja. Kompletnu listu metrika Caliper i pristupa benčmarkingu možete pronaći ovdje metrika performansi Hyperledger Blockchain, ovo je odličan članak ako ste zainteresirani za temu blockchain benchmarkinga. Također možete podesiti zbirku metrike u zasebnom Prometheus/Grafani.

Hyperledger Caliper je alat namenjen programerima i sistemskim arhitektima, jer obezbeđuje ponovljivost testova i automatizaciju testiranja i benchmarkinga. Koristi se u razvoju jezgra blockchaina: konsenzus algoritama, virtuelne mašine za obradu pametnih ugovora, peer-to-peer sloja i drugih sistemskih mehanizama.

Kratak pregled Blockchain testiranja i benchmarking alata

MixBytes Tank je alat koji se pojavio u procesu razvoja konsenzusa i algoritama konačnosti za mreže zasnovane na EOS-u i testiranja paralanaca baziranih na paritetnom supstratu (Polkadot). U smislu funkcionalnosti, blizak je Hyperledger Caliper-u, jer vam omogućava da prikupite važne metrike sa čvorova bilo kog distribuiranog sistema i klijentskih mašina na kojima se pokreću test skripte.

MixBytes Tank koristi nekoliko cloud servisa (Digital Ocean, Google Cloud Engine, itd.), u kojima može pokrenuti mnoge čvorove, provesti preliminarne procedure konfiguracije, pokrenuti nekoliko benchmarka paralelno na različitim mašinama, prikupiti potrebne metrike i automatski isključiti mreže.

MixBytes Tank vam omogućava da uštedite novac na serverima u oblaku automatski minimizirajući nepotrebne resurse nakon testa. Još jedna karakteristična karakteristika je korištenje Molecule paketa, koji omogućava programeru da lokalno testira implementaciju željenog blockchaina.

MixBytes Tank vam omogućava rano otkrivanje uskih grla i grešaka u algoritmima koje nastaju u stvarnim mrežama sa velikim brojem geografski raspoređenih servera i klijenata. Rezervoar će vam pomoći da shvatite šta će se dogoditi na čvorovima ako klijenti pošalju transakcije sa datim tps-om u veoma ponovljivim uslovima i sa stvarnim brojem čvorova raspoređenih na različitim kontinentima, ako je potrebno.

Kratak pregled Blockchain testiranja i benchmarking alata

Whiteblock Genesis je platforma za testiranje blokova baziranih na Ethereum-u. Ovaj alat ima prilično široku funkcionalnost: omogućava vam da pokrenete mrežu, kreirate potreban broj računa u njoj, podignete potreban broj klijenata, konfigurirate topologiju mreže, odredite parametre propusnosti i gubitka paketa i pokrenete test.

Whiteblock Genesis nudi vlastita postrojenja za testiranje. Programeri samo trebaju specificirati testne parametre, pokrenuti ih koristeći gotov API i dobiti rezultate koristeći prikladnu kontrolnu ploču.

Whiteblock Genesis vam omogućava da konfigurirate prilično detaljan test koji će platforma automatski provesti za svaku značajnu promjenu koda. Ovo će vam omogućiti da uhvatite greš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 sistema je madt. Napisana je na Pythonu i omogućava vam da kreirate potrebnu topologiju mreže i potreban broj servera i klijenata koristeći jednostavnu konfiguracijsku skriptu (primer). Nakon toga, servis postavlja mrežu u nekoliko Docker kontejnera i otvara web sučelje u kojem možete promatrati poruke sa servera i klijenata mreže. Madt se može koristiti za testiranje blockchaina - repozitorijum projekta ima test p2p mreže baziran na Kademlia protokolu, u kojem se kašnjenja u isporuci podataka čvorovima postepeno povećavaju i provjerava status ovih podataka.

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

Ostala rješenja

Gotovo svako testiranje sistemskog dijela blockchaina zahtijeva pokretanje preliminarnih skripti, pripremu naloga i uslova za testiranje (ovo može biti testiranje grešaka konsenzusa koje mogu generirati brojne viljuške lanaca, testiranje hard fork scenarija, mijenjanje sistemskih parametara, itd.). Sve ove manipulacije se izvode različito u različitim blockchainima, tako da je timovima lakše da postupno prilagode testiranje proizvoda i benchmarking internom CI/CD-u i koriste vlastiti razvoj, koji postupno postaje složeniji kako se funkcionalnost blockchaina razvija.

Ipak, korištenje gotovih rješenja može značajno smanjiti vrijeme testiranja za ove timove, pa mislim da će se ovaj softver aktivno razvijati u narednim godinama.

zaključak

Da zaključimo ovaj kratki pregled, navest ću nekoliko važnih karakteristika blockchain alata za testiranje:

  • Mogućnost automatskog postavljanja blockchain mreže pod ponovljivim uvjetima. Ovaj faktor je važan kada se razvijaju sistemski dijelovi blockchaina: konsenzus algoritmi, konačnost, sistemski pametni ugovori.
  • Troškovi posjedovanja sistema, potrošeni resursi i pogodnost za stalnu upotrebu. Ovaj faktor daje projektu visokokvalitetna ispitivanja za malo novca.
  • Fleksibilnost i jednostavnost konfiguracije testa. Ovaj faktor povećava šanse za identifikaciju sistemskih problema - manja je šansa da se propusti nešto važno.
  • Prilagodba za određene vrste blockchaina. Razvoj rješenja zasnovanog na postojećem može značajno poboljšati kvalitet i smanjiti vremenske troškove.
  • Pogodnost i dostupnost dobijenih rezultata i njihova vrsta (izvještaji, metrika, grafikoni, dnevnici itd.). Ovo je apsolutno neophodno ako želite da pratite istoriju razvoja proizvoda ili ako vam je potrebna duboka analitika ponašanja blockchain mreže.

Sretno s vašim testiranjem i neka vaši blockchains budu brzi i tolerantni na greške!

izvor: www.habr.com

Dodajte komentar