← Volver![]()
ACME EV — telemetría en tiempo real de una flota de vehículos eléctricos
Kafka (Confluent) con Schema Registry y DLQ, dashboard en vivo en Vercel y capa Gold en Databricks
Problema
Recibir y explotar la telemetría de una flota de hasta 10,000 vehículos eléctricos en 10 sucursales de Latinoamérica (GPS cada 30 s y estado cada 60 s), garantizando disponibilidad, integridad y confidencialidad, con crecimiento del 20 % anual.
Datos
Telemetría simulada en Python (posición GPS, batería, on/off, código de falla 000–999, km) sobre rutas reales de calles (Google Routes / OSRM), catálogo dimensional de sucursales, vehículos y clientes (identidades sintéticas de randomuser.me) y capa Gold en Databricks.
Métodos
- Generador Python con física del vehículo (Haversine, rumbo, velocidad variable), batería y lógica de desconexión con buffering y reconexión (tramas liberadas en ráfaga)
- Publicación a Kafka con JSON Schema validado en Schema Registry; los mensajes que no validan van al tópico de dead-letter (DLQ)
- Función serverless en Vercel como puente Kafka → navegador (kafkajs) con cursor incremental
- Dashboard web (HTML/JS, Google Maps vectorial WebGL) con clustering de marcadores y rutas por sucursal bajo demanda
- Capa Gold en Databricks: Delta tables + vista enriquecida que une la telemetría Bronze con el catálogo
- Escalado de 300 a 10,000 vehículos optimizando solo el cliente, sin reescribir la lógica de estado
- 33 tests pytest del generador; informes gerencial/técnico (10 páginas) y anexo de eficiencia y costos en nube
Resultados
- Flota de 10,000 vehículos ≈ 500 eventos/s sostenidos y 43,2 M de eventos al día (aritmética del enunciado, documentada como «cifra dura» en el anexo; las estimaciones de RU/s y costos se declaran como estimación, no medición).
- Dashboard desplegado y funcionando en producción (Vercel), escalado a 10,000 vehículos: rutas partidas por sucursal (~10 MB c/u) bajo demanda y clustering de marcadores.
- Fix verificado: 0 vehículos dibujados sobre el mar tras regenerar rutas reales por calles y descartar las que cruzaban agua.
- 33 tests del generador pasando (pytest).
Galería
Herramientas
PythonConfluent Cloud (Kafka)Schema RegistryDatabricks (Delta)VercelJavaScriptGoogle Maps PlatformOSRMpytest