Los mercados financieros no esperan. Cada milisegundo de delay entre una señal de compra y la ejecución de la orden puede significar la diferencia entre ganancia y pérdida. Cuando un cliente nos pidió construir un motor de trading personalizado, sabíamos que la arquitectura convencional request-response no alcanzaba.
Event Sourcing como base
En lugar de actualizar registros en una base de datos, cada operación se almacena como un evento inmutable. Esto nos da:
- Auditabilidad total: Podemos reconstruir el estado del sistema en cualquier punto del tiempo
- Replay de eventos: Para backtesting de estrategias con datos históricos reales
- Procesamiento paralelo: Múltiples consumers pueden leer el stream de eventos simultáneamente
Procesamiento en memoria
Los datos de mercado activos se mantienen en estructuras de datos en memoria (Redis + custom data structures en C). Solo se persisten a disco de forma asíncrona para no bloquear el hot path.
El resultado: latencia de procesamiento promedio de 0.3ms desde la recepción del tick de mercado hasta la generación de la señal de trading.