Krótki przegląd narzędzi do testowania i benchmarkingu blockchainów

Krótki przegląd narzędzi do testowania i benchmarkingu blockchainów

Dzisiaj rozwiązania do testowania i benchmarkingów blockchainów są skoncentrowane na określonym blockchainie lub jego forach. Istnieje jednak kilka bardziej ogólnych rozwiązań, które różnią się funkcjonalnością: niektóre z nich to projekty open-source, inne są oferowane jako SaaS, ale większość to wewnętrzne rozwiązania tworzone przez zespoły deweloperów blockchainów. Niemniej jednak, wszystkie one rozwiązują podobne zadania. W tym artykule postaram się krótko omówić kilka produktów skoncentrowanych na testowaniu blockchainów.

Praca sieci blockchain przypomina działanie rozproszonej bazy danych, dlatego do testowania można zastosować podobne narzędzia i metody. Aby lepiej zrozumieć, jak testowane są rozproszone bazy danych, rzuć okiem na dobrą selekcję zasobów i artykułów. stąd. Na przykład, opóźnienie zostało dokładnie opisane w tym artykuł, a aby zrozumieć, jak wyszukiwane są błędy w algorytmach replikacji, polecam zapoznać się z tym artykułem.

Opiszę kilka popularnych rozwiązań do testowania i benchmarkingów blockchainów. Będę wdzięczny, jeśli w komentarzach opiszecie inne przydatne produkty programowe do rozwiązania tych samych zadań.

Krótki przegląd narzędzi do testowania i benchmarkingu blockchainów

Zacznę od narzędzia, które, choć nie zostało stworzone wyłącznie dla blockchainów, pozwala efektywnie testować ich działanie pod warunkiem istnienia już uruchomionej sieci, na której można eksperymentować. Najważniejszym czynnikiem niezawodności rozproszonego systemu jest zdolność do kontynuowania pracy w przypadku problemów z serwerami i siecią. Mogą to być opóźnienia sieciowe, przepełnienie dysku, niedostępność zewnętrznych usług (DNS), awarie sprzętowe i setki innych przyczyn. Aby testować odporność dowolnych systemów działających współbieżnie na dużej liczbie maszyn, można użyć Gremlin. W nim zastosowano niezwykle efektywną metodę, zwaną Chaos Engineering.

Dzięki własnemu agentowi sieciowemu Gremlin na odpowiedniej liczbie maszyn można generować różnorodne problemy, takie jak opóźnienia w sieci, przeciążenie dowolnego zasobu (CPU, dysk, pamięć, sieć), wyłączanie poszczególnych protokołów itp. W przypadku blockchainów Gremlin może być używany na serwerach testowej sieci, emulując rzeczywiste problemy i obserwując zachowanie sieci. Dzięki niemu deweloperzy i administratorzy w kontrolowanym środowisku mogą sprawdzać, co się wydarzy w systemie w przypadku awarii lub podczas aktualizacji kodu. Wcześniej należy skonfigurować i uruchomić sieć oraz dostosować zbieranie niezbędnych metryk.

Gremlin to wygodne narzędzie dla architektów, DevOps i specjalistów ds. bezpieczeństwa, stanowiące uniwersalne rozwiązanie do testowania różnych gotowych i uruchomionych systemów rozproszonych, w tym blockchainów.

Krótki przegląd narzędzi do testowania i benchmarkingu blockchainów

Hyperledger Caliper to znacznie bardziej wyspecjalizowane rozwiązanie Hyperledger Caliper. Na chwilę obecną Caliper wspiera kilka blockchainów z rodziny Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), a także Ethereum i sieć FISCO BCOS.

Dzięki Caliper możesz ustawić topologię sieci blockchain oraz kontrakty do testowania, a także opisać konfigurację węzła. Węzły blockchain są uruchamiane w kontenerach Docker na jednej maszynie. Następnie możesz wybrać potrzebne konfiguracje testów i otrzymać plik z raportem o wynikach testu po jego uruchomieniu. Pełną listę metryk Caliper i podejście do benchmarkingu możesz znaleźć tutaj Hyperledger Blockchain Performance Metrics, to doskonały artykuł, jeśli interesuje Cię temat benchmarkingu blockchainów. Można również skonfigurować zbieranie metryk w osobnym Prometheus/Grafana.

Hyperledger Caliper to narzędzie skierowane do deweloperów i architektów systemów, ponieważ zapewnia powtarzalność testów oraz automatyzację testowania i benchmarkingu. Jest używane podczas rozwoju rdzeni blockchainów: algorytmów konsensusu, maszyny wirtualnej do przetwarzania inteligentnych kontraktów, warstwy peer-to-peer oraz innych mechanizmów systemowych.

Krótki przegląd narzędzi do testowania i benchmarkingu blockchainów

MixBytes Tank — narzędzie, które powstało w trakcie opracowywania algorytmów konsensusu i finalności dla sieci opartych na EOS oraz testowania parachainów na bazie Parity Substrate (Polkadot). Funkcjonalnie jest zbliżone do Hyperledger Caliper, ponieważ pozwala zbierać ważne metryki z węzłów dowolnego systemu rozproszonego oraz maszyn klienckich, na których działają skrypty testowe.

