Кароткі агляд інструментаў для тэставання і бенчмаркінгу блокчейнов

Кароткі агляд інструментаў для тэставання і бенчмаркінгу блокчейнов

Сёння рашэнні для тэставання і бенчмаркінгу блокчейнов заменчаны пад вызначаны блокчейн або яго форкі. Але ёсць і некалькі больш агульных рашэнняў, якія адрозніваюцца функцыяналам: некаторыя з іх – апенсорсныя праекты, іншыя прадастаўляюцца як SaaS, але большая частка – гэта ўнутраныя рашэнні, якія ствараюцца камандай распрацоўкі блокчейна. Тым не менш усе яны вырашаюць падобныя задачы. У дадзеным артыкуле я пастараўся коратка разгледзець некалькі прадуктаў, заменчаных менавіта пад тэставанне блокчейнов.

Праца блокчейн-сеткі нагадвае працу размеркаванай базы дадзеных, таму для тэсціравання можна прымяняць аналагічныя сродкі і метады. Каб лепш разумець, як тэстуюць размеркаваныя базы даных, зірніце на добрую падборку рэсурсаў і артыкулаў. адсюль. Напрыклад, latency разабрана па палічках у гэтай артыкуле, а каб зразумець, як шукаюць багі ў алгарытмах рэплікацыі, рэкамендую азнаёміцца ​​з гэтай артыкулам.

Я апішу некалькі папулярных рашэнняў для тэсціравання і бенчмаркетынгу блокчейнов. Буду рады, калі ў каментарах вы апішаце іншыя карысныя праграмныя прадукты для рашэння тых жа задач.

Кароткі агляд інструментаў для тэставання і бенчмаркінгу блокчейнов

Пачну з прылады, хоць і не створанага менавіта пад блокчейны, але які дазваляе эфектыўна тэставаць іх працу пры ўмове існавання ўжо запушчанай сеткі, над якой можна эксперыментаваць. Найважнейшы фактар ​​надзейнасці размеркаванай сістэмы - здольнасць працягнуць працу ў выпадку праблем з серверамі і сеткай. Гэта могуць быць сеткавыя лагі, перапаўненне кружэлкі, недаступнасць вонкавых сэрвісаў (DNS), апаратныя збоі і сотні іншых чыннікаў. Каб правяраць устойлівасць любых сістэм, якія працуюць узгоднена на вялікай колькасці машын сістэм, можна выкарыстоўваць грэмлін. У ім выкарыстоўваецца вельмі эфектыўны падыход, званы Chaos Engineering.

З дапамогай уласнага сеткавага агента Gremlin стварае на патрэбнай колькасці машын мноства розных тыпаў праблем: сеткавыя лагі, перагрузку любога рэсурсу (CPU, кружэлка, памяць, сетка), адключае асобныя пратаколы, і да т.п. Для блокчейнов Gremlin можа быць скарыстаны на серверах тэставай сеткі, эмулюючы рэальныя праблемы і назіраючы за паводзінамі сеткі. З яго дапамогай распрацоўшчыкі і адміністратары ў кантраляваным асяроддзі могуць назіраць, што адбудзецца ў з сістэмай выпадку збояў або пры абнаўленні кода. Пры гэтым сетку неабходна загадзя сканфігураваць і разгарнуць, а таксама наладзіць збор неабходных метрык.

Gremlin - зручная прылада для архітэктараў, дэвопсаў і бяспечнікаў і ўніверсальнае рашэнне для тэставання любых гатовых і запушчаных размеркаваных сістэм, у тым ліку блокчейнов.

Кароткі агляд інструментаў для тэставання і бенчмаркінгу блокчейнов

Hyperledger Caliper - значна больш спецыялізаванае рашэнне Hyperledger суппорт. На дадзены момант Caliper падтрымлівае адразу некалькі блокчейнов – прадстаўнікоў сямейства Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), а таксама Ethereum і сетка FISCO BCOS.

