lección 1

Bienvenido a FlashRoute

Conoce la empresa de última milla, el equipo, tu dominio de operaciones y los datos GPS de 1000 repartidores que llegan cada 5 segundos.

30 min

### El salto a la logística — ownership completo

NeoBank te hizo sólido. Streaming, incidentes, ADRs, post-mortems. Sabías resolver problemas en producción con calma, diseñar arquitectura y defender decisiones con datos. Habías escrito tu primer ADR, gestionado un incidente P1 a las 3AM y construido una feature store para el modelo de fraude. Alberto confiaba en ti lo suficiente como para dejarte solo con un pipeline de streaming que procesaba 4.5 millones de transacciones diarias.

Pero Alberto tomaba las decisiones finales. Cada Architecture Review pasaba por él. Cada ADR llevaba su firma. Tú proponías, él aprobaba. Era justo -- el banco está regulado, el riesgo es real. Pero sentías que estabas listo para más. Para tomar decisiones sin pedir permiso. Para ser el responsable, no el colaborador.

Marcos Ruiz, CTO de FlashRoute, te escribió un DM en Twitter. "He visto tu post sobre idempotencia en pipelines de streaming. Buen contenido. Tengo un puesto que creo que te encaja: data engineer con ownership completo del dominio de operaciones. Tú decides la arquitectura. Tú decides las prioridades. Tú respondes cuando algo falla. Te interesa?"

Lo que Marcos ofrecía era algo que NeoBank no podía darte: ser el DUEÑO de un dominio. No un contributor más en un equipo de 6. El experto al que el CTO pregunta cuando algo no funciona. El que diseña, implementa y opera. La oferta económica era similar -- un 8% más que NeoBank -- pero el verdadero valor era la autonomía.

Aceptaste sin pensarlo dos veces. Alberto lo entendió: "Es el paso correcto. Cuando tengas el dominio bajo control, vuelve a contarme qué tal." Dos semanas de aviso previo, un viernes de despedida con el equipo de NeoBank, y el lunes siguiente tu primer día en FlashRoute.

### FlashRoute — Última milla delivery

FlashRoute nació en 2021 fundada por dos ex-directivos de Glovo y un ingeniero de Amazon Logistics. La idea: resolver la última milla para e-commerce mediano -- tiendas que mueven entre 500 y 5000 pedidos diarios y no pueden permitirse montar su propia flota. En 3 años han crecido de 50 repartidores en Madrid a 1000 en 5 ciudades (Madrid, Barcelona, Valencia, Sevilla y Bilbao). Facturan 45M de euros anuales y acaban de cerrar una Serie B que les permite triplicar el equipo tech.

El modelo de negocio es simple: un e-commerce contrata FlashRoute como su servicio de delivery. FlashRoute recoge los paquetes en el almacén del e-commerce, los lleva a uno de sus 12 hubs urbanos y desde ahí un repartidor los entrega al cliente final. El SLA prometido es estricto: 95% de envíos entregados dentro de la ventana horaria que el cliente final eligió al comprar. Si FlashRoute no cumple, paga penalizaciones al e-commerce. Si cumple consistentemente por encima del 97%, cobra un bonus.

  • Repartidores activos: 1.000 fijos (+ 2.000 temporales en picos como Black Friday)
  • Envíos/día: ~100.000 (promedio), hasta 300.000 en Black Friday
  • Ciudades: 5 (Madrid, Barcelona, Valencia, Sevilla, Bilbao)
  • Hubs urbanos: 12 (2-3 por ciudad grande)
  • Clientes B2B: 340 e-commerce (moda, electrónica, alimentación, farmacia)
  • SLA prometido: 95% de envíos entregados en ventana horaria
  • Datos GPS: evento cada 5 segundos por repartidor = 200 eventos/seg normales
  • Empleados: ~180 (equipo tech: 25 personas)
  • Facturacion anual: 45M euros

### El stack tecnológico

