Saltar al contenido

Todos los proyectos

Plataforma de autogestión y pagos para retail

Microservicios sobre GKE con Apigee, tokenización PCI-DSS y autoescalado para que los clientes de una cadena de retail nacional consulten y paguen solos, incluso en los picos.

  • Java
  • Spring Boot
  • .NET
  • GKE
  • Apigee
  • PostgreSQL
  • Redis
  • Docker
  • Kubernetes
  • GCP
  • Grafana

Contexto

Una cadena de retail con operación nacional necesitaba que sus clientes resolvieran solos consultas y pagos, sin llamar ni ir a sucursal.

Problema

Tráfico irregular con picos fuertes, datos sensibles de medios de pago de por medio, y una capa de integración que fallaba de formas difíciles de diagnosticar: resolución de nombres dentro del clúster, errores de stream contra el gateway, conexiones cifradas que se caían intermitentemente.

Decisiones

  • Microservicios contenerizados con Docker sobre Kubernetes (GKE) en GCP, con autoescalado y health checks para absorber los picos.
  • Apigee como capa de gateway, con diagnóstico y corrección de los errores de protocolo que rompían las llamadas bajo carga.
  • Datos sensibles bajo tokenización PCI-DSS, llaves en un servicio de gestión de llaves y credenciales fuera del código.
  • Redis con TLS para caché y sesión, y réplicas de lectura en base de datos para descargar las consultas pesadas.
  • Corrección de la resolución DNS dentro del clúster, causa raíz de fallas intermitentes que parecían aleatorias.

Resultado

Las fallas intermitentes que se atribuían a "la red" resultaron tener causas concretas y reproducibles: una configuración de resolución de nombres dentro del clúster y un manejo incorrecto de streams en el gateway bajo carga. Documentar y corregir eso convirtió incidentes recurrentes sin explicación en un problema cerrado. La plataforma quedó absorbiendo los picos por autoescalado en lugar de por intervención manual, y los datos de medios de pago dejaron de vivir en la aplicación: pasaron a estar tokenizados, con llaves y credenciales fuera del código.

Lo que aprendí

Que en Kubernetes la mitad de los bugs "aleatorios" son de red, y que sin logs y métricas uno termina optimizando lo que no era.