Pasarela de pago para una plataforma fintech
Una pasarela de pago de alta carga en Laravel y Go: procesamiento de pagos con idempotencia garantizada y un tiempo de actividad del 99,98%.
- PHP
- Laravel
- Go
- PostgreSQL
- +2
Tecnología
Un almacén en memoria para caché, colas, sesiones y contadores: baja latencia e invalidación bien pensada.
He usado Redis durante ocho años como una herramienta universal para todo lo que requiere una latencia inferior al milisegundo: almacenamiento en caché, colas, sesiones, contadores, limitación de la frecuencia de solicitudes y bloqueos distribuidos. El valor principal de Redis es almacenar los datos en memoria con un rico conjunto de estructuras: cadenas, hashes, listas, conjuntos, conjuntos ordenados, mapas de bits, HyperLogLog y flujos (Streams). Elegir la estructura adecuada para la tarea determina tanto el rendimiento como la comodidad del código. Para el almacenamiento en caché construyo una estrategia de invalidación bien pensada: uso claves y espacios de nombres con sentido, etiquetas para la invalidación en grupo, TTL razonables y protección contra la estampida de caché (cache stampede) mediante bloqueos y actualización anticipada. Comprendo con claridad la diferencia entre los patrones cache-aside, write-through y write-behind y elijo el enfoque según los requisitos de consistencia de los datos. Uso los conjuntos ordenados para clasificaciones, tareas diferidas y ventanas temporales, y los flujos de Redis para el procesamiento fiable de eventos con grupos de consumidores y confirmación de entrega. Para la limitación de la frecuencia de solicitudes implemento algoritmos de ventana deslizante y token bucket con atomicidad mediante scripts Lua, lo que elimina las condiciones de carrera bajo alta concurrencia. Construyo los bloqueos distribuidos con cuidado, teniendo en cuenta el tiempo de vida y los tokens de propiedad, y comprendiendo las limitaciones y riesgos del enfoque. En cuanto a la fiabilidad, distingo los modos de persistencia RDB y AOF, los ajusto según el volumen de pérdida de datos admisible, uso la replicación y Redis Sentinel para la tolerancia a fallos, y Redis Cluster para el particionado horizontal con grandes volúmenes. Por separado vigilo las métricas operativas: consumo de memoria, política de desalojo (eviction policy), fragmentación y comandos lentos mediante SLOWLOG. Un principio importante: Redis es un acelerador, no la única fuente de verdad, por lo que diseño el sistema de modo que su corrección no se vea afectada al vaciar la caché. En conjunto con Laravel y Go, Redis se encarga de las colas, la caché y las sesiones, reduciendo muchas veces la carga sobre la base de datos principal y manteniendo estable la respuesta del sistema bajo tráfico pico.
Una pasarela de pago de alta carga en Laravel y Go: procesamiento de pagos con idempotencia garantizada y un tiempo de actividad del 99,98%.
Una API única sobre una decena de servicios de mensajería: cálculo de costes, creación de pedidos y seguimiento en tiempo real.
Recopilación y procesamiento de un flujo de eventos con paneles en tiempo real en Go, PostgreSQL y Redis.
Suscripciones, planes y cargos automáticos con un cálculo preciso del dinero y tareas idempotentes.
Un marketplace de dos caras de proveedores y clientes con búsqueda, pedidos y transacciones seguras.