本文へスキップ
nomunomu0504.dev

WORKS OSS

hidane

Java 不要の Firestore エミュレータ。Rust の単一バイナリで、公式エミュレータの置き換えとして動く。

概要

公式の Cloud Firestore エミュレータは JDK が要り、起動も遅い。hidane(火種)は同じ gRPC / REST / WebChannel のワイヤプロトコルと Security Rules を話す Rust の単一バイナリで、firebase-tools の下でそのまま動く。公式エミュレータをオラクルにしたパリティテストで互換性を検証している。

構成

  • hidane 本体。エミュレータに加えて doctor / migrate / benchmark / report のサブコマンドを持つ
  • setup-hidane。GitHub Actions で hidane を入れる公式アクション。リリースの SHA-256 とビルド来歴を検証してから実行する。テストを公式エミュレータから移す PR を開くサブアクションも同梱
  • benchmark-results。公式エミュレータとの比較ベンチマークを同じマシンで毎晩・毎リリース記録している

技術的なポイント

  • tonic / tokio の gRPC サーバーに axum の REST を同居させ、ドキュメント・クエリ・集計・ベクトル検索・トランザクション・リスナー・エクスポートとインポートまでを公式と突き合わせている
  • Testcontainers では Cloud SDK イメージの代替としても使える