Pular para conteúdo

Desenho Arquitetural (Padrões Estratégicos)

Nesse projeto iremos usar diversos conceitos do DDD para desenhar a solução, vale lembrar que não iremos usar todos os conceitos, apenas aqueles necessários para o desenvolvimento que temos nesse desafio

Context Map (Mapa de Contextos)

O context map é uma ferramenta do DDD para identificar os contextos de um domínio e a relação entre eles, vamos usar esse conceito de forma bem simplificada para identificar nossos microserviços e a relação entre eles.

Nosso sistema é um sistema aonde um colaborador de uma consultoria faz uma requisição de feedback para um avaliador externo a consultoria, ou seja, o cliente da consultoria. Nesse caso identificamos que temos tanto a solicitação de feedback voltada a um avaliador, quanto a resposta de feedback voltada a uma solicitação. Dessa forma já podemos identificar 4 contextos:

  • Gestão de Usuários
  • Autenticação
  • Solicitação de Feedback
  • Resposta de Feedback
ColaboradorAutenticaçãoFeedback RequestFeedback ResponseUsuárioUsuárioUsuárioFeedback RequestUsuárioFeedback RequestFeedback Response    

Arquitetura Contextual

Vamos observar como fica a arquitetura de cada contexto em suas camadas

mmd

Arquitetura em microserviços

Abaixo observamos em mais detalhes a decomposição final em microserviços

Sistema de Feedbacks Externos[Microservices]«container»Serviço de Solicitaçãode Feedback[Java - Spring Boot] Gerencia a criação deperguntas, aprovação deperguntas pelo PDM egeração do link para osavaliadores externos«container»Serviço de Repostade Feedback[Java - Spring Boot] Permite aos clientesexternos responderem asperguntas do feedbacksolicitado. Valida o tempode validade da solicitação«container»Serviço deVisualização deFeedback[Python - FastApi] Permite a visualização defeedbacks recebidos. Exibede forma anonima para ousuario e não anonima parao PDM«container»Serviço de Usuários[Java - Spring Boot] Gestão e Login de usuárioscom token JWT«container»Banco de Usuários[Postgres] Armazena dados deusuários«container»Banco de Dados deFeedbacks[Postgres] Armazena dados defeedback e perguntas.«container»Frontend deFeedbacks Externos[React - NextJS] Telas de gestao desolicitação, aprovação eresposta de feedback declientes externos aosconsultores internos«container»API Gateway[NodeJS Express] Ponto de entrada único quegerencia autenticação,roteamento e cross-cuttingconcernsusesusesusesusesEnvia requisiçõesHTTP/HTTPSValida token JWT eencaminhaExibir SolicitaçãoSolicitaçõesSolicitações a aprovarPDM AprovarSolicitaçãoPDM RejeitarSolicitaçãoEditar SolicitaçãoValida token JWT eencaminhaResponderSolicitaçãoValida token JWT eencaminhaListar RespostasExibir Resposta UserExibir Resposta PDMValida token JWT eencaminhaCadastrar UsuarioEditar UsuárioLinkar PDM aousuárioLogin