Arquitectura General Spin
Spin tiene una infraestructura 100% cloud con AWS como nube principal. Hace uso de muchos de los servicios cloud de AWS para implementar los requerimientos de negocio necesarios.
Los clientes del sistema pueden ser la aplicación móvil Spin, la página web Spin, los puntos de venta POS de Oxxo, alguna interfaz gráfica de otro sistema o algún proveedor.
Todas las peticiones pasan por la capa gateway CloudFront y de ahí pasan por la capa de seguridad y autenticación, para finalmente llegar al clúster de kubernetes donde son atendidas por los microservicios.
Los microservicios están implementados en Java con Spring Boot y desplegados en contenedores Docker orquestados por kubernetes. Se comunican entre sí de forma síncrona vía HTTP y asíncrona por medio de eventos (event driven) o colas de mensajes.
Para la comunicación con eventos se usa AWS Kinesis Data Streams (ver KINESIS) y para las colas de mensajes AWS SQS (ver SQS ).
En la capa de persistencia se usa base de datos NoSQL con MongoDB en la nube y también se usa el servicio de AWS S3. Algunos pocos flujos usan AWS RDS. La base de datos principal transaccional es MongoDB.
Se cuenta con una capa serverless FaaS para operaciones asíncronas como notificaciones PUSH, SMS, EMAIL etc y procesos backoffice. Para esta capa se usa AWS Lambda (SERVERLESS LAMBDA FaaS ).
Por último, se tienen integraciones con numerosos proveedores a través de canales VPN o Direct Link e incluso Internet (APIs públicas).