З дапамогай Caliper можна задаць тапалогію блокчейн-сеткі і кантракты для тэставання, а таксама апісаць канфігурацыю ноды. Ноды блокчейна паднімаюцца ў docker кантэйнерах на адной машыне. Далей, вы можаце выбраць неабходныя канфігурацыі тэстаў і атрымаць файл са справаздачай аб выніках тэсту пасля запуску. З поўным пералікам метрык Caliper і падыходам да бенчмаркетынгу можна азнаёміцца ​​тут. Hyperledger Blockchain Performance Metrics, гэта выдатны артыкул, калі вам цікавая тэма бенчмаркетынгу блокчейнов. Таксама, можна наладзіць збор метрык у асобны Prometheus/Grafana.

Hyperledger Caliper — інструмент, арыентаваны на распрацоўшчыкаў і сістэмных архітэктараў, бо забяспечвае паўтаральнасць тэстаў і аўтаматызацыю тэсціравання і бенчмаркетынгу. Ён выкарыстоўваецца пры распрацоўцы ядра блокчейнов: алгарытмаў кансэнсусу, віртуальнай машыны для працэсінгу смарт-кантрактаў, peer-to-peer пласта і іншых сістэмных механізмаў.

Кароткі агляд інструментаў для тэставання і бенчмаркінгу блокчейнов

MixBytes Tank - інструмент, які з'явіўся ў працэсе распрацоўкі алгарытмаў кансэнсусу і фінальнасці для сетак на базе EOS і тэсціравання парачэйнаў на базе Parity Substrate (Polkadot). Па функцыянале ён блізкі да Hyperledger Caliper, бо дазваляе збіраць важныя метрыкі з нод любой размеркаванай сістэмы і кліенцкіх машын, на якіх працуюць тэставыя скрыпты.

MixBytes Tank выкарыстоўвае некалькі хмарных сэрвісаў (Digital Ocean, Google Cloud Engine і інш.), у якіх умее запусціць мноства нод, правесці папярэднія працэдуры канфігуравання, паралельна запусціць некалькі benchmark-ов на розных машынах, сабраць неабходныя метрыкі і аўтаматычна пагасіць сетку.

MixBytes Tank дазваляе эканомна расходаваць сродкі на хмарныя серверы, аўтаматычна згортваючы непатрэбныя рэсурсы пасля правядзення тэсту. Яшчэ адна адметная рыса – выкарыстанне пакета Molecule, які дазваляе распрацоўніку тэставаць разгортванне патрэбнага блокчейна лакальна.

MixBytes Tank дазваляе на ранніх этапах выявіць вузкія месцы і памылкі ў алгарытмах, якія ўзнікаюць у рэальных сетках з вялікай колькасцю геаграфічна размеркаваных сервераў і кліентаў. Танк дапаможа вам зразумець, што адбудзецца на нодах, калі кліенты будуць слаць транзакцыі з зададзеным tps у высокапаўтаральных умовах і з рэальнай колькасцю нод, разнесеных на розныя кантыненты, калі трэба.

Кароткі агляд інструментаў для тэставання і бенчмаркінгу блокчейнов

Whiteblock Genesis – гэта платформа для тэставання блокчейнов на базе Ethereum. Гэты інструмент валодае досыць шырокім функцыяналам: ён дазваляе запусціць сетку, стварыць у ёй патрэбную колькасць акаўнтаў, падняць патрэбны лік кліентаў, сканфігураваць тапалогію сеткі, паказаць параметры bandwidth, packetloss і запусціць тэст.

Whiteblock Genesis дае ўласныя магутнасці для правядзення тэстаў. Распрацоўнікам дастаткова пазначыць параметры тэстаў, запусціць іх пры дапамозе гатовага API і атрымаць вынікі з выкарыстаннем зручнага dashboard.

Whiteblock Genesis дазваляе сканфігураваць досыць падрабязны тэст, які платформа будзе аўтаматычна праводзіць на кожную значную змену кода. Гэта дазволіць на ранніх этапах адлавіць памылкі і адразу ж ацаніць уплыў змен на важныя параметры сеткі, такія як хуткасць правядзення транзакцый і спажываныя нодамі рэсурсы.

Madt

Яшчэ адзін цікавы малады прадукт для тэставання размеркаваных сістэм madt. Ён напісаны на Python і дазваляе стварыць неабходную тапалогію сеткі і патрэбны лік сервераў і кліентаў з дапамогай нескладанага скрыпту канфігурацыі (прыклад). Пасля гэтага сэрвіс разгортвае сетку ў некалькіх docker-кантэйнерах і паднімае web-інтэрфейс, у якім можна назіраць паведамленні ад сервераў і кліентаў сеткі. Madt можа выкарыстоўвацца для тэставання блокчейнов - у рэпазітары праекта ёсць тэст p2p сеткі на аснове пратаколу Kademlia, у якім паступова павялічваюцца затрымкі пры дастаўцы дадзеных на ноды і правяраецца статут гэтых дадзеных.

Madt з'явіўся зусім нядаўна, але, улічваючы вельмі гнуткую архітэктуру, можа развіцца ў функцыянальны прадукт.

іншыя рашэнні

Практычна любое тэставанне сістэмнай часткі блокчейнов патрабуе запуску папярэдніх сцэнараў, падрыхтоўкі акаўнтаў і ўмоў для тэсту (гэта можа быць тэставанне памылак кансэнсусу, якія могуць спараджаць шматлікія форкі ланцужкоў, адпрацоўка сцэнараў хардфорка, змены сістэмных параметраў і т.д.). Усе гэтыя маніпуляцыі ў розных блокчейнах праводзяцца па розным, таму камандам прасцей паступова прыстасаваць тэставанне і бенчмаркінг прадукта да ўнутранага CI/CD і выкарыстоўваць уласныя напрацоўкі, якія паступова ўскладняюцца з развіццём функцыяналу блокчейна.

Тым не менш выкарыстанне гатовых рашэнняў здольна моцна скараціць гэтым камандам час на тэсціраванне, таму, я думаю, што гэты софт будзе актыўна развівацца ў бліжэйшыя гады.

Заключэнне

Завяршаючы гэты невялікі агляд, пералічу некалькі важных характарыстык прылад для тэставання блокчейнов:

  • Магчымасць аўтаматычнага разгортвання блокчейн-сеткі ў паўтаральных умовах. Гэты фактар ​​важны пры распрацоўцы сістэмных частак блокчейнов: алгарытмаў кансэнсусу, фінальнасці, сістэмных смарт-кантрактаў.
  • Кошт валодання сістэмай, спажываныя рэсурсы і зручнасць для пастаяннага выкарыстання. Гэты фактар ​​забяспечвае праект высакакласнымі тэстамі за невялікія грошы.
  • Гнуткасць і прастата канфігурацыі тэстаў. Гэты фактар ​​павышае шанцы выявіць праблемы сістэмы - менш верагоднасць прапусціць нешта важнае.
  • Кастамізацыя для канкрэтных тыпаў блокчейнов. Распрацоўка рашэння на базе ўжо існага можа моцна палепшыць якасць і скараціць часавыя выдаткі.
  • Выгода і даступнасць атрыманых вынікаў і іх тып (справаздачы, метрыкі, графікі, логі, і да т.п.). Гэта зусім неабходна, калі вы хочаце адсочваць гісторыю развіцця прадукта, ці вам патрабуецца глыбокая аналітыка паводзін блокчейн-сеткі.

Удачы ў тэставанні і няхай вашыя блокчейны будуць хуткімі і адмоваўстойлівасцю!

Крыніца: habr.com

Дадаць каментар