7
respostas

Microserviços

Pelo que entendi, os microserviços são separados.

Exemplo:

Usuários. usuario/:id, WAR único; Clientes. cliente/:id, WAR único; Contas a pagar. contaPagar/:id, WAR único. Pelo que entendi eles são desenvolvidos em projetos diferentes, mas utilizando o mesmo banco de dados. Sendo assim para buscar um cliente no micro serviço de conta a pagar, tenho que acessar localhost:8080/cliente/:id, sendo que estou no endereço localhost:8080/contaPagar.

Assim, eu não tenho métodos para clientes no módulo de contas a pagar. Assim tudo deste módulo está neste projeto. Salvar, Alterar, Excluir e todos os tipos de pesquisa.

Meu pensamento está correto ?

7 respostas

De fato os microserviços são entes separados, com responsabilidade muito bem definida (alta coesão). Normalmente eles podem ser orquestrados para que se crie serviços compostos por outros serviços.

Algumas características são:

  • Altamente manuteníveis e testáveis
  • Baixo acoplamento e Alta coesão
  • Publicação independente
  • Organizados com foco em aspectos negociais

Mais detalhes, dá uma olhada neste site:

https://microservices.io/

Att.

Entendi um pouco sobre micro serviços.

Mas o que eu quero saber.

Exemplo tenho um erp, e gera um erp-web.war.

Nele tenho os end-points.

    @RestController
    @RequestMapping("/admin/seg/agencia")
    @CrossOrigin(origins = "*")
    public class AgenciaController {
        **Aqui tenho todas as operações para cliente**, salvar, excluir, alterar, etc, para a entidade agência
    }

e

    @RestController
    @RequestMapping("/admin/seg/cliente")
    @CrossOrigin(origins = "*")
    public class AgenciaController {
        **Aqui tenho todas as operações para cliente**, salvar, excluir, alterar, etc, para a entidade cliente
    }

Mas no modelo de cliente, por exemplo tenho a entidade agencia.

Lembrando que todos os métodos GET, POST, etc..

@PostMapping(value = "/pesquisar", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

ou

@GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

ou

@DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

O back end é angular e é no servidor localhost:4200 e o servidor fica em localhost:8080. Tanto para homologação é produção.

Para ser micro serviços, tenho que ter dois war ou um somente?

Microserviço é um conceito, que reforça a característica que o seu Frontend (Angular) consome diversos serviços que serão produzidos por diversos elementos, entenda-se diversõs endpoints, implementados em várias tecnologias e independentes entre si.

Normalmente existe um elemento de gerenciamento de serviços, por exemplo a IBM possui o API Manager, outro famoso é WSO2, onde vc gerencia a API, que por sua vez pode consumir os microserviços propriamente ditos ou de serviços em um broker.

É comum microservicos serem desenvolvidos em SpringBoot, Node, ou mesmo Clojure (Nubank usa). Então com este ecossistema complexo de serviços, um API Manager torna-se fundamental.

O fato de você ter um backend (war) com vários serviços sendo disponibilizado via REST, não caracterizaria propriamente dito uma arquitetura microservice, no meu entendimento.

O assunto é vasto, espero ter ajudado um pouco.

Att.

Então não entendi kkk

Sei que pode ser desenvolvido em várias linguagens, mas no meu caso é um sistema que está sendo desenvolvido em Spring e angular. No WAR contem todos os tipos de endpoints que o sistema deve ter. Assim estava tentando entender o microserviço com o meu cenário. Se é ou não é.

Sobre sua escrita: O fato de você ter um backend (war) com vários serviços sendo disponibilizado via REST, não caracterizaria propriamente dito uma arquitetura microservice, no meu entendimento.

Imaginei, mas então estou boiando nesta parte.

No seu caso é um módulo web que disponibiliza um conjunto de serviços REST. É uma arquitetura clássica que usa um Frontend SPA (Single Page Architecture).

Quando se fala em microserviço, normalmente vc teria diversos módulos web (backend) independentes entre si, provendo serviços para outros fronts.

O seu frontend poderia estar consumindo estes endpoints diretamente na origem (backends), mas é normal ter um API Manager para orquestrar e centralizar o acesso aos serviços.

Dá uma olhada neste site:

https://microservices.io/patterns/microservices.html

Acho que ajudará a entender a diferença.

Att.

O que seria API Manager, para controlar ?

Pra entender melhor dá uma olhada neste site:

https://en.wikipedia.org/wiki/API_management

Att.