Retail · supermercados en dos países · 2020 — 2021
Que el stock del sitio coincida con el de la tienda
Cinco microservicios conectados por Pub/Sub que llevan el stock desde el merchandising hasta el e‑commerce, en dos países.
El problema
Si el sitio de un supermercado dice que hay un producto y no hay, el problema llega hasta la puerta del cliente. En este caso, el stock viajaba desde el sistema de merchandising hasta el e‑commerce a través de un middleware.
Lo que hice
Construí la integración nueva desde cero con un compañero, a quien le transmití la arquitectura: cinco microservicios en Node.js, uno on-premise y cuatro en GCP, conectados por Pub/Sub.
El primero recibe cada cambio de stock y lo publica como evento. Los demás lo guardan descartando los datos viejos —en un flujo asíncrono los mensajes no llegan en orden—, lo agrupan por país, tienda y tipo antes de enviarlo a la plataforma de e‑commerce, y responden consultas por producto y tienda.
Acompañé la entrega completa: QA, la documentación del sistema y el traspaso al equipo de soporte.
Qué pasó
Reemplazó a la integración anterior y quedó en producción en los dos países.
Durante el desarrollo, el equipo de QA la sometió a pruebas de estrés con Artillery: inyectó más de 900.000 eventos en diez minutos, a unos 1.100 por segundo. El servicio de entrada llegó a procesar 1.300 transacciones por segundo y respondió bien al 100 % de ellas.
La prueba también mostró por qué convenía separar las piezas. Guardar ese volumen tomó unos 40 minutos, limitado por la base de datos del ambiente de pruebas, y mientras tanto los eventos esperaron en Pub/Sub: la recepción siguió respondiendo al mismo ritmo y no se perdió ninguno.
Lo que me llevé
Entregar no termina en el pase a producción: sigue en QA, en soporte y en estar atenta a lo que se rompe.
Node.js · Koa · MongoDB · GCP Pub/Sub · Kubernetes