⚡ Architecture Decision Record

Migración del pipeline de datos a arquitectura de streaming en tiempo real

Justificación técnica y de negocio para la transición de ETL batch nocturno (Apache Airflow) a procesamiento en streaming continuo (Apache Kafka + Apache Flink) en todos los hospitales cliente.

📅 12 jun 2026
👥 Audiencia: CTO, CEO, inversores (apéndice)
⏱️ Deadline decisión: 30 jun 2026
🔒 RGPD: Legal aprobado
1

Resumen ejecutivo

Decisión: Migrar a Apache Kafka + Apache Flink
Adoptamos una arquitectura de streaming en tiempo real para reducir la latencia de datos de 18 horas a menos de 30 segundos, desbloqueando tres contratos enterprise en negociación (ARR estimado: 420.000 €).

NovaMed Analytics ha identificado que la latencia actual del pipeline de datos (~18h) es el principal bloqueador comercial en el segmento enterprise. Los hospitales cliente no pueden operar dashboards clínicos con datos del día anterior, ni activar alertas automatizadas sobre eventos en tiempo real.

Después de un spike técnico de 2 semanas y análisis de 4 alternativas, el equipo recomienda Apache Kafka como bus de eventos + Apache Flink para procesamiento stateful en streaming, desplegados en infraestructura propia sobre AWS EKS. Esta combinación ofrece el equilibrio óptimo entre capacidad técnica, coste, cumplimiento RGPD y viabilidad de migración en el plazo disponible.

18h
Latencia actual
30s
Latencia objetivo
3
Contratos bloqueados
47
Pipelines a migrar
2

Contexto y problema

Arquitectura actual

El sistema actual procesa datos de 23 hospitales mediante 47 pipelines Apache Airflow que ejecutan transformaciones ETL en ventanas batch de 6 horas, con entrega final al data warehouse (Snowflake) entre las 02:00 y las 06:00 AM. Los dashboards de los hospitales se actualizan una vez al día, a primera hora de la mañana.

Impacto en negocio

Tres propuestas enterprise están en etapa final de negociación con hospitales de más de 500 camas. Los tres han condicionado la firma a la disponibilidad de datos en tiempo real para sus casos de uso específicos:

Bloqueo comercial activo
Hospital Universitario Vall d'Hebron (BCN), Clínica Universidad de Navarra (PMP) y Hospital Quirónsalud Málaga han explicitado en sus RFPs: «necesitamos alertas automáticas sobre eventos clínicos en ventanas de menos de 5 minutos». ARR combinado estimado: 420.000 € anuales.

Origen de la limitación técnica

Airflow fue elegido en 2023 como solución pragmática para el MVP. En ese momento, NovaMed operaba 3 hospitales piloto con baja frecuencia de datos y dashboards de reporting mensual. La arquitectura no fue diseñada para streaming y su extensión natural no es técnicamente viable sin una reescritura completa de los operadores y el modelo de datos subyacente.

3

Análisis de alternativas evaluadas

Se evaluaron cuatro enfoques durante el sprint de investigación (semanas 22-23, 2026). El equipo de data engineering (3 ingenieros) dedicó 2 semanas a spikes técnicos y análisis de coste.

Alternativa Latencia Coste mensual RGPD Esfuerzo migración Puntuación
✅ Kafka + Flink (self-hosted)
Opción elegida
< 30s ~2.400€ Control total Alta (12 sem.) 87/100
Confluent Cloud
Kafka gestionado
< 30s ~7.200€ Datos en Confluent Media (6 sem.) 61/100
Databricks DLT
Delta Live Tables
~2 min ~8.100€ Certificado RGPD Baja (3 sem.) 58/100
Postgres LISTEN/NOTIFY
Solución casera
< 5s ~400€ Control total Baja (4 sem.) 29/100

Por qué se descartaron

Confluent Cloud: Los datos de pacientes (categoría especial RGPD, Art. 9) no pueden residir en infraestructura de terceros sin DPA específico y evaluación de impacto (DPIA) completa. El equipo legal estimó 4+ meses para la aprobación regulatoria, incompatible con el timeline.

Databricks DLT: Coste 3x superior al autoalojado. La latencia mínima de ~2 minutos no satisface el SLA requerido por los hospitales (<5 min para alertas clínicas). Vendor lock-in con modelo de precios por DBU difícil de predecir.

Postgres LISTEN/NOTIFY: Validado en laboratorio hasta ~50.000 eventos/hora. NovaMed proyecta superar 2M eventos/hora con 50 hospitales en el plan de crecimiento 2027. La solución no escala horizontalmente y carece de replay, consumer groups y garantías de entrega exactamente-una-vez (EOS).

