O scurtă prezentare generală a instrumentelor de testare și benchmarking blockchain

O scurtă prezentare generală a instrumentelor de testare și benchmarking blockchain

Astăzi, soluțiile pentru testarea și evaluarea comparativă a blockchain-urilor sunt adaptate unui anumit blockchain sau fork-urilor acestuia. Există însă și câteva soluții mai generale care diferă în funcție de funcționalitate: unele dintre ele sunt proiecte open source, altele sunt furnizate ca SaaS, dar majoritatea sunt soluții interne create de echipa de dezvoltare blockchain. Cu toate acestea, toate rezolvă probleme similare. În acest articol, am încercat să revizuiesc pe scurt mai multe produse concepute special pentru testarea blockchain-urilor.

Funcționarea unei rețele blockchain seamănă cu funcționarea unei baze de date distribuite, astfel încât instrumente și metode similare pot fi folosite pentru testare. Pentru a înțelege mai bine cum sunt testate bazele de date distribuite, aruncați o privire la o selecție bună de resurse și articole prin urmare. De exemplu, latența este sortată în bucăți în aceasta articolși pentru a înțelege cum caută erori în algoritmii de replicare, vă recomand să citiți acest lucru articole.

Voi descrie mai multe soluții populare pentru testarea și evaluarea comparativă a blockchain-urilor. M-aș bucura dacă în comentarii ați descrie și alte produse software utile pentru rezolvarea acelorași probleme.

O scurtă prezentare generală a instrumentelor de testare și benchmarking blockchain

Voi începe cu un instrument care, deși nu este creat special pentru blockchains, vă permite să testați eficient funcționarea acestora, cu condiția să existe o rețea deja în funcțiune pe care să puteți experimenta. Cel mai important factor în fiabilitatea unui sistem distribuit este capacitatea de a continua lucrul în cazul unor probleme cu serverele și rețeaua. Acestea ar putea fi întârzieri ale rețelei, umplerea discului, indisponibilitatea serviciilor externe (DNS), defecțiuni hardware și sute de alte motive. Pentru a verifica stabilitatea oricăror sisteme care funcționează în mod concertat pe un număr mare de mașini de sistem, puteți utiliza Gremlin. Utilizează o abordare extrem de eficientă numită Chaos Engineering.

Folosind propriul agent de rețea, Gremlin creează multe tipuri diferite de probleme pe numărul necesar de mașini: întârzieri de rețea, supraîncărcare a oricărei resurse (CPU, disc, memorie, rețea), dezactivează protocoalele individuale etc. Pentru blockchain-uri, Gremlin poate fi folosit pe serverele testnet, emulând probleme din viața reală și observând comportamentul rețelei. Cu acesta, dezvoltatorii și administratorii pot observa într-un mediu controlat ce se va întâmpla dacă sistemul se blochează sau când codul este actualizat. În acest caz, rețeaua trebuie să fie configurată și implementată în prealabil, precum și configurată pentru a colecta valorile necesare.

Gremlin este un instrument convenabil pentru arhitecți, dezvoltatori și specialiști în securitate și o soluție universală pentru testarea oricăror sisteme distribuite gata făcute și care rulează, inclusiv blockchain-urile.

O scurtă prezentare generală a instrumentelor de testare și benchmarking blockchain

Hyperledger Caliper este o soluție mult mai specializată Caliper Hyperledger. În acest moment, Caliper acceptă mai multe blockchain-uri simultan - reprezentanți ai familiei Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), precum și Ethereum și rețeaua FISCO BCOS.

Folosind Caliper, puteți seta topologia rețelei blockchain și contractele pentru testare, precum și puteți descrie configurația nodului. Nodurile blockchain sunt ridicate în containere docker pe o singură mașină. Apoi, puteți selecta ceea ce este necesar configurații de testare și primiți un fișier cu un raport cu rezultatele testului după lansare. O listă completă a valorilor Caliper și a abordării de evaluare comparativă poate fi găsită aici Indicatori de performanță Hyperledger Blockchain, acesta este un articol grozav dacă sunteți interesat de subiectul benchmarking-ului blockchain. De asemenea, puteți configura colecția de valori într-un Prometheus/Grafana separat.

Hyperledger Caliper este un instrument destinat dezvoltatorilor și arhitecților de sistem, deoarece oferă repetabilitate a testelor și automatizarea testării și benchmarking-ului. Este folosit în dezvoltarea nucleului blockchain-urilor: algoritmi de consens, o mașină virtuală pentru procesarea contractelor inteligente, un strat peer-to-peer și alte mecanisme de sistem.

O scurtă prezentare generală a instrumentelor de testare și benchmarking blockchain

Rezervor MixBytes este un instrument care a apărut în procesul de dezvoltare a consensului și a algoritmilor de finalitate pentru rețelele bazate pe EOS și de testare a paralanțurilor bazate pe Parity Substrate (Polkadot). În ceea ce privește funcționalitatea, este aproape de Hyperledger Caliper, deoarece vă permite să colectați valori importante de la nodurile oricărui sistem distribuit și mașini client pe care rulează scripturi de testare.

