RustとWASMで開発されKubernetesで実装されたデータストリームシステムFluvioを紹介

2022年12月23日(金)
松下 康之 - Yasuyuki Matsushita
RustとWASMで開発されたリアルタイムデータストリームシステムのFluvioを紹介。

Cloud Native Computing Foundation(CNCF)が公開しているYouTubeチャネルから、Kafkaに替わるストリーミングプロセッシングを行うオープンソースソフトウェアFluvioを解説する動画を紹介する。CNCFはクラウドネイティブなシステムを普及するためのマーケティング活動の一環としてクラウドネイティブなソフトウェアを解説する動画を公開しているが、これもそのひとつだ。Fluvioを開発しているのはInfinyOnという企業で、元NGINXのエンジニアが創業したベンチャーだ。Fluvio自体はオープンソースだが、CNCFのサンドボックスプロジェクトという訳でもない。CNCFにはTremorやStrimziというストリーミングのためのソフトウェアがすでにサンドボックスとして採用されているが、そういった枠には捕らわれずに紹介をするという発想だろう。

動画:Introduction to Fluvio, The Programmable Platform for Data in Motion

「Programmable Platform for Data in Motion」というタイトルが示すように、ストリーミングデータの加工などをRustで記述できるというのが最大の利点だろう。Fluvio自体もRustを用いて開発されており、レガシーなKafkaとは完全に異なる発想で作られている。TremorもRustで書かれているが、KafkaをKubernetesの上で稼働させるStrimziはJava、Kafka自体もJavaとScalaで書かれている。

オープンソースソフトウェアであるFluvioの解説

オープンソースソフトウェアであるFluvioの解説

このスライドではオープンソースソフトウェアとして紹介されているが、InfinyOnはクラウドベースのサービスも有償で提供しており、いわゆるエンタープライズ版はクラウドベースのSaaSで有償、コミュニティーが開発するものはオープンソースという形式を採る。OSS版をコアに、エンタープライズ用の拡張を有償で提供するオープンコアとは異なり、コードは同じだが、素早く利用が開始でき、SLAも保証できるサービスを売ることで、企業としての持続を目指しているということになる。

InfinyOnの紹介。2019年創業でNGINXの元社員が作った会社だ

InfinyOnの紹介。2019年創業でNGINXの元社員が作った会社だ

Fluvioの概要

Fluvioの概要

Fluvioの概要として解説されている特徴は、モダン、イミュータブル、プログラマブル、リアルタイムという辺りだろう。モダンやイミュータブルというのはKubernetesやRustを使っているという部分だろう。プログラマブルはRustで処理を記述できるという部分になる。またリアルタイムはJavaで書かれたKafkaに比べて高速であるという部分に相当すると思われる。

Javaに比べて高速であることを示す比較

Javaに比べて高速であることを示す比較

このスライドではJavaとRustの性能比較を紹介している。フィボナッチ数を計算するプログラムでの比較だと思われるが、レイテンシーやメモリー使用量、CPUの占有率、プログラムのサイズなどで比較すると、圧倒的にRustのほうが優れていることを示している。

Fluvioのシンプルな構造を紹介

Fluvioのシンプルな構造を紹介

データストリームの処理にはETL(Extract、Transform、Load)の処理が必須となるが、その前後のデータを取り込むモジュール、処理の中身、CLIなどをSmartModuleというRustで書かれたプログラムが担当することを解説している。

Kafkaのアーキテクチャー。ZookeeperやFlinkなどが必須となる

Kafkaのアーキテクチャー。ZookeeperやFlinkなどが必須となる

このスライドではFluvioが代替する対象となるKafkaのシステム図を示して、いかに複雑なシステムになっているかを解説している。分散処理のためのZookeeperなどがインフラストラクチャーとして必要となっている。

Fluvioのシンプルなアーキテクチャー

Fluvioのシンプルなアーキテクチャー

それに対してFluvioでは、データを取り込むプロデューサーもFluvioクラスターもデータを最終的に利用するコンシューマーもRustで書かれたWebAssemblyのモジュールが存在するだけというシンプルさだ。