4

Decisión: Arquitectura Kafka + Flink

Principio de diseño
Toda mutación de datos clínicos genera un evento inmutable en Kafka. Flink consume y transforma esos eventos en tiempo real. El data warehouse (Snowflake) recibe upserts incrementales cada 30 segundos. Los dashboards leen directamente de la capa de streaming para alertas críticas.

Componentes del stack

Apache Kafka 3.7 (self-managed sobre AWS MSK Serverless para arranque rápido, migración a EC2 dedicado en Q4): bus de eventos con retención de 7 días, 3 brokers, replicación factor 3. Cifrado TLS en tránsito + KMS en reposo.

Apache Flink 1.19 (operador Kubernetes en EKS): procesamiento stateful con exactamente-una-vez (EOS) mediante checkpoints en S3 cada 60 segundos. Jobs separados para alertas clínicas (baja latencia) y aggregations analíticas (alta throughput).

Schema Registry (Karapace, open source): control de contratos de datos, evolución de esquemas sin downtime, auditoría completa de cambios.

RGPD compliance: datos de pacientes tokenizados en origen (hospital) mediante vault de tokens propio, claves por hospital, audit log completo en OpenSearch, DPIA ya archivada con la AEPD.

Exactly-once semantics y RGPD

El spike técnico identificó un problema con EOS cuando los datos incluyen campos de identidad de paciente (NHC, DNI). La solución adoptada: tokenización en el conector de ingesta antes de publicar en Kafka. El NHC real nunca viaja en el bus de eventos; solo el token pseudoanonimizado. El vault de tokens está fuera del cluster Kafka, accesible únicamente por el servicio de tokenización. El equipo legal revisó y aprobó este diseño el 5 de junio de 2026.

5

Plan de migración de los 47 pipelines

Clasificación de pipelines

🔴 Críticos (3)
Facturación
Integración con SAP. Migración en último lugar, con shadow mode 30 días.
🔴 Críticos (3)
Alertas clínicas
SLA 5 min. Primer pipeline migrado en producción (semana 4).
🔴 Críticos (3)
Reporting regulatorio
CCAA y SNS. Migración con validación por compliance officer.
⚪ Estándar (44)
Dashboards KPI
Métricas operativas de planta. Migración por lotes de 8.
⚪ Estándar (44)
Analytics histórico
Tendencias mensuales. Compatible con batch; migrar en última ola.
⚪ Estándar (44)
Integraciones HL7/FHIR
23 conectores de sistemas HIS. Requieren adaptadores Kafka Connect.

Timeline de ejecución

Semanas 22–23 (completado)
26 may – 6 jun 2026
Spike técnico: validación Kafka EOS con datos RGPD, tokenización, prueba de carga a 2M eventos/h en staging.
Semanas 24–25 — Infraestructura base
9–20 jun 2026
Provisionar MSK Serverless + EKS, desplegar Schema Registry, configurar observabilidad (Prometheus + Grafana), vault de tokens en producción.
3
Semanas 26–29 — Migración ola 1
23 jun – 18 jul 2026
Migrar pipeline de alertas clínicas (shadow mode 2 semanas), luego dashboards KPI de los hospitales actuales. Airflow sigue activo en paralelo.
4
Semanas 30–35 — Migración ola 2 y contratos enterprise
21 jul – 29 ago 2026
Onboarding de los 3 nuevos hospitales enterprise directamente sobre el stack de streaming. Migración del resto de pipelines estándar.
5
Semanas 36–39 — Pipelines críticos y deprecación Airflow
1–26 sep 2026
Migración facturación y reporting regulatorio con shadow mode 30 días. Apagado definitivo de los DAGs de Airflow. Cierre del proyecto.
6

Gestión de riesgos

H
Pérdida de datos en migración de pipelines críticos (facturación)
Mitigación: Shadow mode 30 días — Airflow y Kafka corren en paralelo, comparación continua de outputs. Rollback automatizado si divergencia >0,001%. Firma de Go/No-Go por CTO y compliance officer.
H
Brecha RGPD: datos de pacientes expuestos en tránsito
Mitigación: Tokenización end-to-end validada por equipo legal (5 jun). TLS 1.3 obligatorio en todos los listeners. Audit log inmutable en OpenSearch. Revisión de seguridad trimestral con proveedor externo.
M
Sobrecarga del equipo: 47 pipelines en 15 semanas
Mitigación: Plantilla de migración estandarizada (reduce tiempo por pipeline de ~3 días a ~4 horas para pipelines estándar). Contratación de 1 data engineer senior por 3 meses (ya en proceso).
M
Coste MSK Serverless escala con tráfico en picos hospitalarios
Mitigación: Alarm en AWS Budgets a 4.000€/mes. Migración planificada a EC2 dedicado (coste fijo ~2.400€) en Q4 2026 si el tráfico lo justifica.
L
Curva de aprendizaje en Flink (equipo sin experiencia previa)
Mitigación: Training intensivo de 40h (Ververica Academy) semana 24. El spike técnico ya cubrió los patrones de uso más complejos (windowing, EOS, stateful joins).
7

