RustとWASMで開発されKubernetesで実装されたデータストリームシステム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で書かれている。
このスライドではオープンソースソフトウェアとして紹介されているが、InfinyOnはクラウドベースのサービスも有償で提供しており、いわゆるエンタープライズ版はクラウドベースのSaaSで有償、コミュニティーが開発するものはオープンソースという形式を採る。OSS版をコアに、エンタープライズ用の拡張を有償で提供するオープンコアとは異なり、コードは同じだが、素早く利用が開始でき、SLAも保証できるサービスを売ることで、企業としての持続を目指しているということになる。
Fluvioの概要として解説されている特徴は、モダン、イミュータブル、プログラマブル、リアルタイムという辺りだろう。モダンやイミュータブルというのはKubernetesやRustを使っているという部分だろう。プログラマブルはRustで処理を記述できるという部分になる。またリアルタイムはJavaで書かれたKafkaに比べて高速であるという部分に相当すると思われる。
このスライドではJavaとRustの性能比較を紹介している。フィボナッチ数を計算するプログラムでの比較だと思われるが、レイテンシーやメモリー使用量、CPUの占有率、プログラムのサイズなどで比較すると、圧倒的にRustのほうが優れていることを示している。
データストリームの処理にはETL(Extract、Transform、Load)の処理が必須となるが、その前後のデータを取り込むモジュール、処理の中身、CLIなどをSmartModuleというRustで書かれたプログラムが担当することを解説している。
このスライドではFluvioが代替する対象となるKafkaのシステム図を示して、いかに複雑なシステムになっているかを解説している。分散処理のためのZookeeperなどがインフラストラクチャーとして必要となっている。
それに対してFluvioでは、データを取り込むプロデューサーもFluvioクラスターもデータを最終的に利用するコンシューマーもRustで書かれたWebAssemblyのモジュールが存在するだけというシンプルさだ。
またKafkaを使っていた企業がFluvioに乗り換えた事例を紹介し、1ヶ月あたり41,000ドルに及ぶコスト削減が可能になったことを説明した。
このスライドでは2019年に創業して以来、オープンソースソフトウェアとしてのFluvioとそのクラウドサービスであるInfinyOn Cloudがどのように進化してきたのかを解説している。ソフトウェアが機能追加を続けると同時にクラウドサービスもアルファからベータ、そして公式版に同期していることがわかる。
この後はデモとして氏名、メールアドレス、電話番号、ソーシャルセキュリティーナンバーというJSON形式のデータを読み込んで、電話番号をマスク、ソーシャルセキュリティーナンバーは削除するというシンプルな変換処理を、実際にInfinyOn Cloudを使って行った。
またVisual Studio Codeのターミナルから処理を行うところを実演してみせるなど、クラウドサービスが提供する利点を十分に活かしたデモを行った。
ここまでデモと解説は終ったが、いわゆるオンプレミス向けのソフトウェアにありがちなインストールに要する時間が省かれて、すぐに試用できる部分を見せたことは評価をしたいエンジニアには有効だろう。ちなみにInfinyOn CloudはAWSの上で実装されているのでAWSとの親和性も高そうである。
この図はCNCFが公開しているクラウドネイティブランドスケープからのものだが、Streamingというカテゴリに存在するオープンソースソフトウェアで、公開から3年でGitHubのスターが1356というのは同じRustで書かれているTremorも3年で679ということを考えると健闘しているといえるだろう。
Kafkaが公開から11年で23,000のGitHubスター、コントリビューターが500名以上、それに比べるとFluvioはまだ40名ということでInfinyOnの社員が大部分を担当しているということだろう。
「オープンソースソフトウェアがセキュアな環境や方法論で開発されているのか?」を判断する指標となる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/
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Kafka on Kubernetesを実現するStrimziに特化したカンファレンスStrimziCon 2024からキーノートを紹介
- CNDO2021、CNCFの提供するクラウドネイティブランドスケープを解説するセッションを紹介
- KubeCon EU 2021からセキュアでコンパクトなバイナリーフォーマットWASMのセッションを紹介
- CloudNative Days Spring 2021開催。CNCFのCTOが語るクラウドネイティブの近未来
- StrimziCon 2024からブラジルのネットバンクにおけるKafkaクラスター移行のセッションを紹介
- CNDO 2021、KubernetesのセキュリティをHPEのアーキテクトが解説
- Microsoftがリードするモダンな分散システム用ランタイムDaprとは?
- KubeCon 2018 EU開催 着実に拡大するKubernetesエコシステム
- Kafka on KubernetesのStrimziConから新機能を解説するセッションを紹介
- StrimziCon 2024番外編、KafkaのリバランスをKubernetesのオペレータで実行するCruise Controlを紹介