はじめに
初めまして。LayerXのkim(@jkcomment)です。私はLayerXでブロックチェーンに関する業務に携わっています。最近は愛の不時着や梨泰院クラスの影響で韓国料理にハマっています。
ブロックチェーンは金融・貿易・保険など様々な業界において、複数企業の共通プラットフォームを実現する技術として国内外で徐々に社会実装が進んでいます。そんな中、ブロックチェーンの性能は既存のWebシステム等と比べて性能が劣るため、まだ実用的ではないと言われることがあります。そのため、アカデミア界隈や多くの企業でブロックチェーンの性能に関する研究・開発が活発に行われています。
しかしながら、ブロックチェーンは分散システムであり、一般的なWebシステムと根本的な性質やアーキテクチャ、環境などが異なるため、同じ軸で評価するのは妥当ではなく、ブロックチェーンに適合した評価軸で計測を行うべきだと考えます。そこで今回はブロックチェーンにおけるパフォーマンス計測の必要性と、Hyperledger Fabricにフォーカスを当ててエンジニア観点で考えられるパフォーマンス計測ツールの比較軸とその比較軸に基づいた既存ツールの比較についてお話したいと思います。
なぜブロックチェーンのパフォーマンス計測は必要なのか
ブロックチェーンをビジネスないしはサービスの基盤として選定する際、ブロックチェーンに対するパフォーマンス計測を行う必要があります。具体的には、TPS (transactions per second, 1秒間にいくつのトランザクションが確定するか) や レイテンシー (トランザクションをブロードキャストしてから確定するまでの時間) などです。 これらの指標を実際に計測することで、要件を満たすパフォーマンスが出るかどうか検証することが可能です。ブロックチェーンの性能についての数多くの研究・実験結果がありますが、具体的にどんなアプリケーションを想定して実験をしているかは研究によって異なり、それによって同じブロックチェーン基盤であっても結果が異なるケースが多くみられます。よって、先行研究による結果は参考にしつつも、選定するブロックチェーン基盤がサービスの要件に合うかどうかのパフォーマンス計測は自分たちで行うべきです。ブロックチェーンの開発経験がある方はお分かりかと思いますが、開発者の想像以上に実用上パフォーマンスが足りないことがよくあります。高い品質のサービスを提供するためには、性能計測は避けては通れないのです。
Hyperledger Fabricのパフォーマンス計測ツール
上記でパフォーマンス計測の重要性についてお話しましたが、実際エンジニアがパフォーマンス計測を行う際には、どんなツールを使うのが良いでしょうか(もちろん自作の計測ツールで計測を行うことも可能ですが、ツール開発にコストがかかりますし、あまり現実的ではありません)。
まず、Hyperledger Fabricにおける代表的なパフォーマンス計測ツールについてご紹介します。代表的なツールは下記の3つがあります。
- Hyperledger Caliper
Hyperledger Caliperは、Linux Foundationが推進するオープンソースのプロジェクトの一つで、異なるブロックチェーンプラットフォームに対してベンチマークを行うための一般的なフレームワークです。Caliperは、Node.jsベースで、Fabricを中心にSawtooth、Iroha、Burrow、Besu、Ethereumなどのブロックチェーン基盤をサポートしています。 - PTE(Performance Traffic Engine)
PTEは、Node.jsベースで、Hyperledger FabricのSDKを用いて1つまたは複数のネットワークへのリクエストを送信したり、1つまたは複数のネットワークからのレスポンスを受信したりすることでHyperledger Fabricネットワークと相互作用するツールです。また、パフォーマンス以外の機能、例えばChannel作成からジョイン、Chaincodeのインストールなど付加的な機能も揃っています。現在、PTEはHyperledger Fabricのみ対応していますが、将来的には他のブロックチェーン基盤もサポートする予定です。 - BlockBench
BlockBenchは、プライベートブロックチェーンのパフォーマンス計測プラットフォームでです。BlockBenchはオープンソースプロジェクトで、Ethereum(+ Parity)とQuorum, Hyperledger Fabricの3種類のブロックチェーン基盤をサポートしています。BlockBenchは2つのワークロードが用意されており、データ処理パフォーマンスを測定するためのワークロードと、ブロックチェーンのさまざまなレイヤーでのパフォーマンスを理解するためのワークロードを提供しています。BlockBenchはC++で実装されており(一部Node.js必要)、軽量で素早く動作することが可能です。
パフォーマンス計測ツールの比較軸
上述したようにブロックチェーンのパフォーマンス計測ツールはいくつが存在しており、異なるツールを比較する際の比較軸は下記のような項目が考えられます。
- 計測指標
- 実験環境の設定
- モニタリング機能
- 学習コスト
- エコシステム
- その他
それぞれ、簡潔に説明します。「計測指標」は前述したTPSやレイテンシーなどのトランザクション処理に関する基本的な指標が計測可能かどうかです。次に、「実験環境の設定」は、計測を行う際のノードの構成やトランザクションによる負荷のかけ方に関して、どれくらい柔軟に設定ができるかを表します。「モニタリング機能」はログや計測結果を可視化する機能がどれくらい豊富か、を意味します。「学習コスト」はツールを動かすないし計画通り計測を行うまで必要な知識や習得難易度です。「エコシステム」は対象のツールに関する情報量や開発進捗、人気の度合いを表します。最後に、「その他」には、ツールそのもののパフォーマンスとTLS設定可否などが含まれています。
パフォーマンスツールの比較結果
上述した比較軸を基に各比較軸を更に細分化し、パフォーマンスツールの比較を行いました。
計測指標
どのツールも一般的な計測指標はサポートしており、その他取れる指標が異なりますが、大きな差はありません。
実験環境の設定
「マルチクライアント対応」は、複数のクライアントで実験が行えるかを意味します。複数のクライアントで同時に複数の異なるノードに対して実験が行えると、実験する側としては便利です。「マルチワークロード対応」は、一つのクライアントで複数の異なるシナリオが実行できるかを表します。「マルチOrderer対応」は、複数のOrdererに対して実験が行えるかを意味します。Hyperledger Fabricの実運用では、複数のOrdererを立てることが多いため、より本番に近い環境で実験をすることができます。「マルチChannel対応」は、単一のChannelではなく、複数のChannelに対する実験が行えるかを意味します。サービスの要件次第で、複数のChannelを想定している場合、より正確な実験が可能です。最後に「マルチPeer対応」は、クライアントから単一のPeerにトランザクションを送るのではなく、複数のPeerに対してトランザクション送信ができるかを意味します。これによってトランザクションを分散して送信することができます。
上記の表の通り、CaliperとPTEは全ての項目に対して全部対応していますが、BlockBenchはほとんど対応していません。
モニタリング機能
CaliperはGUIを備え、ブラウザ上で出力結果の確認ができるなど、CUI出力のみに対応する他の二つのツールに比べ非常に豊富なモニタリング・可視化機能をサポートしていることがわかります。
学習コスト
CaliperとPTEは特にワークロード作成の設定が複雑な分難易度は高いものの、パフォーマンス計測に関する実験の表現力が高いというメリットがあります。BlockBenchは、学習難易度は高い方ではありませんが、使いこなすにはC++の知識が必要です。また、ワークロード作成がシンプルな分他のツールと比べて柔軟性が劣ります。
エコシステム
CaliperとPTEはHyperledger Fabricのバージョン2系をサポートしており、BlockBenchは1.4系のみサポートをしています。Caliperは、採用実績も多い(参考文献参照)など他のツールと比べて優れていることがわかります。
その他
BlockBenchが他のツールと比べてクライアントからPeerへのトランザクションの送信速度が遅いことがわかりました。また、Hyperledger Fabricはセキュリティ上TLS使用を推奨しておりますが、BlockBenchはTLSが非対応というのが目立ちます。
以上の比較結果をまとめると、用途や規模によるとは思いますが、Hyperledger Fabricにおけるパフォーマンス計測ツールは現状Caliper一択と考えます。
今後の展望
Hyperledger Fabicにおけるパフォーマンス計測ツールはそこまで多いわけではありませんが、各プロジェクトは着実に開発が進んでいます。また、特定のブロックチェーンだけではなく、複数の異なるブロックチェーン基盤を包括的にサポートし、ブロックチェーンの基盤選定にも活用できるツールが今後は求められていくのではないでしょうか。実際に、Caliperでは開発ロードマップにCordaやQuorumなどの対応が含まれており、今後も期待のツールとして注視して行きたいと思います。
最後に
LayerXではHyperledger Fabricに関する情報をScrapboxにおいても発信しております。
また、LayerXでは「すべての経済活動をデジタル化する」と言うミッションのもと、Hyperledger Fabricに限らず、Ethereum、Quorum、Cordaなど様々ブロックチェーンによる開発や研究を行っています。何かご相談等ございましたら、お気軽にLayerXコンタクトフォームよりご連絡ください!
https://forms.gle/6hFcg8xZoa8HXuiL6
採用活動も積極的に行っておりますので、一緒に未来を作っていきたい方は是非ご連絡ください。
参考文献
[Hyperledger Caliper]
https://sites.duke.edu/hvs2/files/2018/11/perf_model_HLF_Harish_18.pdf
https://arxiv.org/pdf/1901.09873.pdf
https://www.persistent.com/wp-content/uploads/2018/07/research-paper-performance-characterization-of-hyperledger-fabric.pdf
https://image.samsungsds.com/us/en/insights/res/__icsFiles/afieldfile/2019/02/21/Blockchain-White-Paper-Accelerating-Throughput-in-Permissioned-Blockchain-Networks.pdf?queryString=20190307013920
[PTE]
https://arxiv.org/pdf/1910.00715.pdf
https://security.cse.iitk.ac.in/sites/default/files/14807214.pdf
[BlockBench]
https://www.comp.nus.edu.sg/~ooibc/blockbench.pdf