Introdução à arquitetura de microsserviços

Nov 25 2022
Ao consultar este artigo, você poderá ter uma ideia melhor da arquitetura de microsserviços e quando usá-la. Além disso, este artigo consiste no seguinte conteúdo.

Ao consultar este artigo, você poderá ter uma ideia melhor da arquitetura de microsserviços e quando usá-la. Além disso, este artigo consiste no seguinte conteúdo.

◼ Abreviações do artigo

◼ Introdução

◼ Ecossistema de microsserviços

◼ Arquitetura monolítica x arquitetura de microsserviços

◼ Desafios em Microsserviços

◼ Quando usar microsserviços

Abreviaturas

  • API: interface de programação de aplicativos
  • MS: microsserviço
  • NoSQL: Não apenas SQL
  • RTE: ambiente de execução

A arquitetura de microsserviços é uma abordagem para o desenvolvimento de aplicativos em que um grande aplicativo é construído como um conjunto de serviços modulares (isso significa que ele (microsserviço) é um tipo de arquitetura de aplicativo em que o aplicativo é desenvolvido como uma coleção de serviços). Cada módulo oferece suporte a uma meta de negócios específica e usa uma interface simples e bem definida para se comunicar com outros conjuntos de serviços. Além disso, há um mínimo de serviços de gerenciamento centralizados, que podem ser escritos em diferentes linguagens de programação, como java, python, etc, e usar diferentes tecnologias de armazenamento de dados, como relacional e NoSQL na arquitetura de microsserviços.

Arquitetura de microsserviços

Existem alguns recursos/características principais dos microsserviços, conforme a seguir.

  • Altamente manutenível e testável
  • Acoplado fracamente (comunicar-se por meio de uma interface)
  • Implantável de forma independente
  • Organizado em torno de capacidades de negócios
  • Possuído por uma equipe pequena (equipe multifuncional)

Em geral, o sistema de microsserviços contém as seguintes entidades listadas. Algumas dessas entidades são fases no desenvolvimento de software padrão e algumas delas são processos específicos de microsserviços que fornecerão a espinha dorsal de um sistema de microsserviços eficiente.

Balanceador de carga

A principal responsabilidade do balanceador de carga é distribuir a carga recebida entre muitas instâncias de microsserviços. Principalmente, existem 2 tipos de balanceadores de carga chamados descoberta do cliente (balanceador de carga do lado do cliente) e descoberta do servidor (balanceador de carga do lado do servidor). Na descoberta do cliente, o cliente se comunica com o registro do serviço e faz o balanceamento de carga. Por conta disso o cliente precisa ficar atento ao cadastro de serviços. Na descoberta do servidor, o cliente fala com o balanceador de carga e o balanceador de carga fala com o registro do serviço. Portanto, o atendimento ao cliente não precisa estar atento ao cadastro de serviços. Ao observar os diagramas a seguir, você pode entender melhor esses 2 tipos de balanceador de carga.

balanceador de carga do lado do cliente

Servidor de descoberta de serviço

A funcionalidade de descoberta de serviço permite que os microsserviços se autorregistrem na inicialização, em vez de acompanhar manualmente em quais microsserviços estão implantados atualmente e quais hosts e portas precisamos. Portanto, se o MS1 quiser falar com o MS2, primeiro, o MS1 obtém os detalhes do serviço de registro que pertence à paisagem e depois fala com o MS2. Além disso, quando houver outro MS chamado MS3 que estiver ativo ou inativo no mesmo cenário, o serviço de registro será atualizado automaticamente.

Servidor de descoberta de serviço

Gateway de API

O API Gateway é um servidor. É um único ponto de entrada em um sistema. O API Gateway encapsula a arquitetura do sistema interno. Ele fornece uma API personalizada para cada cliente. Ele também tem outras responsabilidades, como autenticação, monitoramento, balanceamento de carga, armazenamento em cache, modelagem e gerenciamento de solicitação e manipulação de resposta estática. O API Gateway também é responsável pelo roteamento de solicitação, composição e tradução de protocolo. Todas as requisições feitas pelo cliente passam pelo API Gateway. Depois disso, o API Gateway encaminha as solicitações para o microsserviço apropriado.