MixBytes Tank korzysta z kilku usług w chmurze (takich jak Digital Ocean, Google Cloud Engine itd.), w których potrafi uruchomić wiele węzłów, przeprowadzić wstępne procedury konfiguracji, równocześnie uruchomić kilka benchmarków na różnych maszynach, zebrać niezbędne metryki oraz automatycznie wyłączyć sieć.

MixBytes Tank pozwala oszczędnie wydawać środki na serwery w chmurze, automatycznie zamykając niepotrzebne zasoby po przeprowadzeniu testu. Kolejną charakterystyczną cechą jest użycie pakietu Molecule, który umożliwia programiście testowanie wdrażania wymaganego blockchaina lokalnie.

MixBytes Tank umożliwia wczesne wykrywanie wąskich gardeł i błędów w algorytmach, które występują w rzeczywistych sieciach z dużą liczbą geograficznie rozproszonych serwerów i klientów. Tanka pomoże Ci zrozumieć, co się wydarzy na węzłach, jeśli klienci będą wysyłać transakcje z określonym tps w wysoko powtarzalnych warunkach oraz z rzeczywistą liczbą węzłów, rozlokowanych na różnych kontynentach, jeśli zajdzie taka potrzeba.

Krótki przegląd narzędzi do testowania i benchmarkingu blockchainów

Whiteblock Genesis to platforma do testowania blockchainów opartych na Ethereum. Narzędzie to dysponuje dość szeroką funkcjonalnością: pozwala uruchomić sieć, utworzyć w niej potrzebną liczbę kont, podnieść wymaganą liczbę klientów, skonfigurować topologię sieci, określić parametry pasma, utraty pakietów i uruchomić test.

Whiteblock Genesis zapewnia własne zasoby do przeprowadzania testów. Programiści muszą jedynie określić parametry testów, uruchomić je za pomocą dostępnego API i otrzymać wyniki, korzystając złatwego w obsłudze panelu sterowania.

Whiteblock Genesis pozwala skonfigurować dość szczegółowy test, który platforma będzie automatycznie przeprowadzać przy każdej istotnej zmianie kodu. Umożliwi to wczesne wychwycenie błędów i natychmiastową ocenę wpływu zmian na ważne parametry sieci, takie jak prędkość realizacji transakcji oraz zasoby wykorzystywane przez węzły.

Madt

Kolejny interesujący młody produkt do testowania systemów rozproszonych — madt. Został napisany w Pythonie i umożliwia stworzenie niezbędnej topologii sieci oraz odpowiedniej liczby serwerów i klientów za pomocą prostego skryptu konfiguracyjnego (przykład). Następnie usługa uruchamia sieć w kilku kontenerach dockerowych oraz uruchamia interfejs webowy, w którym można obserwować wiadomości od serwerów i klientów sieci. Madt może być używany do testowania blockchainów — w repozytorium projektu znajduje się test sieci p2p oparty na protokole Kademlia, w którym stopniowo zwiększają się opóźnienia w dostarczaniu danych do węzłów i sprawdzany jest status tych danych.

Madt pojawił się stosunkowo niedawno, ale biorąc pod uwagę bardzo elastyczną architekturę, może przekształcić się w funkcjonalny produkt.

Inne rozwiązania

Praktycznie każde testowanie systemowej części blockchainów wymaga uruchomienia wstępnych scenariuszy, przygotowania kont i warunków do testu (mogą to być testy błędów konsensusu, które mogą generować liczne forsowanie łańcuchów, opracowywanie scenariuszy hardforka, zmiany parametrów systemowych itp.). Wszystkie te manipulacje w różnych blockchainach wykonywane są w różny sposób, dlatego zespołom łatwiej jest stopniowo dostosowywać testowanie i benchmarking produktu do wewnętrznego CI/CD i wykorzystywać własne rozwiązania, które stopniowo stają się bardziej skomplikowane wraz z rozwojem funkcjonalności blockchaina.

Niemniej jednak korzystanie z gotowych rozwiązań może znacząco skrócić czas testowania tych zespołów, dlatego myślę, że ten software będzie aktywnie rozwijany w nadchodzących latach.

Podsumowanie

Kończąc tę krótką recenzję, wymienię kilka ważnych cech narzędzi do testowania blockchainów:

  • Możliwość automatycznego uruchomienia sieci blockchain w powtarzalnych warunkach. Ten czynnik jest ważny przy opracowywaniu systemowych części blockchainów: algorytmów konsensusu, finalności, systemowych inteligentnych kontraktów.
  • Koszt posiadania systemu, zużywane zasoby i użyteczność do regularnego użytku. Ten czynnik zapewnia projektowi wysokiej jakości testy za niewielkie pieniądze.
  • Elastyczność i prostota konfiguracji testów. Ten czynnik zwiększa szanse na wykrycie problemów systemu — mniejsze prawdopodobieństwo przeoczenia czegoś istotnego.
  • Dostosowanie dla konkretnych typów blockchainów. Opracowanie rozwiązania na bazie już istniejącego może znacznie poprawić jakość i skrócić czas realizacji.
  • Wygoda i dostępność uzyskanych wyników oraz ich typ (raporty, metryki, grafiki, logi itp.). To jest absolutnie niezbędne, jeśli chcesz śledzić historię rozwoju produktu lub potrzebujesz głębokiej analizy zachowań sieci blockchain.

Powodzenia w testowaniu i niech Twoje blockchainy będą szybkie i odporne na awarie!

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster