Tutorial de microsserviços: o que é, Archiestrutura e exemplo

O que são Microsserviços?

Microservices é um padrão de arquitetura orientada a serviços em que os aplicativos são construídos como uma coleção de várias unidades de serviço menores e independentes. É um Engenharia de software abordagem que se concentra na decomposição de um aplicativo em módulos de função única com interfaces bem definidas. Esses módulos podem ser implantados e operados de forma independente por pequenas equipes que controlam todo o ciclo de vida do serviço.

O termo “micro” refere-se ao dimensionamento de um microsserviço que deve ser gerenciável por uma única equipe de desenvolvimento (5 a 10 desenvolvedores). Nesta metodologia, grandes aplicações são divididas em menores unidades independentes.

O que é monolítico Archiarquitetura?

Em termos leigos, você pode dizer que a arquitetura monolítica é como um grande contêiner no qual todos os componentes de software de um aplicativo são agrupados em um único pacote.

Vamos discutir um exemplo de loja de comércio eletrônico no contexto de uma arquitetura monolítica.

Monolítico Archiarquitetura
Monolítico Archiarquitetura de aplicativo de comércio eletrônico

Em qualquer aplicativo de comércio eletrônico, existem alguns recursos padrão, como Pesquisa, Revvisualização e classificações e pagamentos. Esses recursos podem ser acessados ​​pelos clientes usando seus navegadores ou aplicativos. Quando o desenvolvedor do site de comércio eletrônico implanta o aplicativo, ele é uma única unidade monolítica. O código para diferentes recursos como Pesquisa, RevVisualização e classificações e Pagamentos estão no mesmo servidor. Para dimensionar o aplicativo, você precisa executar várias instâncias (servidores) desses aplicativos.

O que é microsserviço Archiarquitetura?

Microsserviço Archiarquitetura é um estilo de desenvolvimento arquitetônico que permite construir aplicativos como uma coleção de pequenos serviços autônomos desenvolvidos para um domínio de negócios. É uma variante da arquitetura de estilo estrutural que ajuda a organizar os aplicativos como uma coleção de serviços fracamente acoplados. O Microservice ArchiA arquitetura contém serviços refinados e protocolos leves.

Vamos dar um exemplo de aplicativo de e-commerce desenvolvido com arquitetura de microsserviços. Neste exemplo de arquitetura de microsserviços, cada microsserviço é focado em uma única capacidade de negócios. Pesquisar, classificar e Review e Payment têm sua instância (servidor) e se comunicam entre si.

Microservices Archiarquitetura
Microservices Archiarquitetura

No Monolítico Archiarquitetura, todos os componentes se fundem em um único módulo. Mas, em microsserviços Archiarquitetura, eles são espalhados em módulos individuais (microsserviços) que se comunicam entre si, conforme mostrado no exemplo de microsserviços acima.

A comunicação entre microsserviços é uma comunicação sem estado onde cada par de solicitação e resposta é independente. Conseqüentemente, os microsserviços podem se comunicar sem esforço. No microsserviço Archiarquitetura, os dados são federados. Cada microsserviço possui seu armazenamento de dados separado. Próximo neste Java Tutorial de microsserviços, aprenderemos sobre a diferença entre microsserviços e arquitetura monolítica.

Microsserviços vs. Monolítico Archiarquitetura

