É uma boa idéia usar um Spring MVC como Frontend de uma arquitetura de microsserviço?

5

Meu protótipo de microsserviço atualmente possui um aplicativo Spring boot MVC como front-end. O aplicativo renderiza o View completamente no back-end. Faz chamadas de descanso para outros microsserviços, como OrderService ou ShippingService, que estão por trás de um gateway de API. Escalar os micro-serviços por trás do API Gateway não é problema. Mas escalar o MVC front-end com uma sessão não é tão bom assim, eu acho. Eu posso implementar Oauth2 e eu poderia definir o fronted também sem estado!?

Muitas vezes vejo exemplos de arquitetura de microsserviço com um JavaScript completo como o Angular. É normal usar isso com um cliente JavaScript no navegador? Quando devo usar a renderização do lado do servidor e quando o lado do cliente renderiza com JavaScript?

Por que eu quero usar a renderização do lado do servidor: Eu quero fazer com que todos os microservices sejam um sistema autônomo. Todos os serviços, como ShippingService (Resource) e OrderService (Resource), têm seu próprio front-end do lado do servidor Spring MVC (fornecendo o lado e um pouco de JavaScript para chamadas de back-end relacionadas apenas a esse serviço). Quando o OrderSerivce é desativado, por exemplo, o serviço de frete ainda é completamente utilizável. Apenas os links para o OderService não estão incluídos porque o serviço não está disponível.

Caso contrário, quando eu uso um portal da web (aplicativo Spring MVC) que entrega ao usuário o cliente JavaScript, ele terá o mesmo comportamento, mas e se o portal da web ficar inativo?

E sobre todo o código JavaScript relacionado a todos os diferentes microsserviços? Sempre haveria uma strong dependência ou não?

Eu também gostaria de saber se é melhor em vez de adicionar um aplicativo MVC de inicialização Spring a cada microsserviço se eu apenas adicionar o HTML ao OrderService e fornecer um link. Quando o usuário clica nele, o navegador mostrará a página HTML renderizada pelo OrderSerice, em vez de ter uma API REST?

    
por Rocks360 03.03.2017 / 01:23
fonte

1 resposta

1

De uma perspectiva arquitetônica, eu não estaria preocupado com a tecnologia que você usa para a exibição. Eu prefiro usar uma estrutura semelhante a um ângulo para o frontend, mas ambos, o Spring MVC e uma solução do lado do cliente, podem realizar o propósito.

No entanto, criar algo sem estado é essencial para escalar corretamente. Além disso, todas as solicitações do cliente devem passar pelo gateway da API (o melhor local para lidar com coisas como autenticação).

I would also like to know if it is better instead of adding a Spring boot MVC app to each microservice [...]

Sobre isso, eu diria que você poderia desenvolver uma visão para cada microsserviço somente se puder garantir que seu cliente não falará com outros microsserviços. Em outro caso, você provavelmente deve criar uma única visualização.

Espero que isso ajude você.

    
por 03.12.2018 / 00:48
fonte