Trazabilidad en procesos financieros

Uno de los requisitos más importantes de los sistemas que manejan pagos electrónicos masivos es poder individualizar una transacción en particular y obtener estas informaciones:
- Información interna de la transacción, por ejemplo, el monto de un pago.
- Pasos y componentes que fueron necesarios para su ejecución.
- Tiempo que se tardó en cada paso.
- Si hubo un error, el lugar donde ocurrió y la razón.
Esta información solo será útil si cumple estas características:
- Precisa.
- Relevante.
- Completa.
- Actualizada.
- Objetiva.
- Consistente.
- Clara.
En este blog describiremos cómo logramos estas características en un sistema bancario simple que procesa transacciones las cuales pasan por N microservicios y bases de datos para completarse.
El objetivo no es entrar en detalles de implementación sino más bien mostrar cómo unos ajustes (que individualmente son relativamente sencillos) a la forma de manejar logs pueden crear un cimiento muy robusto para el troubleshooting y la toma de decisiones.
Un sistema bancario simple
Como ejemplo tenemos un sistema bancario el cual procesa transacciones del tipo "transferencia" del usuario.