FlashRoute empezó con un stack simple (PostgreSQL + cron jobs) pero a medida que creció necesitó mover datos en tiempo real. El equipo de datos fue creciendo orgánicamente y hoy el stack es una mezcla de servicios AWS gestionados y herramientas open-source:

  • Eventos GPS: Apache Kafka (3 brokers en AWS MSK, topic driver.location con 12 particiones)
  • Eventos delivery: Kafka (topic delivery.status, 6 particiones)
  • Procesamiento real-time: Spark Structured Streaming en AWS EMR (cluster de 8 nodos)
  • Data Lake: S3 con zonas raw/silver/gold (~8TB total, formato Parquet)
  • Base operacional: DynamoDB (ETAs, estado actual de cada repartidor, latencia <10ms)
  • Orquestacion batch: AWS Step Functions (reportes diarios, reconciliación)
  • Warehouse: Amazon Redshift (2 nodos dc2.large — dashboards y reporting)
  • Dashboard operaciones: Grafana + queries directas a Redshift
  • API tracking (Carlos): REST + WebSocket para frontend de repartidores
  • Monitoring: CloudWatch + PagerDuty (alertas de lag, errores, latencia)

### Tu equipo y tu dominio

FlashRoute tiene 5 data engineers organizados por dominios. Cada uno es responsable end-to-end de su área: desde la ingesta hasta el dashboard. No hay un "equipo de infra" que te monte las cosas -- tú levantas, tú operas, tú arreglas cuando se rompe. Es un modelo de ownership puro inspirado en cómo Amazon organiza sus equipos: "you build it, you run it".

Modelo de ownership por dominio — tú eres operaciones en tiempo real

### Los personajes

Marcos Ruiz (37) - CTO y cofundador. Ex-ingeniero de Amazon Logistics donde trabajó 6 años en el sistema de routing de última milla. Directo, técnico, habla poco y escucha mucho. No hace micromanagement: si te asigna algo, espera que lo resuelvas. En la entrevista te dijo: "No me importa cómo lo hagas. Me importa que funcione, que escale y que puedas explicármelo en 5 minutos." Si algo se rompe a las 3AM, no te va a decir cómo arreglarlo -- espera que tú lo sepas. Su canal de comunicación preferido: mensajes directos cortos en Slack. Nunca manda emails.

Ana Vega (34) - Directora de Operaciones. Gestiona 1000 repartidores con un equipo de 15 coordinadores de zona. Su herramienta principal es el dashboard de operaciones -- una pantalla de 55 pulgadas en la pared de la oficina de operaciones que muestra en tiempo real dónde está cada repartidor, qué envíos van retrasados y qué zonas están saturadas. Si el dashboard tiene datos obsoletos, Ana toma decisiones equivocadas. Y si Ana toma decisiones equivocadas, los clientes reciben sus paquetes tarde. No tiene paciencia para excusas técnicas. Su frase favorita: "No me cuentes el problema, dime cuándo estará arreglado."

Carlos López (28) - Backend Lead. Dueño del servicio de tracking que recibe los eventos GPS de los 1000 repartidores y los publica en Kafka. Cooperativo y pragmático -- si necesitas cambiar el schema del evento GPS o añadir un campo, Carlos es tu interlocutor. Lleva 2 años en FlashRoute y conoce cada corner case del sistema de tracking. Su API REST sirve ~50K requests/minuto. Frase típica: "El producer está fino, el problema está downstream."

### Los datos GPS -- tu materia prima

Cada repartidor lleva un smartphone con la app de FlashRoute que envía su posición GPS cada 5 segundos mientras está activo (desde que recoge el primer paquete hasta que entrega el último del día). Con 1000 repartidores activos simultáneamente en horario punta (10:00-20:00), eso son 200 eventos por segundo en el topic driver.location de Kafka. En Black Friday, con 3000 repartidores temporales, llegas a 600+ eventos/segundo.

1// Evento GPS (topic: driver.location, ~200 eventos/seg)
2{
3 "driver_id": "DRV-0847",
4 "lat": 40.4168,
5 "lon": -3.7038,
6 "timestamp": "2024-11-22T14:23:05.123Z",
7 "speed_kmh": 28.5,
8 "heading": 135,
9 "battery_pct": 67,
10 "accuracy_m": 4.2,
11 "delivery_id": "DEL-20241122-089421"
12}
13
14// Evento delivery (topic: delivery.status, ~20 eventos/seg)
15{
16 "delivery_id": "DEL-20241122-089421",
17 "status": "in_transit",
18 "timestamp": "2024-11-22T14:20:00.000Z",
19 "driver_id": "DRV-0847",
20 "origin": { "lat": 40.4530, "lon": -3.6883 },
21 "destination": { "lat": 40.4015, "lon": -3.7105 },
22 "promised_eta": "2024-11-22T15:00:00.000Z",
23 "zone": "madrid-centro",
24 "client_b2b": "CLI-MODA-042",
25 "hub_origin": "HUB-MAD-02"
26}