MixBytes Tank folosește mai multe servicii cloud (Digital Ocean, Google Cloud Engine etc.), în care poate lansa multe noduri, poate efectua proceduri de configurare preliminară, poate rula mai multe benchmark-uri în paralel pe diferite mașini, poate colecta valorile necesare și poate opri automat reţea.

MixBytes Tank vă permite să economisiți bani pe serverele cloud minimizând automat resursele inutile după un test. O altă caracteristică distinctivă este utilizarea pachetului Molecule, care permite dezvoltatorului să testeze implementarea blockchain-ului dorit la nivel local.

MixBytes Tank vă permite să detectați din timp blocajele și erorile în algoritmi care apar în rețelele reale cu un număr mare de servere și clienți distribuiti geografic. Rezervorul vă va ajuta să înțelegeți ce se va întâmpla pe noduri dacă clienții trimit tranzacții cu un anumit tps în condiții foarte repetabile și cu un număr real de noduri răspândite pe diferite continente, dacă este necesar.

O scurtă prezentare generală a instrumentelor de testare și benchmarking blockchain

Whiteblock Genesis este o platformă de testare pentru blockchain-urile bazate pe Ethereum. Acest instrument are o funcționalitate destul de largă: vă permite să lansați o rețea, să creați numărul necesar de conturi în ea, să creșteți numărul necesar de clienți, să configurați topologia rețelei, să specificați lățimea de bandă și parametrii de pierdere de pachete și să rulați un test.

Whiteblock Genesis oferă propriile sale facilități de testare. Dezvoltatorii trebuie doar să specifice parametrii de testare, să-i ruleze folosind un API gata făcut și să obțină rezultate folosind un tablou de bord convenabil.

Whiteblock Genesis vă permite să configurați un test destul de detaliat pe care platforma îl va efectua automat pentru fiecare modificare semnificativă a codului. Acest lucru vă va permite să detectați erorile într-un stadiu incipient și să evaluați imediat impactul modificărilor asupra parametrilor importanți ai rețelei, cum ar fi viteza tranzacției și resursele consumate de noduri.

Madt

Un alt produs tânăr interesant pentru testarea sistemelor distribuite este madt. Este scris în Python și vă permite să creați topologia de rețea necesară și numărul necesar de servere și clienți folosind un script de configurare simplu (exemplu). După aceasta, serviciul implementează rețeaua în mai multe containere Docker și deschide o interfață web în care puteți observa mesajele de la serverele și clienții rețelei. Madt poate fi folosit pentru testarea blockchain-urilor - depozitul de proiect are un test de rețea p2p bazat pe protocolul Kademlia, în care întârzierile în livrarea datelor către noduri sunt crescute treptat și se verifică starea acestor date.

Madt a apărut abia recent, dar având în vedere arhitectura sa foarte flexibilă, se poate dezvolta într-un produs funcțional.

Alte soluții

Aproape orice testare a părții de sistem a blockchain-urilor necesită rularea de scripturi preliminare, pregătirea conturilor și condițiilor pentru testare (aceasta poate fi testarea erorilor de consens care pot genera numeroase fork-uri de lanțuri, testarea scenariilor hard fork, modificarea parametrilor sistemului etc.). Toate aceste manipulări sunt efectuate diferit în diferite blockchain-uri, așa că este mai ușor pentru echipe să adapteze treptat testarea și benchmarking-ul produselor la CI/CD intern și să-și folosească propriile dezvoltări, care devin treptat mai complexe pe măsură ce funcționalitatea blockchain-ului se dezvoltă.

Cu toate acestea, utilizarea soluțiilor gata făcute poate reduce foarte mult timpul de testare pentru aceste echipe, așa că cred că acest software va fi dezvoltat activ în următorii ani.

Concluzie

Pentru a încheia această scurtă recenzie, voi enumera câteva caracteristici importante ale instrumentelor de testare blockchain:

  • Abilitatea de a implementa automat o rețea blockchain în condiții repetabile. Acest factor este important atunci când se dezvoltă părți de sistem ale blockchain-urilor: algoritmi de consens, finalitate, contracte inteligente de sistem.
  • Costul deținerii sistemului, resursele consumate și comoditatea pentru utilizare constantă. Acest factor oferă proiectului teste de înaltă calitate pentru bani puțini.
  • Flexibilitatea și simplitatea configurației testului. Acest factor crește șansele de a identifica probleme de sistem - există mai puține șanse de a rata ceva important.
  • Personalizare pentru anumite tipuri de blockchain. Dezvoltarea unei soluții bazată pe una existentă poate îmbunătăți considerabil calitatea și poate reduce costurile de timp.
  • Comoditatea și accesibilitatea rezultatelor obținute și tipul acestora (rapoarte, metrici, grafice, jurnale etc.). Acest lucru este absolut necesar dacă doriți să urmăriți istoricul dezvoltării unui produs sau dacă aveți nevoie de analize profunde ale comportamentului rețelei blockchain.

Succes cu testarea dvs. și fie ca blockchains-urile dvs. să fie rapide și tolerante la greșeli!

Sursa: www.habr.com

Adauga un comentariu