Skip to content

Decisión Arquitectónica 3

Abel edited this page May 8, 2024 · 3 revisions

Separación de Gateways

Fecha en que se tomó la decisión: 12/04/2024

Decisión tomada

Se creará un segundo gateway por el que se redireccionarán las consultas del usuario a los servicios que devuelven datos sobre el historial de preguntas y las estadísticas de los usuarios

Justificación

La idea de crear este segundo gateway surge de los requisitos especificados en la documentación, los cuales piden lo siguiente:

  • El sistema permitirá acceder a la información de los usuarios a través de un API.
  • El sistema permitirá acceder a la información de las preguntas generadas a través de un API.

Nos dimos cuenta de que en nuestro gateway actual ya disponíamos de los endpoints y métodos que realizaban dichas consultas cuando eran solicitadas desde la webapp, sin embargo, dichos endpoints estaban mezclados con todos los demás necesarios para el funcionamiento de la aplicación como los de registro de usuarios o creación de partidas.

La idea detrás de este cambio es, sencillamente, el separar esas rutas específicas (las cuales son únicamente de consulta de datos y por lo tanto no modifican el estado de la aplicación en sí) del resto de rutas "internas" de la aplicación. El objetivo final de esto sería ofrecer al público este nuevo gateway de forma que cualquier usuario ajeno a la aplicación pueda consultarlo e incluso utilizar la información obtenida para otras aplicaciones. Por otro lado, el gateway anterior quedaría para uso "exclusivo" de los usuarios utilizando nuestra aplicación. Esto último se podría restringir en cierto modo validando que las peticiones a dicho gateway lleven unas credenciales propias de los usuarios (así un usuario no registrado en la aplicación no podría, por ejemplo, hacer una llamada al endpoint encargado de generar un juego y sus preguntas).

Ventajas:

  • Se logra una separación física y lógica entre las rutas exclusivamente de consulta (pensadas para el uso de cualquier usuario de internet) y aquellas necesarias para el uso de la aplicación.
  • Mayor seguridad y facilidad para manejar el acceso a los endpoints de la aplicación.
  • No es necesario cambiar el funcionamiento o la conexión entre ninguno de los servicios actuales.

Inconvenientes:

  • Es necesaria la creación de un nuevo contenedor.
  • Es necesario redireccionar las consultas anteriormente realizadas desde la webapp al gateway original hacia el nuevo gateway.