Schemas de los dos topics de Kafka que alimentan tu dominio

### Tu dominio: operaciones en tiempo real

Tu responsabilidad es todo lo que permite a Ana y su equipo de 15 coordinadores gestionar operaciones en vivo. Eres el único punto de contacto para cualquier problema de datos en tiempo real. Si el dashboard se cae, te llaman a ti. Si los ETAs no se actualizan, te llaman a ti. Si el volumen se triplica y el pipeline no escala, tú lo arreglas.

  1. 01.Pipeline de ETAs: calcular en tiempo real cuánto falta para cada entrega usando GPS + Haversine
  2. 02.Dashboard de SLAs: qué porcentaje de envíos llegan dentro de la ventana prometida al cliente
  3. 03.Alertas de retraso: detectar envíos que no van a llegar a tiempo ANTES de que sea tarde
  4. 04.Métricas de repartidor: velocidad media, entregas/hora, zonas cubiertas, batería
  5. 05.Histórico para reporting: tablas gold en Redshift para informes semanales a clientes B2B
  6. 06.Circuit breaker: proteger el pipeline de GPSs defectuosos que inundan el stream
Tu dominio end-to-end: desde el GPS del smartphone hasta el dashboard de Ana

Ownership de un dominio no significa que haces TODO solo. Significa que eres el punto de contacto, el que toma decisiones y el responsable si algo falla. Puedes (y debes) pedir ayuda a Carlos cuando necesites cambios en el producer GPS, o a Diego cuando tu pipeline afecte al servicio de rutas. Pero la decisión final sobre tu dominio es TUYA. Es la primera vez en tu carrera que nadie te va a decir "hazlo así" -- tú decides el cómo.

La latencia máxima aceptable del dashboard de operaciones es 30 segundos. Si Ana mira la pantalla y ve datos de hace 2 minutos, los coordinadores de zona están tomando decisiones con información obsoleta. En logística de última milla, 2 minutos pueden significar enviar un repartidor a una zona que ya está cubierta, o no reasignar una entrega que va a llegar tarde.

### Tu primera semana -- la hoja de ruta

Marcos te dio un brief el viernes pasado en tu último día de onboarding: "Esta semana quiero que tengas el pipeline de ETAs funcionando y el dashboard de SLAs con datos reales. El viernes tienes una reunión con Ana donde le enseñas lo que has construido. Si tiene preguntas que no puedas responder con datos, la hemos liado." Claro y directo -- así es Marcos.

  • Día 1: Pipeline de ETAs en real-time. Kafka -> cálculo distancia Haversine -> estimación de llegada -> DynamoDB
  • Día 2: Dashboard de SLAs. Diseñar tabla de hechos de cumplimiento, agregar por zona/repartidor/hora
  • Día 3 (mañana): Datos GPS desordenados. Deduplicación en streaming, watermarks en Spark Structured Streaming
  • Día 3 (tarde): Late data y event time vs processing time. Los GPS llegan desordenados y hay que manejarlos
  • Día 4: Pico de Black Friday. El volumen se triplica, el pipeline no escala -- diagnosticar y optimizar en caliente
  • Día 5: Circuit breaker para GPSs defectuosos + documentación + retrospectiva con Marcos

Bienvenido a FlashRoute. Aquí no hay Architecture Reviews ni firmas de Alberto. Tú decides. Y si decides mal, Ana te lo hará saber en menos de 30 segundos.

Esta semana trabajarás con los datos operativos de la última milla: hubs, conductores, envíos, rutas activas, eventos GPS y el histórico de SLAs. Descárgalos desde el apartado de datasets del caso. Tienes dos versiones de los eventos GPS (una limpia y otra "sucia") para practicar la deduplicación en streaming del Día 3.

volver a la visión del caso y descargar los datasets

Regístrate para guardar tu progreso.

## comentarios

Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.

Inicia sesión para comentar y responder.

cargando comentarios...