Introducción

Este informe detalla la arquitectura de datos propuesta para el desarrollo de un sistema de turnero para McDonald's. El sistema está diseñado para ser escalable, seguro y en tiempo real, capaz de manejar grandes volúmenes de datos y usuarios concurrentes. Utilizaremos una combinación de tecnologías de backend y frontend, incluyendo Next.js, Node.js, Nest.js, Socket.IO, Redis , MongoDB y servicios de Vercel.

Tecnologías y Herramientas

Frontend

Next.js

Next.js es un framework de React para aplicaciones web, desarrollado y mantenido por Vercel. Ofrece una excelente integración con los servicios de Vercel y es ideal para aplicaciones que requieren rendimiento y SEO optimizado. Next.js proporciona renderizado del lado del servidor (SSR), generación de sitios estáticos (SSG) y muchas otras funcionalidades avanzadas.

Backend

Node.js y Express

Node.js es un entorno de ejecución de JavaScript que permite construir aplicaciones de red escalables. Express es un framework web minimalista y flexible para Node.js, que facilita la creación de aplicaciones web y APIs robustas.

Socket.IO

Socket.IO es una biblioteca que permite la comunicación en tiempo real, bidireccional y basada en eventos entre el servidor y los clientes. Es ideal para aplicaciones como el sistema de turnero de McDonald's, donde las actualizaciones instantáneas son cruciales.

Seguridad de Socket.IO

Socket.IO soporta transporte seguro mediante SSL/TLS, asegurando que la comunicación entre clientes y servidores esté cifrada y protegida contra interceptaciones y ataques man-in-the-middle. Además, permite la autenticación de conexiones, lo que refuerza la seguridad.

Bases de Datos

MongoDB en Railway

MongoDB es una base de datos NoSQL que proporciona una alta flexibilidad y escalabilidad. Railway permite desplegar instancias de MongoDB fácilmente, gestionando la infraestructura y el mantenimiento.

Seguridad de MongoDB
  • Encriptación en Tránsito: Utiliza SSL/TLS para cifrar los datos durante su transmisión.
  • Encriptación en Reposo: Los datos almacenados están cifrados usando AES-256.
  • Control de Acceso Basado en Roles (RBAC): Permite definir permisos precisos para diferentes usuarios.
  • Cumplimiento de GDPR: MongoDB cumple con el Reglamento General de Protección de Datos, asegurando la privacidad y protección de datos personales.
  • Certificaciones: MongoDB cuenta con certificaciones ISO/IEC 27001, SOC 2 Tipo II, y más, garantizando prácticas de seguridad rigurosas.

Redis

Redis es una base de datos en memoria de código abierto, que se utiliza como almacén de datos clave-valor. Es ideal para casos de uso que requieren respuestas rápidas, como la gestión de sesiones y la coordinación en tiempo real con Socket.IO.

Seguridad de Redis
  • Encriptación: Redis puede configurarse para usar SSL/TLS para encriptar datos en tránsito.
  • Autenticación: Soporta autenticación a través de contraseñas.
  • Configuración Segura: Se pueden establecer políticas de acceso y restricciones para reforzar la seguridad del entorno Redis.

Servicios de Vercel

Vercel ofrece una plataforma optimizada para el despliegue de aplicaciones web desarrolladas con Next.js. Proporciona funcionalidades como:

  • Implementaciones Automáticas: Cada cambio en el código se despliega automáticamente.
  • Optimización del Rendimiento: Incluye CDN integrado y optimización de imágenes.
  • Seguridad: Ofrece HTTPS automático, lo que asegura la encriptación en tránsito de todas las comunicaciones.

Arquitectura Propuesta

Flujo de Trabajo

  1. Repartidores llegan y avisan su llegada:

    • Los Repartidores escanean un código QR en la pantalla de llegada que abre una aplicación web en sus celulares.
    • Los Repartidores ingresan su ID, y se envía una notificación al servidor mediante Socket.IO.
  2. Confirmación del Pedido por el Personal de McDonald's:

    • El personal confirma el pedido en su pantalla, y esta actualización se propaga en tiempo real a través de Socket.IO.
  3. Visualización del Estado del Pedido:

    • Los Repartidores pueden ver el estado de su pedido en una pantalla o en su celular, actualizado en tiempo real gracias a Socket.IO.
  4. Aplicación de Gestión para Dueños:

    • Los dueños pueden acceder a una aplicación de gestión donde pueden ver métricas y análisis en tiempo real de los pedidos y tiempos de entrega.

Integración y Despliegue

  • Next.js se utilizará para desarrollar todas las interfaces de usuario.
  • NestJS gestionará la lógica del negocio y las rutas API.
  • Socket.IO proporcionará la comunicación en tiempo real entre el servidor y los clientes.
  • MongoDB en Railway se encargará del almacenamiento persistente de datos.
  • Redis manejará la gestión de sesiones y la coordinación en tiempo real.
  • Vercel se utilizará para desplegar la aplicación Next.js, asegurando un rendimiento óptimo y seguridad.

Seguridad y Cumplimiento

GDPR y LOPDGDD

El sistema cumplirá con el GDPR y la LOPDGDD (Ley Orgánica de Protección de Datos y Garantía de los Derechos Digitales), asegurando la protección y privacidad de los datos personales de los usuarios. Esto incluye:

  • Consentimiento de Usuario: Asegurar que los usuarios den su consentimiento explícito para la recolección y procesamiento de sus datos.
  • Derecho de Acceso y Eliminación: Proporcionar mecanismos para que los usuarios accedan y eliminen sus datos personales.
  • Minimización de Datos: Recolectar solo los datos necesarios para el funcionamiento del sistema.
  • Acceso Controlado: Ni programadores ni personal de soporte pueden acceder directamente a los datos personales. En caso de necesidad, el sistema solicitará el consentimiento del usuario para acceder a sus datos.

Esquema Nacional de Seguridad (ENS)

Aunque no es obligatorio para el sector privado, cumplir con el ENS puede ser beneficioso para contratos con entidades públicas. Este sistema adoptará medidas de seguridad alineadas con ENS, como:

  • Gestión de Riesgos: Implementar una política de gestión de riesgos que incluya la identificación, evaluación y mitigación de riesgos.
  • Protección de la Información: Garantizar que la información esté protegida contra accesos no autorizados y asegurada mediante cifrado y otras medidas de seguridad.
  • Auditoría y Registro: Mantener registros de acceso y actividad para auditorías y garantizar la trazabilidad.