Microservices Monolítico Archiarquitetura
Cada unidade de todo o aplicativo deve ser a menor e deve ser capaz de atender a uma meta de negócios específica. Uma única base de código para todos os objetivos de negócios
A inicialização do serviço é relativamente rápida A inicialização do serviço leva mais tempo
O isolamento de falhas é fácil. Mesmo que um serviço caia, outro pode continuar funcionando. O isolamento de falhas é difícil. Se algum recurso específico não estiver funcionando, todo o sistema ficará inativo. Para lidar com esse problema, o aplicativo precisa ser reconstruído, testado novamente e também reimplantado.
Todos os microsserviços devem ser fracamente acoplados para que as alterações feitas em um não afetem o outro. A arquitetura monolítica está fortemente acoplada. Mudanças em um módulo de código afetam o outro
As empresas podem implantar mais recursos em serviços que geram maior ROI Como os serviços não são isolados, a alocação individual de recursos não é possível
Mais recursos de hardware poderiam ser alocados para o serviço que é usado com frequência. No exemplo de comércio eletrônico acima, mais usuários verificam a lista de produtos e pesquisam em comparação aos pagamentos. Assim, mais recursos poderiam ser alocados para o microsserviço de pesquisa e listagem de produtos. O dimensionamento de aplicativos é desafiador e também um desperdício.
Os microsserviços sempre permanecem consistentes e continuamente disponíveis. As ferramentas de desenvolvimento ficam sobrecarregadas porque o processo precisa começar do zero.
Os dados são federados. Isso permite que microsserviços individuais adotem um modelo de dados mais adequado às suas necessidades. Os dados são centralizados.
Pequenas equipes focadas. Desenvolvimento paralelo e mais rápido É necessária uma equipe grande e um esforço considerável de gerenciamento de equipe
A mudança no modelo de dados de um microsserviço não afeta outros microsserviços. Mudança no modelo de dados afeta todo o banco de dados
Interage com outros microsserviços usando interfaces bem definidas Não aplicável
Os microsserviços funcionam com base no princípio de focar em produtos, não em projetos Dê ênfase a todo o projeto
Sem dependências cruzadas entre bases de código. Você pode usar diferentes tecnologias para diferentes microsserviços. Uma função ou programa depende de outros.

Desafios de microsserviços

  • Os microserviços dependem uns dos outros e terão que se comunicar entre si.
  • Em comparação com os sistemas monolíticos, existem mais serviços de monitorização que são desenvolvidos utilizando diferentes linguagens de programação.
  • Por ser um sistema distribuído, é um modelo inerentemente complexo.
  • Diferentes serviços terão seu mecanismo separado, resultando em uma grande quantidade de memória para dados não estruturados.
  • Gestão eficaz e trabalho em equipe necessários para evitar problemas em cascata
  • Reproduzir um problema será uma tarefa difícil quando ele desaparecer em uma versão e voltar na versão mais recente.
  • A implantação independente é complicada com microsserviços.
  • A arquitetura de microsserviços traz muita sobrecarga de operações.
  • É difícil gerenciar o aplicativo quando novos serviços são adicionados ao sistema
  • Uma ampla gama de profissionais qualificados é necessária para oferecer suporte a microsserviços distribuídos heterogeneamente
  • O microsserviço é caro, pois você precisa manter diferentes espaços de servidor para diferentes tarefas de negócios.

SOA x microsserviços

Os serviços SOA são mantidos na organização por um registro que atua como uma listagem de diretórios. Os aplicativos precisam procurar os serviços no registro e invocar o serviço.

Em outro mundo, SOA é como uma orquestra onde cada artista toca seu instrumento enquanto o diretor musical dá instruções a todos.

Por outro lado, microsserviços são uma forma de estilo de arquitetura orientada a serviços em que os aplicativos são construídos como uma coleção de diferentes serviços menores, em vez de um software ou aplicativo.

Os microsserviços são como uma trupe onde cada dançarino é independente e sabe o que precisa fazer. Assim, se errarem alguns passos, saberão como voltar à sequência correta. Agora neste tutorial de arquitetura de microsserviços, vamos aprender sobre a diferença entre SOA e microsserviços.

Aqui está uma comparação detalhada entre SOA e microsserviços

Parâmetro SOA Microservices
Tipo de design Na SOA, os componentes de software são expostos ao mundo exterior para uso na forma de serviços. Micro Service faz parte do SOA. É uma implementação de SOA.
Dependência As unidades de negócios são dependentes. Eles são independentes um do outro.
Tamanho do software O tamanho do software é maior do que qualquer software convencional O tamanho do Software é sempre pequeno em Microsserviços
Pilha de Tecnologia A pilha de tecnologia é menor em comparação com microsserviços. A pilha de tecnologia de microsserviços pode ser muito grande
Natureza da aplicação De natureza monolítica Pilha completa na natureza
Independente e Foco Os aplicativos SOA são desenvolvidos para executar várias tarefas de negócios. Eles são criados para executar uma única tarefa de negócios.
desenvolvimento O processo de implantação é demorado. A implantação é simples e menos demorada.
Custo - eficácia Mais econômico. Less custo-beneficio.
Escalabilidade Less em comparação com microsserviços. Altamente escalonável.
Logíca de negócios Os componentes da lógica de negócios são armazenados dentro de um único domínio de serviço Protocolos de conexão simples (HTTP com XML JSON) A API é controlada por SDKs/Clientes A lógica de negócios pode residir em domínios do Service Bus corporativo, como camadas entre serviços Middleware

Ferramentas de microsserviços

1) Wiremock: Testando Microsserviços

WireMock é uma biblioteca flexível para stub e simulação de serviços da web. Ele pode configurar a resposta retornada pela API HTTP ao receber uma solicitação específica. Também é usado para testar microsserviços.

Link para download:http://wiremock.org/

2) Janela de encaixe

Docker é um projeto de código aberto que nos permite criar, implantar e executar aplicativos usando contêineres. Ao usar esses contêineres, os desenvolvedores podem executar um aplicativo como um único pacote. Ele permite que você envie bibliotecas e outras dependências em um pacote.

Link para download:https://www.docker.com/

3) Histriz

Hystrix é uma biblioteca Java de tolerância a falhas. Esta ferramenta foi projetada para separar pontos de acesso a serviços remotos, sistemas e bibliotecas de terceiros em um ambiente distribuído como microsserviços. Melhora o sistema geral, isolando os serviços com falha e evitando o efeito cascata das falhas.

Download link:https://github.com/Netflix/Hystrix

Melhores Práticas de Microserviços Archiarquitetura

  • Armazenamento de dados separado para cada microsserviço
  • Mantenha o código com um nível de maturidade semelhante.
  • Compilação separada para cada micro serviço.
  • Sempre trate – grave como apátrida.

Resumo

  • Microsserviços é um padrão de arquitetura orientada a serviços em que os aplicativos são construídos como uma coleção de várias unidades de serviço independentes menores.
  • Microsserviço ArchiTecture é um estilo de desenvolvimento arquitetônico que permite construir um aplicativo como uma coleção de pequenos serviços autônomos desenvolvidos para um domínio de negócios.
  • A arquitetura monolítica é como um grande contêiner no qual todos os componentes de software de um aplicativo são agrupados em um único pacote
  • Em um microsserviço, cada unidade de toda a aplicação deve ser a menor e deve ser capaz de entregar um objetivo de negócio específico
  • Na arquitetura monolítica, uma grande base de código pode retardar todo o processo de desenvolvimento. Novos lançamentos podem levar meses. A manutenção do código é difícil
  • Dois tipos de microsserviços são 1) sem estado 2) com estado
  • Microsserviços em Java confiam uns nos outros e terão que se comunicar. Ajuda você a enfatizar um recurso específico e necessidades de negócios
  • A arquitetura orientada a serviços, conhecida como SOA, é uma evolução da computação distribuída baseada no modelo de design de solicitação ou resposta para aplicações síncronas e assíncronas.
  • Na SOA, os componentes de software são expostos ao mundo exterior para uso na forma de serviços, enquanto o Micro Service faz parte da SOA. É uma implementação de SOA
  • Wiremock, Docker e Hystrix são algumas ferramentas de microsserviços populares