FerroDruid
OLAP compatible Apache Druid natif Rust
Quand est-ce amorti ?
Exemple : 5 000 $/mois de dépenses d’observabilité managée
Avec 5 000 $/mois de dépenses d’observabilité managée, une réduction conservatrice de 40% représente environ 2 000 $/mois de frais d’usage bruts évités — avant frais logiciels S4, EC2 et différences de charge de travail.
Estimez vos économies
Saisissez vos dépenses ou votre usage mensuel pertinent — aucun transfert de facture requis.
Une base de données OLAP temps réel native Rust, compatible avec la spécification Apache Druid. Elle parle la Druid REST API, le JSON de requêtes natives et Druid SQL, et lit les binaires de segments Druid v9 — sans JVM, sans ZooKeeper et sans plan de contrôle à six processus. Le binaire unique démarre en moins d’une seconde avec moins de 200 MB de RAM.
Un cluster Apache Druid classique nécessite au moins six processus JVM, ZooKeeper, une base de métadonnées externe et 16 GB+ de RAM avant de servir une seule requête ; le mode binaire unique de FerroDruid remplace tout cela par un processus livré comme AMI autonome. Il sert les huit types de requêtes natives (timeseries, topN, groupBy, scan, search, segmentMetadata, dataSourceMetadata, timeBoundary) ; exécute Druid SQL (SELECT, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, 30+ fonctions, EXPLAIN PLAN FOR, endpoint de tâche MSQ, ~95% de parité SQL cœur) ; expose 40+ endpoints REST compatibles Druid ; lit les segments Druid v9 (vérifié localement sur des segments écrits par Druid 31.0.2 / 35.0.1, et de bout en bout depuis un deep storage S3 réel d'AWS : un segment Druid 31, aller-retour) ; et ingère depuis des supervisors Kafka et Kinesis et du batch natif. Basic auth (Argon2id) + RBAC est activé par défaut, TLS via rustls, avec un mot de passe admin aléatoire unique généré au premier démarrage.
Le problème
Apache Druid est un puissant moteur OLAP en temps réel, mais un cluster classique nécessite au moins six processus JVM, plus ZooKeeper, plus une base de données de métadonnées externe, et 16 GB de RAM ou plus, avant de pouvoir servir une seule requête. Mettre en place, exploiter et surveiller ce plan de contrôle à six processus est lourd, et c'est surdimensionné pour les environnements d'évaluation et les petits déploiements. Vous souhaitez utiliser l'API et le format de segment de Druid, mais sans la contrainte de gérer une flotte de JVM et ZooKeeper.
Fonctionnement
- 1
Démarre sous forme de binaire unique
Le mode binaire unique exécute un seul processus — sans JVM, ni ZooKeeper, ni base de données de métadonnées externe — qui démarre en moins d'une seconde et utilise moins de 200 MB de RAM. Il utilise SQLite pour les métadonnées et le système de fichiers local pour le stockage profond, et est livré sous forme d'AMI autonome.
- 2
Prend en charge le protocole de communication de Druid
Il prend en charge l'API REST de Druid, le JSON des requêtes natives et Druid SQL, et lit les fichiers binaires de segment Druid v9 (vérifié localement sur des segments écrits par Druid 31.0.2 / 35.0.1, et de bout en bout depuis un deep storage S3 réel d'AWS : un segment Druid 31, aller-retour). Il traite les huit types de requêtes natives et expose plus de 40 endpoints REST compatibles avec Druid, vous permettant d'y diriger directement les clients Druid existants ou un connecteur Apache Superset.
- 3
Démarre sécurisé, changement de mot de passe à la première connexion
L'authentification Basic (Argon2id) et le RBAC sont activés par défaut, avec TLS via rustls. Au premier démarrage, il génère un nouveau mot de passe admin aléatoire unique à cette instance (jamais de mot de passe par défaut ou partagé) et l'écrit une seule fois dans le journal système de l'instance. Le compte admin est marqué comme devant être modifié (must-change), ainsi chaque endpoint d'API renvoie HTTP 403 jusqu'à ce que l'opérateur envoie un nouveau mot de passe par POST, forçant le changement lors de la première connexion.
Points forts
Compatible filaire avec la spécification Druid (REST + JSON natif + Druid SQL, segment v9) — les clients et requêtes Druid existants fonctionnent.
Un binaire, pas de JVM / ZooKeeper / plan de contrôle à six processus ; démarrage en moins d’une seconde avec moins de 200 MB RAM.
8 types de requêtes natives + Druid SQL (~95% de parité cœur) + ingestion Kafka / Kinesis ; auth + RBAC activés par défaut.
Ce qui est inclus
- AMI Amazon Linux 2023 autonome (Graviton / arm64, prenant en charge les instances des classes t4g, c7g, m7g et r7g)
- Mode binaire unique — un seul processus sans JVM, ZooKeeper ni base de données de métadonnées externe, démarrant en moins d'une seconde avec moins de 200 MB de RAM (métadonnées SQLite et stockage profond sur le système de fichiers local)
- Les huit types de requêtes natives Druid (timeseries, topN, groupBy, scan, search, segmentMetadata, dataSourceMetadata, timeBoundary) et plus de 40 endpoints REST compatibles avec Druid
- Druid SQL (SELECT / WHERE / GROUP BY / HAVING / ORDER BY / LIMIT, plus de 30 fonctions, EXPLAIN PLAN FOR, un endpoint de tâche MSQ et une parité SQL de base d'environ 95%)
- Lecture des fichiers binaires de segment Druid v9 (vérifiée localement sur des segments écrits par Druid 31.0.2 / 35.0.1, et de bout en bout depuis un deep storage S3 réel d'AWS : un segment Druid 31, aller-retour), avec ingestion depuis les superviseurs Kafka et Kinesis et via batch natif
- Sécurité activée par défaut — authentification Basic (Argon2id) plus RBAC, TLS via rustls, et un mot de passe admin aléatoire par instance généré au premier démarrage devant être modifié à la première connexion
- Modèle CloudFormation pour un déploiement derrière un ALB (marketplace/cloudformation/ami.yaml), avec single-binary single-node comme topologie prise en charge (le multi-nœud échoue en mode fermé par défaut)
Cas d'usage
Les équipes qui souhaitent un OLAP en temps réel compatible avec Druid sans exploiter un cluster à six processus JVM et ZooKeeper
Un backend pour les clients existants utilisant l'API REST de Druid, le JSON des requêtes natives, Druid SQL ou un connecteur Apache Superset
Environnements d'évaluation et de développement pour les fonctionnalités de Druid, utilisant un binaire léger qui démarre en moins d'une seconde avec moins de 200 MB
Analyses de streaming et de séries temporelles sur un seul nœud, avec ingestion depuis des superviseurs Kafka et Kinesis ou via batch natif
FAQ
Dans quelle mesure est-il compatible avec le véritable Apache Druid ?
FerroDruid prend en charge l'API REST de Druid, le JSON des requêtes natives et Druid SQL, et lit les segments v9 sur disque d'Apache Druid — vérifié localement sur des segments écrits par Druid 31.0.2 / 35.0.1 (les segments écrits par FerroDruid utilisent son propre format). Il couvre les huit types de requêtes natives et plus de 40 endpoints REST compatibles avec Druid, avec une parité SQL Druid de base d'environ 95% (pas 100%). Un flux de bout en bout avec Apache Superset 4.1.4 — Test Connection, synchronisation automatique des datasets, graphiques, filtres de plage temporelle, SQL Lab — est vérifié contre la v1.2.0, dont les post-agrégations multi-segments correspondent à Apache Druid 36.0.0 sur 13 cas audités sur 13. Périmètre honnête : la vérification couvre le mode binaire unique ; la lecture des segments est vérifiée octet par octet sur disque local (contre Druid 31.0.2 et 35.0.1) et de bout en bout depuis un deep storage S3 réel d'AWS (un segment Druid 31, aller-retour avec le même nombre de lignes et le même ensemble de colonnes) ; les encodages de segment non par défaut sont rejetés avec des erreurs explicites ; et le SQL JOIN/CTE échoue de manière fermée au lieu de s'exécuter.
Ai-je besoin d'une JVM, de ZooKeeper ou d'une base de données de métadonnées externe ?
Pas en mode binaire unique. Un seul processus démarre en moins d'une seconde et utilise moins de 200 MB de RAM — contrairement à un cluster Druid classique, qui nécessite au moins six processus JVM, plus ZooKeeper, plus une base de données de métadonnées externe et 16 GB de RAM ou plus. L'approche binaire unique prise en charge utilise SQLite pour les métadonnées et le système de fichiers local pour le stockage profond.
Puis-je exécuter une configuration multi-nœuds ?
La topologie prise en charge est single-binary single-node ; les configurations multi-nœuds échouent en mode fermé par défaut. Pour être honnête, la validation en direct concerne uniquement le mode binaire unique, et nous ne l'avons pas validé en tant que cluster multi-nœuds actif à ce jour. Consultez docs/KNOWN_LIMITATIONS.md pour plus de détails.
Comment la sécurité est-elle gérée, et comment se déroule la première connexion ?
L'authentification Basic (Argon2id) et le RBAC sont activés par défaut, avec TLS via rustls. Au premier démarrage, l'AMI génère un nouveau mot de passe admin aléatoire unique à cette instance (jamais de mot de passe par défaut ou partagé) et l'écrit une seule fois dans le journal système de l'instance. Le compte admin est marqué comme devant être modifié (must-change), ainsi chaque endpoint d'API renvoie HTTP 403 jusqu'à ce que l'opérateur envoie un nouveau mot de passe par POST à /druid-ext/basic-security/authentication/db/basic/users/admin/credential. Les informations d'identification après rotation sont persistées et survivent aux redémarrages.
Comment le déployer, et comment fonctionnent la licence et la facturation ?
Déployez-le avec le modèle CloudFormation fourni (marketplace/cloudformation/ami.yaml) derrière un Application Load Balancer ; terminez le TLS au niveau de l'ALB et n'exposez pas directement le port de service sur Internet. Dirigez vos clients (API REST, JSON des requêtes natives, Druid SQL ou un connecteur Apache Superset) vers l'endpoint du load balancer. Cette fiche produit vend une distribution sécurisée, scannée et supportée de FerroDruid pour une version figée. Le code source est disponible sous la Business Source License 1.1 (BUSL-1.1) : l’usage en production est permis, sauf pour le proposer à des tiers comme un service concurrent de base de données/analytique/OLAP hébergé, géré ou embarqué ; chaque version passe sous Apache License 2.0 quatre ans après sa publication (licence commerciale : [email protected]). L'AMI est mesurée automatiquement par AWS par heure d'instance active, sans aucun code de mesure dans le produit.
Pourquoi c'est moins cher
Hypothèse : backend OLAP temps réel avec ~1k events/sec et réponses sous-seconde (us-east-1).
- m5.xlarge × 3 (broker / coord / historical)
- $525 / mois
- ZooKeeper (t3.medium)
- $30 / mois
- RDS PostgreSQL métadonnées
- $150 / mois
- Total mensuel
- $705 / mois
- Instance FerroDruid (m5.large + frais logiciels)
- $120 / mois
- Total mensuel
- $120 / mois
Dimensionner l'instance FerroDruid selon le QPS d'ingestion
| QPS d'ingestion | Instance recommandée | Coût de l'instance FerroDruid | Total mensuel vs cluster Druid |
|---|---|---|---|
| ~100 events/s | t3.medium | $45 / mois | $45 / mois (Druid $400, −89 %) |
| ~1k events/s | m5.large | $120 / mois | $120 / mois (Druid $705, −83 %) |
| ~10k events/s | m5.2xlarge | $400 / mois | $400 / mois (Druid $1 800, −78 %) |
Exemple à titre indicatif. Le baseline du cluster Apache Druid exécute broker / coordinator / historical comme JVM séparées (m5.xlarge × 3), plus ZooKeeper et une DB de métadonnées RDS PostgreSQL — déploiement minimal typique. FerroDruid est un binaire unique compatible wire Druid, sans ZooKeeper externe ni DB de métadonnées ; secure-by-default avec changement de mot de passe forcé au premier login.
Modèle de tarification
Frais logiciel horaires + EC2 (classe t4g / c7g / m7g / r7g, Arm). Facturation à l’usage par type d’instance.
Autres produits S4
S4 — Squished S3
Gateway transparent de compression S3 par GPU
S4 Logs
Archiver CloudWatch Logs vers S3 zstd
S4 Metrics
Gouverner la cardinalité des métriques CloudWatch