Saltar a contenido

Diseño Arquitectónico (Patrones Estratégicos)

En este proyecto usaremos diversos conceptos de DDD para diseñar la solución. Vale la pena recordar que no usaremos todos los conceptos, solo aquellos necesarios para el desarrollo que tenemos en este desafío.

Mapa de Contextos (Context Map)

El mapa de contextos es una herramienta de DDD para identificar los contextos de un dominio y la relación entre ellos. Usaremos este concepto de forma muy simplificada para identificar nuestros microservicios y la relación entre ellos.

Nuestro sistema es uno donde un colaborador de una consultora hace una solicitud de feedback a un evaluador externo a la consultora, es decir, el cliente de la consultora. En este caso, identificamos que tenemos tanto la solicitud de feedback dirigida a un evaluador, como la respuesta de feedback dirigida a una solicitud. De esta forma, ya podemos identificar 4 contextos:

  • Gestión de Usuarios
  • Autenticación
  • Solicitud de Feedback
  • Respuesta de Feedback
ColaboradorAutenticaciónSolicitud de FeedbackRespuesta de FeedbackUsuarioUsuarioUsuarioSolicitud de FeedbackUsuarioSolicitud de FeedbackRespuesta de Feedback    

Arquitectura Contextual

Observemos cómo queda la arquitectura de cada contexto en sus capas.

mmd

Arquitectura en Microservicios

A continuación, observamos con más detalle la descomposición final en microservicios.

Sistema de Feedbacks Externos[Microservicios]«container»Servicio de Solicitudde Feedback[Java - Spring Boot] Gestiona la creación depreguntas, la aprobación depreguntas por el PDM y lageneración del enlace paralos evaluadores externos«container»Servicio de Respuestade Feedback[Java - Spring Boot] Permite a los clientesexternos responder laspreguntas del feedbacksolicitado. Valida el tiempode validez de la solicitud«container»Servicio deVisualización deFeedback[Python - FastApi] Permite la visualización defeedbacks recibidos.Muestra de forma anónimapara el usuario y noanónima para el PDM«container»Servicio de Usuarios[Java - Spring Boot] Gestión e inicio de sesiónde usuarios con token JWT«container»Base de Datos deUsuarios[Postgres] Almacena datos de usuarios«container»Base de Datos deFeedbacks[Postgres] Almacena datos defeedback y preguntas.«container»Frontend deFeedbacks Externos[React - NextJS] Pantallas de gestión desolicitud, aprobación yrespuesta de feedback declientes externos a losconsultores internos«container»API Gateway[NodeJS Express] Punto de entrada único quegestiona autenticación,enrutamiento y concernstransversales (cross-cuttingconcerns)usausausausaEnvía solicitudesHTTP/HTTPSValida token JWT yreenvíaVer SolicitudSolicitudesSolicitudes poraprobarPDM AprobarSolicitudPDM RechazarSolicitudEditar SolicitudValida token JWT yreenvíaResponder SolicitudValida token JWT yreenvíaListar RespuestasVer RespuestaUsuarioVer Respuesta PDMValida token JWT yreenvíaRegistrar UsuarioEditar UsuarioEnlazar PDM alusuarioLogin