Criterios de éxito (OKRs del proyecto)

Métrica Baseline actual Target semana 30 Target final (sem. 39)
Latencia P95 (alertas clínicas) 18 horas < 5 minutos < 30 segundos
Disponibilidad del pipeline 99,1% (Airflow) 99,5% 99,9%
Contratos enterprise firmados 0 de 3 3 de 3 3 de 3 + onboarding
Pipelines migrados 0 de 47 20 de 47 47 de 47
Pérdida de datos (eventos perdidos) N/A 0 eventos perdidos 0 eventos perdidos
Coste infraestructura mensual ~800€ < 4.000€ < 3.000€
8

Plan de rollback

Principio de rollback
Airflow se mantiene operativo en modo standby durante toda la migración (semanas 24–38). El retorno completo a la arquitectura batch puede ejecutarse en menos de 15 minutos para cualquier pipeline.

Cada pipeline tiene un feature flag en la capa de configuración central. El interruptor streaming_enabled=false redirige el tráfico de vuelta al DAG de Airflow correspondiente sin downtime. Los dashboards de los hospitales no perciben el cambio; simplemente vuelven a la cadencia de actualización anterior.

Condiciones de rollback automático: El sistema monitoriza continuamente (1) divergencia entre outputs Kafka y Airflow superior al 0,001%, (2) latencia P95 de Flink superior a 30 segundos durante más de 5 minutos consecutivos, (3) tasa de error en jobs Flink superior al 0,1% en ventana de 10 minutos. Cualquier condición activa rollback automático y página al on-call.

Los tres pipelines críticos (facturación, alertas, reporting) requieren autorización manual del CTO para el cutover final y para desactivar el fallback a Airflow. Esta restricción se elimina 30 días después del cutover si las métricas son correctas.

9

Reader Testing — Validación del documento

El documento fue testado con un subagente Claude sin contexto previo de la conversación. Se verificó que cualquier lector puede responder las preguntas clave sin necesidad de información adicional.

🤖
Subagente Reader — Test de comprensión (sin contexto)
5 preguntas simulando lectores reales · Resultado: 5/5 correctas
¿Por qué no se usa Confluent Cloud si ya es Kafka gestionado y reduce el esfuerzo de operación?
El documento explica claramente que los datos de pacientes (Art. 9 RGPD) no pueden residir en infraestructura de terceros sin DPIA completa, y que el proceso legal tomaría 4+ meses, incompatible con el timeline de la ronda de inversión.
¿Qué pasa si la migración sale mal? ¿Hay forma de volver atrás sin perder datos?
La sección de rollback detalla que Airflow permanece activo en standby, el rollback tarda menos de 15 minutos mediante feature flags, y hay condiciones de rollback automático monitorizadas continuamente.
¿Cómo se garantiza que los datos de pacientes no se filtran durante el streaming?
El documento explica la tokenización en origen antes de publicar en Kafka, TLS 1.3, audit log en OpenSearch, y que el equipo legal ya aprobó el diseño el 5 de junio de 2026.
¿Cuánto dinero está en juego? ¿Vale la pena el riesgo técnico?
El resumen ejecutivo indica ARR estimado de 420.000 € en los tres contratos enterprise bloqueados, con una inversión en infraestructura inferior a 3.000 €/mes en régimen permanente.
¿El equipo tiene experiencia con Kafka y Flink? ¿Pueden ejecutar esto?
Se menciona el spike técnico de 2 semanas completado, el training planificado (Ververica Academy, 40h, semana 24), y la contratación de un data engineer senior en proceso como mitigación del riesgo de capacidad.

Aprobaciones

MC
Marcos Castellano
CTO · Decisor técnico
● Aprobado — 12 jun
LV
Laia Ventura
CEO · Impacto de negocio
● Aprobado — 12 jun
RP
Rosa Palau
Legal & Compliance (RGPD)
● Aprobado — 5 jun