AWS Marketplace製品一覧へ
FerroDruid
オブザーバビリティ

FerroDruid

Rust製 Apache Druid互換 OLAP

1秒未満起動・RAM 200MB未満 置き換え対象のAWSサービス: Apache Druid クラスタ
AWS Marketplaceで入手

Rust製の、Apache Druid仕様互換のリアルタイムOLAPデータベース。Druid REST API・ネイティブクエリJSON・Druid SQLを話し、Druidセグメントv9/v10バイナリを読み書きします — JVMなし、ZooKeeperなし、6プロセスのコントロールプレーンなしで。単一バイナリは200MB未満のRAMで1秒未満起動。

古典的なApache Druidクラスタは、1クエリを返す前に6つ以上のJVMプロセス + ZooKeeper + 外部メタデータDBと16GB以上のRAMを要します。FerroDruid の単一バイナリモードは、それを1プロセス(自己完結AMI)で置き換えます。v0.2.0は8種すべてのネイティブクエリ(timeseries / topN / groupBy / scan / search / segmentMetadata / dataSourceMetadata / timeBoundary)を提供し、Druid SQL(SELECT / WHERE / GROUP BY / HAVING / ORDER BY / LIMIT、30以上の関数、EXPLAIN PLAN FOR、MSQタスク、コアSQL互換 約95%)を実行、40以上のDruid互換RESTエンドポイントを公開、Druidセグメントv9/v10を読み書き、Kafka / Kinesis / ネイティブバッチで取り込み。認証はBasic(Argon2id)+ RBACがデフォルトON、TLSはrustls。初回起動時にそのインスタンス固有のランダム管理パスワードを生成します。

課題

Apache Druid は強力なリアルタイム OLAP エンジンですが、最初の 1 クエリを返すまでに 6 つ以上の JVM プロセスと ZooKeeper、外部メタデータデータベース、そして 16GB 以上の RAM を必要とします。この 6 プロセス構成のコントロールプレーンを立ち上げ、運用し、監視し続ける負担は大きく、検証環境や小規模なデプロイでは過剰になりがちです。Druid の API とセグメント形式は使いたいが、JVM と ZooKeeper の運用は避けたい、というのが課題です。

仕組み

  1. 1

    単一バイナリで起動

    single-binary モードは JVM も ZooKeeper も外部メタデータデータベースも使わず、1 プロセスとして 1 秒未満で起動し、200MB 未満の RAM で動作します。メタデータは SQLite、ディープストレージはローカルファイルシステムを使い、自己完結型の AMI として配布されます。

  2. 2

    Druid のワイヤ互換で話す

    Druid REST API、ネイティブクエリ JSON、Druid SQL を解釈し、Druid セグメント v9/v10 のバイナリファイルを読み書きします。8 種すべてのネイティブクエリタイプと 40 以上の Druid 互換 REST エンドポイントを提供するため、既存の Druid クライアントや Apache Superset コネクタをそのまま向けられます。

  3. 3

    認証必須で起動し初回にパスワード変更

    Basic 認証(Argon2id)と RBAC がデフォルトで有効、TLS は rustls で提供されます。初回起動時にそのインスタンス固有の新しいランダム admin パスワードを生成し(デフォルトや共有パスワードは使いません)、インスタンスのシステムログに 1 度だけ書き出します。admin アカウントは must-change 扱いで、運用者が新しいパスワードを POST するまで全 API エンドポイントが HTTP 403 を返します。

特長

Druid仕様ワイヤ互換(REST + ネイティブJSON + Druid SQL、セグメントv9/v10) — 既存のDruidクライアント/クエリが動作。

1バイナリ、JVM / ZooKeeper / 6プロセス制御層なし。200MB未満RAMで1秒未満起動。

8種のネイティブクエリ + Druid SQL(コア約95%) + Kafka / Kinesis取り込み。認証 + RBACデフォルトON。

