Guía de Arquitectura de Datos · Parte II · Capítulo 18
Diseñar la plataforma de datos de una fintech: anatomía de un stack que no puede fallar
Cuando cada milisegundo de latencia es dinero, cuando un regulador puede pedirte la trazabilidad de una transacción de hace tres años y cuando un solo registro corrupto puede convertirse en una multa de siete cifras, la arquitectura de datos deja de ser un asunto técnico para convertirse en el sistema nervioso del negocio. Este es el recorrido completo de cómo se diseña —y qué se sacrifica en el camino.
Resumen ejecutivo
Una fintech es, en esencia, una empresa de datos que casualmente mueve dinero. Su plataforma de datos tiene que conciliar exigencias que en otros sectores van por separado: latencia de milisegundos para autorizar pagos, consistencia transaccional estricta para que ningún saldo cuadre mal, analítica masiva para el scoring de riesgo y el antifraude, y trazabilidad regulatoria perpetua para PSD2, AML, GDPR y los requerimientos del supervisor.
Este capítulo recorre, de principio a fin, el diseño de esa plataforma a través del caso de una fintech europea ficticia pero representativa. No es un catálogo de productos: es la cadena de decisiones, trade-offs y errores evitados que conecta todo lo visto en la Parte II —motores, almacenamiento, esquemas, OLTP/OLAP, distribución, caché, nube, observabilidad y resiliencia— en una sola arquitectura coherente.
El contexto: por qué una fintech es el caso límite de la arquitectura de datos
Conviene empezar por entender qué tiene de especial este sector, porque casi todas las decisiones que vendrán después derivan de tres restricciones que pocas industrias soportan a la vez. La primera es que el dato es el producto: una fintech no fabrica nada físico, no tiene tiendas; su valor reside íntegramente en mover, registrar y razonar sobre información financiera. La segunda es que opera bajo un régimen regulatorio que no admite "más o menos": un banco tradicional tiene décadas de inercia y un supervisor acostumbrado a sus sistemas; una fintech tiene que demostrar cumplimiento desde el día uno, con auditorías que pueden exigir la reconstrucción exacta del estado de una cuenta en cualquier momento del pasado. Y la tercera es que el coste del error se mide en dinero real y en confianza: si un e-commerce pierde una sesión de carrito, molesta; si una fintech duplica un cargo o pierde una transferencia, hay un cliente furioso, un cargo de vuelta y, potencialmente, un titular en prensa.
Tomemos el caso que articulará todo el capítulo. Imaginemos "Nexora Pay", una fintech de pagos y cuentas con sede en Madrid que opera en seis países europeos. Procesa alrededor de 1.200 transacciones por segundo en hora punta, gestiona 3,5 millones de cuentas activas y ofrece tres líneas de producto: una cuenta con tarjeta, un motor de pagos para comercios y un módulo de micropréstamos con scoring propio. El equipo de datos lo forman catorce personas y el CIO ha recibido un mandato del consejo que resume bien la tensión del sector: "Quiero poder lanzar productos rápido, pero no quiero que el regulador nos cierre." Esa frase, aparentemente trivial, es el verdadero documento de requisitos de la plataforma.
La trampa habitual en estos proyectos es pensar que se trata de elegir tecnologías. No lo es. Se trata de elegir qué se sacrifica. Cada decisión de arquitectura cierra puertas tanto como abre otras, y la diferencia entre una plataforma que escala con elegancia y una que se ahoga a los dieciocho meses está casi siempre en si esos sacrificios fueron conscientes y documentados o accidentales y heredados. Empecemos por la decisión más estructural de todas: separar lo que debe ir rápido de lo que debe ir profundo.
La frontera fundacional: separar el plano transaccional del plano analítico
La primera línea que se dibuja en la pizarra de Nexora Pay no es un producto concreto, sino una frontera conceptual, OLTP vs OLAP. A un lado queda el plano transaccional (OLTP): el sistema que autoriza un pago, registra un movimiento, actualiza un saldo. Al otro queda el plano analítico (OLAP): el que calcula el riesgo de un cliente, alimenta los cuadros de mando del CFO o entrena el modelo de antifraude. Mezclar ambos en la misma base de datos es el pecado original de muchas plataformas jóvenes, y casi siempre nace de una buena intención: "si todo está en la misma base de datos, las consultas analíticas verán datos siempre frescos". Es verdad. También es la receta para que un informe pesado del departamento de riesgos bloquee la tabla de movimientos justo cuando un cliente intenta pagar el supermercado.
En el plano OLTP, Nexora Pay necesita propiedades innegociables. Necesita transacciones ACID estrictas: cuando se mueve dinero de una cuenta a otra, o se aplican las dos operaciones o no se aplica ninguna, sin estados intermedios visibles. Necesita baja latencia y escrituras predecibles, porque el reloj de la autorización de una tarjeta corre y las redes de pago imponen ventanas de respuesta de pocos cientos de milisegundos. Y necesita integridad referencial de verdad, no aspiracional. Para esto, un motor relacional maduro —en el caso de Nexora, PostgreSQL gestionado en la nube— sigue siendo, en 2025, una elección por defecto sensata. No porque sea moderno, sino porque sus garantías están probadas durante décadas y porque su modelo de consistencia es justo el que el dinero exige.
Aquí aparece el primer trade-off serio, el que conecta directamente con lo que vimos sobre bases de datos distribuidas y el teorema CAP. El equipo debate si adoptar desde el inicio una base de datos distribuida "NewSQL" —del estilo de CockroachDB o Spanner— que prometa escalado horizontal y consistencia. La tentación es fuerte: suena a futuro a prueba de balas. Pero la decisión que se toma —y que merece subrayarse— es empezar con PostgreSQL monolítico bien dimensionado y posponer la distribución hasta que el volumen la justifique. El razonamiento es de consultoría pura: una base de datos distribuida añade una complejidad operativa enorme (coordinación de relojes, latencias de consenso, depuración de transacciones que cruzan nodos) que solo se rentabiliza cuando se superan límites que Nexora no alcanzará hasta dentro de dos o tres años. Adoptar la solución del problema que aún no se tiene es una forma elegante de crear el problema que sí se tendrá: el de operar algo que nadie del equipo domina.
En el plano OLAP las prioridades se invierten. Ya no importa la latencia de escritura sino el rendimiento de lecturas masivas sobre históricos enormes. Aquí Nexora opta por un enfoque lakehouse: un almacenamiento de objetos barato como base —que veremos en detalle— sobre el que se construyen tablas con formato abierto y un motor de consulta analítico. La pregunta no es "¿qué motor analítico es mejor?", sino "¿qué patrón de consumo tendrá esta plataforma?". Como el caso combina dashboards interactivos, scoring batch nocturno y exploración ad-hoc de los analistas de fraude, la respuesta no es un único producto sino una arquitectura por capas de consumo que cada perfil ataca con la herramienta adecuada.
Modelar para el dinero: esquemas, el libro mayor inmutable y la tentación de la desnormalización
El corazón de cualquier fintech es su libro mayor (el ledger), y modelarlo bien es probablemente la decisión técnica más consecuente del proyecto. La intuición ingenua dice: tengamos una tabla de cuentas con una columna "saldo" y actualicémosla en cada transacción. Es simple, es rápido de leer, y es profundamente peligrosa. Una columna mutable de saldo no tiene memoria: si hay un error de cálculo, una transacción aplicada dos veces o una corrupción, no hay forma de saber cuál era el estado correcto ni cómo se llegó al incorrecto. Y eso, para un auditor, es inaceptable.
La decisión que adopta Nexora Pay —y que es práctica estándar en banca seria— es un modelo de contabilidad de doble entrada con eventos inmutables, una aplicación del patrón event sourcing. En lugar de almacenar el saldo, se almacena la secuencia completa de movimientos que lo producen, en una tabla append-only donde nada se actualiza ni se borra jamás. Cada movimiento registra un débito y un crédito que siempre cuadran a cero. El saldo de una cuenta deja de ser un dato almacenado para convertirse en una proyección: la suma de sus movimientos. Esto tiene una consecuencia maravillosa para el cumplimiento: el estado de cualquier cuenta en cualquier instante del pasado es reconstruible exactamente, replicando los eventos hasta esa fecha. El auditor pide el saldo del 14 de marzo a las 17:32 y la respuesta es determinista, no una estimación.
El trade-off aquí es de rendimiento de lectura. Si el saldo es una suma de eventos y una cuenta lleva cinco años operando, calcularlo sumando millones de movimientos cada vez sería absurdo. La solución de consultoría es pragmática: se mantienen snapshots periódicos —fotos del saldo a fin de cada día— de modo que el cálculo en caliente solo necesita partir del último snapshot y sumar los eventos posteriores. Se gana velocidad sin perder la propiedad sagrada de la reconstruibilidad. Es un ejemplo perfecto del principio que atraviesa todo este libro: la arquitectura buena no elimina los trade-offs, los coloca donde duelen menos.
Mención aparte merece la tentación de la desnormalización prematura. Es habitual que, presionado por el rendimiento de algún dashboard, el equipo se plantee duplicar datos del cliente en la tabla de movimientos para evitar joins. En el plano transaccional de una fintech, esto se rechaza casi por sistema: la duplicación de datos en el OLTP introduce el riesgo de que dos copias del mismo dato divergan, y un dato financiero divergente es una bomba de relojería. La desnormalización tiene su lugar —y un lugar importante— pero está al otro lado de la frontera, en el plano analítico, donde los datos ya son inmutables y la redundancia se gestiona como optimización de lectura, no como fuente de verdad.
El puente en tiempo casi real: streaming, CDC y la obsesión por la idempotencia
Tenemos un plano transaccional sólido y un plano analítico hambriento de datos. Falta el puente, y en una fintech ese puente no puede ser un proceso batch nocturno: el antifraude necesita ver una transacción sospechosa en segundos, no a la mañana siguiente. Aquí entra la columna vertebral de eventos. Nexora Pay adopta Apache Kafka como bus central de eventos, no como capricho tecnológico sino porque resuelve un problema concreto: desacoplar quién produce un dato de quién lo consume, permitiendo que un mismo evento de pago alimente simultáneamente el motor antifraude, el sistema de notificaciones, el data lake analítico y el módulo de scoring, sin que ninguno conozca a los demás.
La pieza que conecta el ledger PostgreSQL con ese bus de eventos es el Change Data Capture (CDC). En lugar de que las aplicaciones escriban tanto en la base de datos como en Kafka —lo que abre la puerta a que una escritura tenga éxito y la otra falle, dejando los sistemas desincronizados—, Nexora lee directamente el log de transacciones de PostgreSQL mediante Debezium y publica cada cambio confirmado como un evento. El matiz es importante y a menudo se pasa por alto: leer del log (log-based CDC) garantiza que solo se propagan cambios realmente confirmados en la base de datos, y en el orden exacto en que ocurrieron. Es la diferencia entre contar la historia verídica de lo que pasó y contar una versión aproximada reconstruida a posteriori.
Y aquí llega una de las palabras más importantes de toda la plataforma: idempotencia. En un sistema distribuido, los mensajes se entregan "al menos una vez" —es prácticamente imposible y carísimo garantizar "exactamente una vez" de extremo a extremo—. Esto significa que, ante un reintento o un fallo de red, un mismo evento de pago puede llegar dos veces al consumidor. Si ese consumidor es el que aplica un cargo, la duplicación es una catástrofe contable. La defensa es diseñar todos los consumidores para que sean idempotentes: cada evento lleva un identificador único y el consumidor lleva la cuenta de qué identificadores ya ha procesado, de modo que procesar el mismo evento dos veces tiene exactamente el mismo efecto que procesarlo una. En una fintech, la idempotencia no es una buena práctica opcional; es la línea que separa una plataforma fiable de una máquina de generar incidencias.
El debate ETL frente a ELT también se resuelve aquí con un matiz sectorial. La tendencia general moderna es ELT: cargar primero los datos crudos en el almacén y transformarlos después, aprovechando su potencia de cómputo. Nexora adopta ELT para su analítica general, pero introduce una excepción deliberada: cierta transformación y enmascaramiento se hacen en el momento de la ingesta, antes de que el dato aterrice en el lake. ¿Por qué romper el patrón? Porque hay información —números de tarjeta completos, ciertos identificadores personales— que, por cumplimiento, no debería existir en crudo en el data lake bajo ningún concepto. Tokenizar o enmascarar en la ingesta es un caso donde la gobernanza obliga a transformar en origen aunque la moda diga lo contrario. La regla de consultoría: los patrones se siguen por defecto, no por dogma; el cumplimiento siempre gana al patrón.
Dónde vive el histórico: almacenamiento en capas, tiering y el coste que crece en silencio
El plano analítico de Nexora vive sobre almacenamiento de objetos en la nube —en su caso, Amazon S3, aunque el razonamiento aplicaría igual a Azure Blob o Google Cloud Storage—. La razón es económica antes que técnica: separar el almacenamiento del cómputo permite pagar por guardar terabytes a céntimos por gigabyte y encender potencia de cálculo solo cuando se necesita. Sobre ese almacenamiento se construye el lakehouse con un formato de tabla abierto —Apache Iceberg— que aporta lo que al data lake puro le faltaba: transacciones, versionado de esquema y la capacidad de viajar a estados pasados de los datos. Para una fintech, esa última propiedad no es un lujo: es la diferencia entre poder responder a una auditoría y no poder hacerlo.
Pero aquí acecha uno de los riesgos más silenciosos y costosos del sector: el almacenamiento que crece sin gobierno. La obligación regulatoria de conservar datos —en Europa, ciertos registros financieros deben guardarse cinco o diez años— combinada con la facilidad de "guardarlo todo por si acaso" produce facturas de nube que se duplican cada año sin que nadie sepa muy bien por qué. La respuesta de Nexora son las políticas de ciclo de vida y el tiering automático. Los datos de los últimos noventa días viven en almacenamiento de acceso frecuente ("caliente"). Entre noventa días y un año pasan a un nivel de acceso infrecuente, más barato. A partir del año, y hasta cumplir la obligación legal de retención, descienden a almacenamiento de archivo profundo, donde el coste por gigabyte es ínfimo a cambio de que recuperar el dato tarde horas. Como ese dato antiguo solo se toca en una auditoría ocasional, el trade-off es perfecto.
El matiz de consultoría que pocos aplican: la política de retención debe ser una decisión jurídica, no técnica. Demasiados equipos de datos deciden cuánto guardar las cosas en función de lo que les parece razonable, cuando la respuesta correcta vive en el departamento legal y en la normativa aplicable a cada tipo de dato. Conservar de menos es un incumplimiento; conservar de más, sobre todo datos personales, es una violación de la minimización de datos de GDPR y un riesgo en sí mismo. La plataforma debe permitir que esa política, definida por legal, se aplique automáticamente. La tecnología ejecuta; el negocio y la ley deciden.
Velocidad sin mentir: caché, materialización y el peligro del dato financiero obsoleto
Cuando un usuario abre la app de Nexora y ve su saldo, espera que aparezca al instante. Calcular ese saldo sumando eventos en cada apertura, para millones de usuarios concurrentes, sería inviable. La caché —en este caso Redis— resuelve el problema, pero introduce el dilema más delicado del sector: un dato financiero obsoleto es peor que un dato lento. Si la caché muestra un saldo que ya no es real porque acaba de producirse un movimiento, el cliente toma decisiones sobre información falsa. La estrategia, por tanto, no es cachear el saldo ciegamente, sino invalidar la caché de una cuenta en el mismo instante en que se publica un evento que la afecta, aprovechando precisamente el bus de eventos que ya se construyó. El evento que actualiza el ledger es el mismo que dispara la invalidación de la caché. Una arquitectura coherente reutiliza sus propias tuberías.
En el plano analítico, la "caché" toma otra forma: las vistas materializadas y las tablas agregadas. Un dashboard de dirección que muestra el volumen de transacciones por país y día no debería recalcularse a partir de miles de millones de filas cada vez que alguien lo abre. Se precalcula una vez —típicamente en el batch nocturno o en una ventana de streaming— y se consulta la agregación, no el detalle. El trade-off es de frescura: el directivo ve datos de hasta hace unas horas, no del último segundo. Y aquí entra otro matiz de consultoría: la frescura es un requisito de negocio, no una aspiración técnica. El antifraude necesita segundos; el cuadro de mando del consejo se conforma con la foto de ayer. Diseñar ambos con la misma exigencia de frescura es desperdiciar dinero en un caso y poner en riesgo el negocio en el otro.
Ver para confiar: observabilidad de datos y la diferencia entre "está vivo" y "está bien"
Una plataforma de pagos no puede operarse a ciegas. La observabilidad clásica —¿están vivas las máquinas?, ¿cuánta CPU consumen?, ¿hay latencia en las consultas?— es necesaria pero radicalmente insuficiente para una fintech. La pregunta que de verdad mantiene despierto al CIO no es "¿está vivo el sistema?" sino "¿son correctos los datos que está produciendo?". Un pipeline puede estar funcionando perfectamente —verde en todos los paneles de infraestructura— mientras carga datos silenciosamente corruptos porque una fuente upstream cambió un formato. A eso se le llama observabilidad de datos, y es una disciplina distinta de la observabilidad de sistemas.
Nexora instrumenta tres niveles. El primero es el de métricas e infraestructura: latencias de base de datos, retraso de los consumidores de Kafka (el temido consumer lag, que mide cuánto se está quedando atrás el procesamiento en tiempo real), salud de los nodos. El segundo es el de trazas distribuidas: cuando una transacción atraviesa seis servicios, poder seguir su recorrido completo de extremo a extremo es lo que convierte una depuración de tres días en una de tres minutos. Y el tercero, el más específico del sector, es el de calidad de datos: comprobaciones automáticas que verifican que los débitos y créditos cuadran a cero, que no han aparecido cuentas con saldos imposibles, que el volumen de transacciones de hoy no se desvía sospechosamente del patrón histórico. Esa última comprobación —detectar anomalías en los propios datos— es, no por casualidad, prima hermana del antifraude.
El error frecuente es montar el alerting al revés: alertar de todo lo técnico y de nada de lo semántico. Un equipo recibe cien alertas al día de picos de CPU que no importan a nadie, se acostumbra a ignorarlas —la fatiga de alertas— y el día que de verdad falla algo, la alerta crítica se pierde en el ruido. La disciplina correcta es alertar poco y alertar de lo que duele al negocio: un saldo que no cuadra puede despertar a alguien a las tres de la mañana; un pico de CPU del 70% no.
Cuando algo se rompe: resiliencia, RTO/RPO y la pregunta que el consejo siempre hace tarde
Tarde o temprano, algo fallará. Una región de la nube caerá, un despliegue saldrá mal, un disco morirá. La pregunta de resiliencia no es "¿puede fallar?" sino "¿cuánto nos cuesta cada modo de fallo y cuánto estamos dispuestos a invertir para evitarlo?". Dos métricas estructuran toda la conversación. El RPO (Recovery Point Objective) responde a "¿cuántos datos podemos permitirnos perder?", medido en tiempo. El RTO (Recovery Time Objective) responde a "¿cuánto tiempo podemos estar caídos?". En una fintech, el RPO del ledger es brutalmente exigente: perder una sola transacción confirmada es inaceptable, lo que empuja hacia un RPO cercano a cero y obliga a replicación síncrona del libro mayor, con el coste de latencia que ello implica.
Pero —y este es un matiz de consultoría que ahorra mucho dinero— no todos los datos merecen el mismo RPO. Que el ledger exija RPO cero no significa que el data lake analítico también lo exija. Perder una hora de datos analíticos en una catástrofe es molesto pero recuperable: se vuelven a procesar los eventos. Tratar todo el sistema con la exigencia del componente más crítico es un derroche clásico. La plataforma se diseña por niveles de criticidad: el ledger tiene replicación síncrona multi-zona y planes de recuperación ensayados; el lake analítico se conforma con copias asíncronas y un RTO de horas.
Y aquí el punto que más cuesta interiorizar a las organizaciones: un plan de recuperación que no se ha probado no es un plan, es una esperanza. Nexora ejecuta simulacros de recuperación ante desastres trimestralmente —los famosos DR drills—, restaurando de verdad desde las copias en un entorno aislado y cronometrando el proceso. La primera vez, lo que en el papel eran "dos horas de RTO" resultaron ser nueve, porque un paso del runbook estaba desactualizado y la persona que lo conocía se había ido de la empresa. Esa es exactamente la clase de descubrimiento que se quiere hacer en un simulacro un martes por la tarde, y no en una caída real un viernes a medianoche. El runbook que solo existe en la cabeza de una persona es el mayor riesgo de continuidad que tiene una empresa de datos.
El incidente que lo cambió todo: una crónica de cómo se gana la madurez
A los catorce meses de operación, Nexora Pay vivió la noche que ninguna fintech olvida. Un despliegue rutinario del servicio de pagos introdujo un cambio sutil: un reintento automático que, ante un timeout de red con la red de tarjetas, reenviaba la operación. El cambio pasó todos los tests. Lo que los tests no cubrían era el caso en que la operación original sí había tenido éxito pero la confirmación se había perdido en la red. Durante cuarenta minutos, un pequeño porcentaje de pagos se aplicó dos veces. En términos contables: cargos duplicados a clientes reales.
Lo que salvó a la empresa no fue la suerte, sino dos decisiones de arquitectura tomadas un año antes. La primera: como el ledger era inmutable y basado en eventos, fue posible identificar con precisión quirúrgica qué movimientos eran duplicados —compartían el identificador de operación de origen— y reconstruir el estado correcto de cada cuenta afectada. No hubo que adivinar nada. La segunda: como existía observabilidad de datos con comprobaciones de cuadre, la alerta que despertó al equipo de guardia no fue un cliente enfadado en redes sociales a la mañana siguiente, sino una comprobación automática que detectó, a los pocos minutos, que el volumen de cargos se desviaba del patrón. El tiempo de detección fue de minutos, no de horas.
La lección que el CIO llevó al consejo no fue "compremos mejor tecnología". Fue una frase que merece enmarcarse: "Las decisiones de arquitectura que parecían sobreingeniería cara cuando todo iba bien fueron exactamente las que nos salvaron cuando algo fue mal". La idempotencia que faltaba en aquel reintento se añadió esa misma semana. Pero el ledger inmutable, la observabilidad de datos y los simulacros de recuperación —las inversiones que un equipo menos maduro habría recortado por "no aportar valor visible"— fueron lo que convirtió una catástrofe potencial en un incidente gestionado. La madurez en datos no se compra; se construye en las decisiones que se toman antes de necesitarlas.
Los errores que más caros salen: anti-patrones del stack de una fintech
Si hay algo que distingue a un arquitecto experimentado de uno novel no es tanto saber qué hacer como saber qué no hacer. Estos son los anti-patrones que, una y otra vez, hunden plataformas de datos en el sector financiero, descritos no como una lista mecánica sino como las trampas reales en las que se cae.
El primero y más mortal es el saldo como columna mutable. Ya lo hemos visto: almacenar el saldo como un dato que se actualiza, en lugar de derivarlo de eventos inmutables, destruye la auditabilidad y convierte cualquier error en irreversible. Es la decisión que parece más simple al principio y la más cara de revertir después, porque cambiarla implica reconstruir el núcleo del sistema con datos ya en producción.
El segundo es mezclar OLTP y OLAP en la misma base de datos para "ahorrar infraestructura". El ahorro es ilusorio: el día que una consulta analítica pesada degrade la latencia de las autorizaciones de pago, el coste de los pagos fallidos superará con creces lo que se ahorró. La frontera entre lo transaccional y lo analítico existe por una razón física, no por purismo.
El tercero es asumir entrega exactamente-una-vez y no diseñar para la idempotencia. Los sistemas distribuidos entregan al menos una vez; quien construye sobre la suposición contraria está construyendo sobre arena. Todo consumidor que aplique efectos con consecuencias —y en una fintech casi todos las tienen— debe ser idempotente por diseño.
El cuarto es la sobreingeniería prematura, el espejo del anterior. Adoptar una base de datos globalmente distribuida, un service mesh complejo y un stack de quince herramientas para procesar mil transacciones por segundo es construir un aeropuerto para recibir avionetas. La complejidad operativa que se introduce supera con creces el problema que resuelve, y se paga en velocidad de desarrollo y en madrugadas de depuración. La arquitectura correcta es la más simple que satisface los requisitos reales —no los imaginados—.
El quinto, el más invisible, es dejar el cumplimiento para el final. Construir la plataforma y "añadir el GDPR después" es garantía de retrabajo masivo. El derecho al olvido, el enmascaramiento de datos sensibles, la trazabilidad para auditorías y la minimización de datos no son funcionalidades que se atornillan al final: son restricciones de diseño que condicionan el esquema, el almacenamiento y los pipelines desde la primera línea de código. En una fintech, la gobernanza no es un departamento que revisa; es un eje transversal que diseña.
Checklist operativo: validar el stack de datos de una fintech antes de producción
Antes de poner en producción una plataforma de datos financiera, conviene pasar por este recorrido de verificación. No es una lista exhaustiva —cada negocio tendrá los suyos— sino el mínimo común denominador que un arquitecto debería poder responder afirmativamente sin dudar.
◢ Núcleo transaccional. ¿El ledger es inmutable y basado en eventos? ¿El saldo es una proyección reconstruible y no una columna mutable? ¿Las transacciones son ACID estrictas y la integridad referencial está garantizada por el motor, no por la aplicación?
◢ Separación de planos. ¿Están física y lógicamente separados el OLTP y el OLAP? ¿Ninguna consulta analítica puede degradar la latencia transaccional?
◢ Ingesta y streaming. ¿El CDC es log-based y propaga solo cambios confirmados en orden? ¿Todos los consumidores con efectos son idempotentes? ¿Se controla el consumer lag con alertas?
◢ Almacenamiento y coste. ¿Existen políticas de ciclo de vida y tiering automático? ¿La retención está definida por legal y no por intuición técnica? ¿Hay visibilidad del coste por tipo de dato (FinOps)?
◢ Frescura y caché. ¿La invalidación de caché está dirigida por eventos? ¿Cada consumo tiene un requisito de frescura explícito y dimensionado al negocio?
◢ Observabilidad. ¿Se observa la calidad de los datos y no solo la salud de la infraestructura? ¿Las comprobaciones de cuadre contable son automáticas? ¿El alerting está libre de fatiga y prioriza lo que duele al negocio?
◢ Resiliencia. ¿El RPO/RTO está definido por nivel de criticidad y no uniformemente? ¿El ledger tiene RPO cercano a cero? ¿Los runbooks están documentados y los simulacros de DR se ejecutan periódicamente de verdad?
◢ Gobernanza y cumplimiento. ¿El enmascaramiento de datos sensibles ocurre en la ingesta? ¿El derecho al olvido y la trazabilidad de auditoría están diseñados desde el origen? ¿Se cumple la minimización de datos?
Criterios de selección de software: cómo elegir sin casarse con la moda
Llegado el momento de elegir herramientas concretas, el error más común es empezar por el producto y no por el requisito. Un arquitecto maduro elige al revés. En el motor transaccional, el criterio rector no es la novedad sino la madurez de las garantías de consistencia y la solidez del ecosistema operativo: por eso PostgreSQL, con su décadas de batalla y su tooling probado, puede ganar a alternativas más vistosas para el núcleo financiero. La pregunta clave a hacerse: ¿cuánta gente sabe operar esto a las tres de la mañana, y cuántos años de incidentes resueltos hay documentados en internet?
En el bus de eventos, el criterio es la durabilidad, el orden garantizado y la capacidad de reprocesar el histórico; Kafka domina por su madurez y su ecosistema de conectores, aunque para volúmenes modestos alternativas gestionadas más simples pueden ahorrar dolores de operación. En el almacenamiento analítico, lo decisivo es la separación de almacenamiento y cómputo, los formatos abiertos y el soporte de viaje en el tiempo —no quedar atrapado en un formato propietario que un día encarezca la salida—. Y de forma transversal, dos criterios que pesan más de lo que parece: el vendor lock-in —cuánto cuesta salir si el proveedor sube precios o se queda atrás— y el coste total de propiedad, que incluye no solo la licencia sino las personas necesarias para operarlo.
Para profundizar en la comparativa de motores, plataformas y herramientas concretas por categoría, el catálogo de Dataprix mantiene listados actualizados del mejor software de cada área —bases de datos, integración, BI y gobernanza—, un buen punto de partida para contrastar opciones antes de comprometer una decisión de arquitectura.
Recursos y lecturas recomendadas
Para quien quiera ahondar en los fundamentos que sostienen las decisiones de este capítulo, estas referencias son de las más sólidas y vigentes del campo:
- Designing Data-Intensive Applications, de Martin Kleppmann (O'Reilly) — la referencia indispensable sobre consistencia, replicación, particionado y procesamiento de eventos. Imprescindible para entender el porqué de cada trade-off descrito aquí.
- Documentación oficial de PostgreSQL — el manual de referencia sobre transacciones, niveles de aislamiento y replicación. postgresql.org/docs
- Documentación de Apache Kafka — conceptos de log de eventos, garantías de entrega y diseño de consumidores. kafka.apache.org/documentation
- Debezium — la referencia para Change Data Capture log-based sobre bases de datos relacionales. debezium.io/documentation
- Apache Iceberg — formato de tabla abierto para lakehouse con versionado y viaje en el tiempo. iceberg.apache.org
- Reglamento General de Protección de Datos (GDPR) — texto consolidado del marco europeo de privacidad, base de las restricciones de gobernanza descritas. eur-lex.europa.eu
- PSD2 — Directiva de Servicios de Pago — marco regulatorio europeo de los servicios de pago, directamente aplicable a las fintech de pagos. eur-lex.europa.eu
Formación recomendada
Para consolidar las competencias que exige diseñar una plataforma como la de este capítulo, estas formaciones en español cubren los pilares prácticos —ingeniería de datos, streaming y modelado—:
Itinerario sugerido
DataCamp · Data Engineer in Python (carrera profesional)
Itinerario completo de ingeniería de datos que recorre bases de datos, ETL/ELT, procesamiento y orquestación de pipelines —el núcleo de competencias que sostiene una plataforma transaccional y analítica como la descrita.
Ver la carrera en DataCamp →
DataCamp · Introducción a Apache Kafka
Curso centrado en el procesamiento de eventos en streaming con Kafka, la columna vertebral de la arquitectura de ingesta en tiempo casi real explicada en este capítulo.
Ver el curso en DataCamp →
Udemy · Apache Kafka Series — Curso de procesamiento de datos en streaming
Formación práctica e intensiva sobre arquitecturas dirigidas por eventos con Kafka, ideal para llevar a la práctica los conceptos de idempotencia, particionado y consumidores resilientes.
Ver cursos de Kafka en Udemy →
Conclusión: la plataforma como suma de trade-offs conscientes
Si algo debería quedar de este recorrido por el stack de Nexora Pay, no es una lista de productos a copiar —los productos cambian, y lo que hoy es Kafka mañana podría ser otra cosa—. Lo que perdura es el método de razonamiento: separar lo que debe ir rápido de lo que debe ir profundo; modelar los pagos como eventos inmutables y no como saldos mutables; diseñar para que la duplicación sea inofensiva en lugar de imposible; alinear el coste del almacenamiento con el valor y la obligación de cada dato; observar la corrección semántica y no solo la salud técnica; dimensionar la resiliencia por criticidad; y tratar el cumplimiento como un eje de diseño y no como un parche final.
Cada una de esas decisiones cierra puertas. Esa es precisamente la cuestión. Una arquitectura no se juzga por las opciones que mantiene abiertas, sino por la lucidez con que ha cerrado las que no convenían. La plataforma de datos de una fintech madura no es la que tiene la tecnología más avanzada, sino la que ha tomado sus trade-offs con los ojos abiertos, los ha documentado, y puede explicárselos a un regulador, a un consejo y a un ingeniero recién llegado con la misma claridad. Con este caso se cierra la Parte II del libro; en la siguiente abordaremos en profundidad cómo se construyen las tuberías que alimentan plataformas como esta: la integración de datos y los pipelines ETL/ELT.
Este capítulo forma parte de la Guía de Arquitectura de Datos de Dataprix, una hoja de ruta práctica para diseñar, implantar y operar la arquitectura de datos de una empresa. El caso "Nexora Pay" es una composición ilustrativa y no se corresponde con ninguna entidad real.
