Lotus & Retrieval Markets Buildersサミット
Retrieval Marketミニサミットの目的は、複数のRetrieval Marketソリューションの構築者を集め、これまでの進捗状況を明らかにし、複数のシステムが一体となって、ネットワークのユーザーにとっての回収取引の有効性、効率性、信頼性を向上させる方法を明らかにすることでした。
サミットでの講演内容はすべてFilecoinチャンネルで公開されました。
4月のRetrieval Market Buildersミニサミットでは、Raul Kripalani氏(libp2pおよびFilecoinのコア開発者)が、Lotusノードのアーキテクチャと、特にLotus-minerノードに予定されている、マイナーとネットワーク参加者のニーズによりよく適合するための変更点について深く掘り下げました。この講演の全文はこちらでご覧いただけます。この講演では、ロータスのマイナーにとって、検索取引の信頼性と拡張性を確保するために必要な作業を紹介し、Filecoinの検索市場が強固な基盤の上に構築されることを目指しました。
Lotusは、Filecoinネットワークの実装で、Goで書かれています。Filecoinの実装の最初のものとして、Lotusはネットワーク全体のための強固で回復性のある基盤を設定するように設計されています。Filecoinのノードの中核的な機能の1つは、有用なデータの保存と検索の両方を可能にすることであり、その結果、Filecoinネットワーク上の堅牢な検索市場の基盤を築くことができます。
Lotus Nodeの進化
Filecoinのエコシステムは急速に進んでおり、Lotusのようなエコシステムツールは、ネットワークのニーズを満たし、将来のチャンスを試すために常に進化しています。特に検索市場は、インデックス、CDN、パブリック検索など、Filecoinネットワークに新しい機能を導入します。
私たちが認識している問題は、これらの新しい検索市場の機能は、堅牢なマイナーの基盤に依存しているということです。現在のLotusのマイナーは、不安定であったり、収益性が低いと思われる特定の機能を回避する傾向があります。結局のところ、これはマイナーの良い行動であり、Lotusの実装が彼らのニーズに合わせて進化するのを助けているのです。ネットワークの参加者が特定の機能を短絡的に使い始めるということは、ソフトウェア自体がユーザーにもっと柔軟性とモジュール性を提供すべきであることを示しています。
私たちはこの観察を通して、LotusのモノリシックなバイナリーがLotusのマイナーの柔軟でロバストなオペレーションを妨げていることに気づき、その問題に対処する機会を得ました。
The Monolithic(モノリシック)バイナリー
これまでのところ、Lotusのノードのアーキテクチャは、ほとんどがモノリシックなものでした。Lotusへのエントリーポイントは、1)フルノード、2)マイナーの2つです。しかし、それ以外のネットワーク参加者は、ストレージのライフサイクルにおいてどのような責任を負うべきか、ほとんど選択肢がありません。例えば、マイナーは、マイニング、ストレージの証明、ディールメイキングなどを担当します。これらは基本的に異なる責任ですが、現在のlotus-minerのアーキテクチャではそれらが結合されています。
Monolithic Architectureの問題点
このようなモノリシックのアーキテクチャでは、マイナーは個別の責任でリソースを効果的に配分することができません。また、責任の所在を明確にすることは、収益の最大化とオペレーショナルリスクの最小化という、マイナーの基本的なモチベーションに反することになります。具体的には、モノリシック・バイナリにはいくつかの問題点があります。
脆弱性:アーキテクチャ内での棲み分けがなされていない場合、ある領域のバグがリークして他の重要なプロセスに影響を与える可能性があります。このため、重要なプロセスとそうでないプロセスを区分することが難しく、インスタンス全体がクラッシュする可能性があります。
攻撃対象領域の拡大:Lotusマイナーの特定のプロセスでは、パブリックエンドポイントを公開する必要があり、その部分が脆弱性の対象となります。アーキテクチャがモノリシックな場合、単一のパブリックエンドポイントがシステム全体を危険にさらす可能性があります。
機能の増加:Filecoinのミッションの中で、マイナーは生データを保存して提供するだけでなく、インデックス作成やディスカバリーなど、その上で有用なサービスを提供します。一つのプロセスにマイナー側の新機能を過剰に搭載すると、さらなる不安と運用リスクを引き起こします。
スケーリングができない:機能が違えば、必要な機能のアップグレードのプロセスも異なります。このような異なる機能をモノリシックのシステムで管理しようとすると難しく、反復と成長の遅れにつながります。
細かなコントロールができない:マイナーは能動的に機能をオプトインまたはオプトアウトすることができないため、取引を拒否したり、取引を思いとどまらせるために高い価格を設定したり、さらにはコードベースをフォークするなどのメカニズムで回避しなければなりません。
イテレーションが遅くなる:モノリシックなアーキテクチャでは、テストやイノベーションが難しくなります。なぜなら、新しいコンポーネントを分離したり、実験的な機能をシステム全体に導入せずにオプトインしたりする簡単な方法がないからです。
Modular Miner Architectureを目指して
Lotus社のマイナーの役割は、「マイニング作業」と「市場」の2つに分けられます。この2つのレイヤーでは、サービスやSLAが大きく異なります。例えば、Lotusマイナーのマイニングオペレーションは、経済的に最も収益性の高い活動であり、プライベートな性質を持っています。一方、マーケット・オペレーションは完全にパブリックであり、異なる収益モデルで運営されています。
この最初の分類を利用して、モノリシックのアーキテクチャの欠点を解決するモジュラー・マイナー・アーキテクチャへの最初のステップが浮かび上がってきました。それは、Lotusマイナー・プロセスを、1)Lotusマーケット・プロセスと2)その他のLotusマイナー・プロセスに分離することです。
マーケットとマイニングを分離することで、Lotusノードのアーキテクチャはマイナーにとってより特徴的なものとなり、マイナーは自分の能力やネットワークに対する経済的嗜好に最も適した責任を負うことができます。
設計方針
Lotusは、よりモジュール化されたマイナー・アーキテクチャーへの新たな道を歩む一方で、いくつかの設計原則を守り続けます。
マイクロサービスアーキテクチャのような複雑さの回避:スパゲッティ・アーキテクチャのような複雑な相互依存関係のウェブを明示的に回避します。これはLotusに導入するには不適切なレベルの複雑さです。これらのプロセスは1つのまとまったユニットの一部であるため、秩序と階層性が保たれています。
シンプルなハブ/スポーク・アーキテクチャ。Lotusは、スーパーバイザーインスタンスによって管理されるハブ&スポーク・アーキテクチャに移行しています。スーパーバイザーは、どの機能が配備されていて、どのノードがそれを提供しているかを把握しています。また、アグリゲートへの外部 API エントリーポイントとしても機能します。
様々な面で投資価値があること:Lotusの新アーキテクチャは、投資価値があるものでなければなりません。収益性に加えて、信頼性、セキュリティ、開発者の俊敏性、堅牢性などのROI要素があります。
堅牢な分散型プロセスライフサイクル監視:モジュール式アーキテクチャは、完全に孤立したものを意味するわけではありません。何かが故障し、それが他のダウンストリームサービスの故障を意味する場合、システム全体がそれに気づき、対応できなければなりません。
この新しいランタイムを設計するために、私たちは、Erlang/OTPやアクター指向プログラミング(JVMの世界ではAkkaなど)のようなモデルにインスピレーションを得て、サービスメッシュやオーケストレーターから選択したコンセプトや抽象化を借用していますが、実際にはこれらのフレームワークに全面的に依存しているわけではありません。
その他の情報
Lotusとモジュール式マイナー・アーキテクチャーの詳細を知りたい方は:
Proposal: Miner Runtime Segregation
本ブログは、www.filecoin.io/blog からの翻訳となります。
ソース: https://filecoin.io/blog/posts/the-evolution-of-a-lotus-node/
コメント