含まれるもの

  • Amazon Linux 2023 ベースの自己完結型 AMI(Graviton / arm64、t4g・c7g・m7g・r7g クラスのインスタンスに対応)
  • single-binary モード — JVM・ZooKeeper・外部メタデータデータベースなしで 1 プロセスが 1 秒未満で起動し 200MB 未満の RAM で動作(メタデータは SQLite、ディープストレージはローカルファイルシステム)
  • 8 種すべての Druid ネイティブクエリタイプ(timeseries・topN・groupBy・scan・search・segmentMetadata・dataSourceMetadata・timeBoundary)と 40 以上の Druid 互換 REST エンドポイント
  • Druid SQL(SELECT / WHERE / GROUP BY / HAVING / ORDER BY / LIMIT、30 以上の関数、EXPLAIN PLAN FOR、MSQ タスクエンドポイント、コア SQL 互換 約 95%)
  • Druid セグメント v9/v10 バイナリファイルの読み書きと、Kafka・Kinesis スーパーバイザおよびネイティブバッチからの取り込み
  • デフォルト有効のセキュリティ — Basic 認証(Argon2id)+ RBAC、rustls による TLS、初回起動時にインスタンス固有のランダム admin パスワードを生成し初回ログイン時に変更を強制
  • ALB 背後へのデプロイ用 CloudFormation テンプレート(marketplace/cloudformation/ami.yaml)と、サポート対象構成 single-binary single-node(マルチノードはデフォルトで fail-closed)

こんな用途に

6 プロセスの JVM / ZooKeeper クラスタを運用せずに Druid 互換のリアルタイム OLAP を動かしたいチーム

Druid REST API・ネイティブクエリ JSON・Druid SQL や Apache Superset コネクタを使う既存クライアントの受け皿

1 秒未満で起動し 200MB 未満で動く軽量バイナリを使った Druid 機能の検証・開発環境

Kafka・Kinesis スーパーバイザやネイティブバッチで取り込むストリーミング / 時系列分析のシングルノード構成

よくある質問

本物の Apache Druid との互換性はどこまでありますか?

FerroDruid は Druid REST API、ネイティブクエリ JSON、Druid SQL を話し、Druid セグメント v9/v10 を読み書きします。8 種すべてのネイティブクエリタイプと 40 以上の Druid 互換 REST エンドポイントを備え、コア Druid SQL 互換は約 95%(100% ではありません)です。ライブのワイヤ deep-match は Apache Druid 30.0.1 に対して 5/5、Apache Superset コネクタとも 5/5 で一致しました。なお正直な範囲として、ライブ検証は Druid 30.0.1 と single-binary モードに対するもので、Druid 31〜36 は稼働クラスタに対して未クロス検証の設計目標です。

JVM や ZooKeeper、外部メタデータデータベースは必要ですか?

single-binary モードではいずれも不要です。1 プロセスが 1 秒未満で起動し、200MB 未満の RAM で動作します。これは、6 つ以上の JVM プロセスと ZooKeeper、外部メタデータデータベース、16GB 以上の RAM を必要とする従来の Druid クラスタとは対照的です。サポート対象の single-binary パスは、メタデータに SQLite、ディープストレージにローカルファイルシステムを使用します。

マルチノード構成は使えますか?

サポート対象のトポロジは single-binary single-node です。マルチノード構成はデフォルトで fail-closed(閉じる側に倒れる)動作になります。正直に申し上げると、ライブ検証は single-binary モードに対して行われており、現時点で稼働するマルチノードクラスタとしての検証は行っていません。詳細は docs/KNOWN_LIMITATIONS.md をご参照ください。

セキュリティはどうなっていますか。初回ログインの流れは?

Basic 認証(Argon2id)と RBAC がデフォルトで有効、TLS は rustls で提供されます。初回起動時に AMI はそのインスタンス固有の新しいランダム admin パスワードを生成し(デフォルトや共有パスワードは決して使いません)、インスタンスのシステムログに 1 度だけ書き出します。admin アカウントは must-change 扱いで、運用者が /druid-ext/basic-security/authentication/db/basic/users/admin/credential に新しいパスワードを POST するまで全 API エンドポイントが HTTP 403 を返します。ローテーション後の資格情報は永続化され、再起動後も保持されます。

デプロイ方法とライセンス・課金はどうなりますか?

ALB の背後に配置する CloudFormation テンプレート(marketplace/cloudformation/ami.yaml)でデプロイし、TLS は ALB で終端してサービスポートをインターネットに直接公開しないでください。クライアント(REST API・ネイティブクエリ JSON・Druid SQL・Apache Superset コネクタ)はロードバランサのエンドポイントに向けます。このリスティングは、Apache-2.0 のソースから固定リリースバージョンでビルドした堅牢かつスキャン済み・サポート付きのディストリビューションを販売するもので、コード自体は Apache-2.0 のままです。AMI は稼働インスタンス時間に応じて AWS が自動的にメータリングします(製品内にメータリングコードはありません)。

料金モデル

時間課金のソフトウェア利用料 + EC2(t4g / c7g / m7g / r7g 級、Arm)。インスタンスタイプ別の従量課金。

AWS Marketplaceで入手