O API Gateway lida com a solicitação de uma das duas maneiras:

  • Ele roteava ou fazia proxy das solicitações para o serviço apropriado.
  • Espalhar (espalhar) uma solicitação para vários serviços.
  • Gateway de API

Agora sabemos que há muitos microsserviços rodando em nós diferentes no mesmo ecossistema. Portanto, precisamos monitorá-los juntos em um único sistema é essencial. O painel Hystrix e o painel admin de inicialização Spring são alguns exemplos de ferramentas de monitoramento. Existem cinco princípios de monitoramento de microsserviços:

  • Monitore os contêineres e o que há dentro deles.
  • Alerta sobre o desempenho do serviço.
  • Monitore serviços elásticos e multilocais.
  • Monitorar APIs.
  • Monitore a estrutura organizacional
  • Monitoramento

Quando estamos implementando microsserviços, eles são executados em diferentes RTEs, como JRE e Node.js, pois a implementação dos microsserviços pode ser feita usando diferentes tecnologias. Além disso, você sabe que esses microsserviços são implantados de maneira poliglota. Portanto, os nós não conhecem o RTE do microsserviço implantado e precisamos instalá-lo manualmente em cada nó. Mas quando se trata de Containerização, empacotamos nosso RTE com nosso microsserviço. Portanto, podemos executar os microsserviços em qualquer lugar sem considerar o RTE e podemos gerenciar e atualizar esses serviços facilmente.

Conteinerização

Disjuntor

Disjuntor

É uma entidade muito importante no ecossistema de microsserviços. Na maioria das vezes, isso é definido como um padrão. Para fins de compreensão, isso é muito semelhante ao disjuntor da sua casa. Ele protege você do desastre e impede a propagação do problema que surgiu. O mesmo cenário está acontecendo aqui (disjuntor no MS) com relação aos microsserviços. Vamos supor que o cliente envie uma requisição para o microsserviço fornecedor e enquanto a resposta está chegando há um problema de conexão. Por causa disso, o cliente está esperando por uma resposta por um longo tempo e isso pode afetar outros serviços também. Desde a arquitetura do disjuntor, o canal problemático é descartado e o problema de espera anterior é resolvido. Além disso, existem três estados diferentes do disjuntor chamados Fechado, Aberto e Meio Aberto.

Arquitetura monolítica x arquitetura de microsserviços

Arquitetura monolítica x arquitetura de microsserviços

Preço

  • Monolítico: Maior quando o projeto é dimensionado
  • Microservice: Superior no primeiro estágio de desenvolvimento
  • Monolítico: Uma base de código e banco de dados unidos para todo o produto
  • Microservice : Vários arquivos de código; cada serviço lida com uma base e um armazenamento de dados
  • Monolítico: toda a base de código precisa ser implantada
  • Microsserviço: Cada microsserviço é implantado individualmente
  • Monolítico: A mesma pilha de código
  • Microservice: Pilhas diferentes (linguagem, ambiente de execução e etc)

Existem alguns desafios quando estamos lidando com microsserviços como segue.

  • Comunicação entre processos (via rede)
  • Transações distribuídas
  • Um grande número de serviços
  • Exigir mais automação

Agora temos uma boa compreensão dos microsserviços e seus desafios. Vamos ver quais cenários são adequados para microsserviços.

  • A empresa deseja criar um código limpo e legível imediatamente e evitar dívidas técnicas
  • A empresa possui recursos humanos para desenvolvimento de microsserviços
  • A empresa prioriza ganhos de longo prazo sobre benefícios de curto prazo
  • Uma equipe de desenvolvedores usa diferentes pilhas e ferramentas de tecnologia
  • A plataforma tem que ser altamente escalável e expandir para diferentes mercados