Kafkaと比べて大きなコスト削減が可能になったFluvioの事例

Kafkaと比べて大きなコスト削減が可能になったFluvioの事例

またKafkaを使っていた企業がFluvioに乗り換えた事例を紹介し、1ヶ月あたり41,000ドルに及ぶコスト削減が可能になったことを説明した。

InfinyOnとFluvioの歴史を振り返る

InfinyOnとFluvioの歴史を振り返る

このスライドでは2019年に創業して以来、オープンソースソフトウェアとしてのFluvioとそのクラウドサービスであるInfinyOn Cloudがどのように進化してきたのかを解説している。ソフトウェアが機能追加を続けると同時にクラウドサービスもアルファからベータ、そして公式版に同期していることがわかる。

この後はデモとして氏名、メールアドレス、電話番号、ソーシャルセキュリティーナンバーというJSON形式のデータを読み込んで、電話番号をマスク、ソーシャルセキュリティーナンバーは削除するというシンプルな変換処理を、実際にInfinyOn Cloudを使って行った。

InfinyOn Cloud上にてRustで書かれた処理をコンパイルしているところ

InfinyOn Cloud上にてRustで書かれた処理をコンパイルしているところ

またVisual Studio Codeのターミナルから処理を行うところを実演してみせるなど、クラウドサービスが提供する利点を十分に活かしたデモを行った。

Visual Studio Codeからデモを実施

Visual Studio Codeからデモを実施

ここまでデモと解説は終ったが、いわゆるオンプレミス向けのソフトウェアにありがちなインストールに要する時間が省かれて、すぐに試用できる部分を見せたことは評価をしたいエンジニアには有効だろう。ちなみにInfinyOn CloudはAWSの上で実装されているのでAWSとの親和性も高そうである。

CNCFのランドスケープから引用

CNCFのランドスケープから引用

この図はCNCFが公開しているクラウドネイティブランドスケープからのものだが、Streamingというカテゴリに存在するオープンソースソフトウェアで、公開から3年でGitHubのスターが1356というのは同じRustで書かれているTremorも3年で679ということを考えると健闘しているといえるだろう。

Kafkaの状況。CNCFのランドスケープから引用

Kafkaの状況。CNCFのランドスケープから引用

Kafkaが公開から11年で23,000のGitHubスター、コントリビューターが500名以上、それに比べるとFluvioはまだ40名ということでInfinyOnの社員が大部分を担当しているということだろう。

OpenSSFのBest Practiceの達成率はまだ19%

OpenSSFのBest Practiceの達成率はまだ19%

「オープンソースソフトウェアがセキュアな環境や方法論で開発されているのか?」を判断する指標となるOpenSSF Best Practice Badgeだが、Fluvioの達成率はまだ19%である。Tremorがすでにバッジを獲得していることと比べれば、直接的な機能の充実という部分とは違う側面になるが、セキュアに開発が行われているのかを判断したい企業にとってみれば重要な指標になる。

RustとWebAssemblyというモダンな開発言語、環境で省資源かつ高速なデータ処理をKubernetesネイティブなシステムとして実装したFluvio、今後の発展に注目していきたい。

FluvioのGitHub:https://github.com/infinyon/fluvio

Fluvioのドキュメント公式サイト:https://www.fluvio.io/docs/architecture/overview/

InfinyOnの公式サイト:https://www.infinyon.com/

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

プロジェクト管理技術解説

失敗しないプロジェクトマネジメントに必要なこと 基礎知識やポイントを解説

2024/1/23
新規事業や新商品開発などで立ち上がるプロジェクトは、プロジェクトマネジメントがしっかりとできていれば成功しやすくなります。この記事ではプロジェクトマネジメントの基本的な知識と、失敗しがちな例をご紹介します。
教育技術解説

ゲームプログラマーを目指すにはどんな準備が必要? パソコンのスペックは? 学ぶべき言語は?

2024/1/17
ゲーム開発には、プログラミング言語などの知識とスキルが求められます。ゲーム作成にあたって初心者が知っておきたいことについて解説するので、参考にしてください。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています