Skip to content

Decisión Arquitectónica 2

Abel edited this page May 8, 2024 · 3 revisions

Generación de preguntas

Fecha en que se tomó la decisión: 01/03/2024

Decisión tomada

Se usarán dos bases de datos en toda la aplicación, estando cada uno en un contenedor. La primera, abierta en el puerto 27017, será utilizada para todos los microservicios salvo para los de generación de preguntas. La segunda, abierta en el puerto 27018, se utilizará explícitamente para el Question Service (Question Generator y Wikidata Extractor).

Justificación

En un principio se tenía pensado utilizar una base de datos por microservicio, estando esta dentro del mismo contenedor que el microservicio. Al observar la estructura del proyecto base nos dimos cuenta de que los microservicios User Service y Auth Service usaban la misma base de datos alojada en un contenedor distinto a ambas, lo que chocaba directamente con nuestra idea inicial. El hecho expuesto anteriormente junto con la ignorancia de no saber como hacer que las bases de datos se generen dentro del mismo contenedor en vez de en uno aparte, y junto con la opinión de un Juicio de Expertos (consultamos a nuestro profesor de prácticas), nos hizo tomar la decisión de dejar de lado la primera idea de tener una base de datos por microservicio y crear dos en dos contenedores para toda la aplicación.

Ventajas:

  • Al tener únicamente dos bases de datos es más sencillo gestionarlas y mantenerlas que si fueran más.
  • Es más sencilla la creación de bases de datos en contenedores propios que intentar añadirlas en el mismo contenedor que otro servicio.

Inconvenientes:

  • Se rompe en parte la arquitectura orientada a microservicios al acceder varios de ellos de la misma base de datos.
  • Single Point of Failure: Si se cae una base de datos varios microservicios dejarían de funcionar.