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

⚡ Resumo Inteligente

Microsserviços é um padrão de arquitetura orientada a serviços no qual uma aplicação é construída como uma coleção de pequenas unidades de serviço independentes. Este recurso explica a arquitetura monolítica versus a arquitetura de microsserviços, suas diferenças, desafios, comparação com SOA, ferramentas populares e melhores práticas.

  • 🧩 Conceito Central: Os microsserviços decompõem uma aplicação em módulos de função única, implantáveis ​​independentemente, cada um sob a responsabilidade de uma pequena equipe de 5 a 10 desenvolvedores.
  • 📦 Contraste Monolítico: Uma aplicação monolítica agrupa todas as funcionalidades em um único pacote em um único servidor, portanto, para escalar, é necessário executar várias cópias completas.
  • ???? Microsserviço Architextura: Cada serviço lida com uma funcionalidade de negócio específica, é executado em sua própria instância e se comunica por meio de protocolos leves e sem estado.
  • 🗄️ Dados federados: Cada microsserviço possui seu próprio armazenamento de dados, portanto, uma alteração no modelo de dados de um serviço não afeta os demais.
  • 🛠️ Ferramentas e práticas: Ferramentas como WireMockDocker e Hystrix oferecem suporte a testes, implantação e tolerância a falhas; mantenha cada serviço sem estado com sua própria compilação.

Tutorial de microsserviços

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 (de 5 a 10 desenvolvedores). Nessa metodologia, grandes aplicações são divididas em unidades independentes mínimas.

O que é monolítico Archiarquitetura?

Em termos simples, podemos dizer que a arquitetura monolítica é como um grande contêiner no qual todos os componentes de software de uma aplicação são agrupados em um único pacote. Vamos analisar um exemplo de uma loja virtual no contexto de uma arquitetura monolítica.

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

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ções e avaliações, e pagamentos. Esses recursos são acessíveis aos clientes por meio de seus navegadores ou aplicativos. Quando o desenvolvedor do site de comércio eletrônico implanta o aplicativo, ele constitui uma única unidade monolítica. O código para diferentes recursos, como Busca, RevAs funcionalidades de visualização, classificação e pagamentos estão no mesmo servidor. Para dimensionar a aplicação, você precisa executar várias instâncias (servidores) dessas aplicações.

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 considerar um exemplo de um aplicativo de comércio eletrônico desenvolvido com arquitetura de microsserviços. Nesse exemplo de arquitetura de microsserviços, cada microsserviço é focado em uma única funcionalidade de negócio: Busca, Avaliação e... RevA visualização e o pagamento têm cada um sua própria instância (servidor) e se comunicam entre si.

Microservices Archiarquitetura

Microservices Archiarquitetura

No Monolítico ArchiNa arquitetura tradicional, todos os componentes se unem em um único módulo. Mas em microsserviços... ArchiNa arquitetura, eles são distribuídos em módulos individuais (microsserviços) que se comunicam entre si, como 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 ArchiNa arquitetura, os dados são federados. Cada microsserviço possui seu próprio armazenamento de dados.

Microsserviços vs. Monolítico Archiarquitetura

MicroservicesMonolí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ócio.
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 pare de funcionar, os outros podem continuar a funcionar.O isolamento de falhas é difícil. Se alguma funcionalidade específica não estiver funcionando, todo o sistema para de funcionar. Para lidar com esse problema, o aplicativo precisa ser recompilado, testado novamente e reimplantado.
Todos os microsserviços devem ser fracamente acoplados, de forma que as alterações feitas em um não afetem o outro.A arquitetura monolítica é fortemente acoplada. Alterações em um módulo de código afetam o outro.
As empresas podem alocar mais recursos para serviços que geram maior retorno sobre o investimento (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 ao serviço que é usado com mais frequência. No exemplo de comércio eletrônico acima, mais usuários consultam a lista de produtos e realizam buscas em comparação com os pagamentos, portanto, mais recursos poderiam ser alocados ao microsserviço de busca e listagem de produtos.O dimensionamento de aplicativos é desafiador e também um desperdício.
Os microsserviços permanecem sempre consistentes e continuamente disponíveis.As ferramentas de desenvolvimento ficam sobrecarregadas, pois o processo precisa começar do zero.
Os dados são federados. Isso permite que cada microsserviço adote um modelo de dados mais adequado às suas necessidades.Os dados são centralizados.
Equipes pequenas e focadas. Desenvolvimento paralelo e mais rápido.É necessário um time grande e um esforço considerável de gestão de equipe.
A mudança no modelo de dados de um microsserviço não afeta outros microsserviços.Uma alteração no modelo de dados afeta todo o banco de dados.
Interage com outros microsserviços utilizando interfaces bem definidas.Não aplicável.
Os microsserviços funcionam com base no princípio de foco em produtos, e não em projetos.Dá ênfase ao projeto como um todo.
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 microsserviços dependem uns dos outros e precisam 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 seus próprios mecanismos, resultando em uma grande quantidade de memória para dados não estruturados.
  • Gestão eficaz e trabalho em equipe são necessários para evitar problemas em cascata.
  • Reproduzir um problema será uma tarefa difícil quando ele desaparece em uma versão e retorna 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.
  • É necessária uma ampla gama de profissionais qualificados para dar suporte a microsserviços distribuídos de forma heterogênea.
  • 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 funciona como um diretório. Os aplicativos precisam consultar os serviços no registro e invocar o serviço. Em outras palavras, 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 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 único software ou aplicativo. Microsserviços são como uma trupe de dança onde cada dançarino é independente e sabe o que precisa fazer. Assim, se errarem alguns passos, sabem como voltar à sequência correta. Aqui está uma comparação detalhada entre SOA e microsserviços.

ParâmetroSOAMicroservices
Tipo de designNa 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ênciaAs unidades de negócios são dependentes.Eles são independentes um do outro.
Tamanho do softwareO tamanho do software é maior do que o de qualquer software convencional.Em microsserviços, o tamanho do software é sempre pequeno.
Pilha de TecnologiaA pilha de tecnologia é menor em comparação com microsserviços.A pilha de tecnologia de microsserviços pode ser muito grande.
Natureza da aplicaçãoDe natureza monolítica.De natureza full stack.
Independente e FocoOs 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.
desenvolvimentoO processo de implantação é demorado.A implantação é simples e menos demorada.
Custo-benefícioMais econômico.Less custo-beneficio.
GlobalLess em comparação com microsserviços.Altamente escalonável.
Logíca de negóciosOs componentes da lógica de negócios são armazenados em um único domínio de serviço, com protocolos de comunicação simples (HTTP com XML ou JSON) e orientados por API com SDKs/Clientes.A lógica de negócios pode existir em diferentes domínios, com camadas semelhantes a um barramento de serviço corporativo entre os serviços (Middleware).

Ferramentas de microsserviços

1) Wiremock: Testando Microsserviços

WireMock É uma biblioteca flexível para simular e criar mocks de serviços web. Ela permite configurar a resposta retornada pela API HTTP ao receber uma requisição específica. Também é utilizada para testar microsserviços.

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

2) Janela de encaixe

O 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 pacote único. Ele permite distribuir bibliotecas e outras dependências em um único pacote.

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

3) Histriz

Hystrix é um sistema de tolerância a falhas. Java Biblioteca. Esta ferramenta foi projetada para separar os pontos de acesso a serviços remotos, sistemas e bibliotecas de terceiros em um ambiente distribuído como microsserviços. Ela melhora o sistema como um todo, isolando os serviços com falhas e prevenindo o efeito cascata dessas 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 em um nível de maturidade semelhante.
  • Compilar um sistema separado para cada microsserviço.
  • Considere sempre cada servidor como sem estado.

Perguntas Frequentes

As funcionalidades de IA são frequentemente disponibilizadas como microsserviços individuais, permitindo que as aplicações acessem um modelo por meio de uma API sem precisar incorporá-lo diretamente. A IA também viabiliza roteamento inteligente, escalonamento automático e detecção de anomalias em diversos serviços.

Sim. As ferramentas de observabilidade baseadas em IA correlacionam logs, métricas e tracutiliza sistemas distribuídos entre serviços para detectar falhas, prever gargalos e localizar a causa raiz mais rapidamente do que a análise manual em um grande sistema distribuído.

Os microsserviços são geralmente classificados como sem estado e com estado. Os microsserviços sem estado não retêm dados entre as requisições, enquanto os microsserviços com estado mantêm dados ou estado da sessão, frequentemente com o suporte de seu próprio armazenamento de dados dedicado.

Grandes empresas de tecnologia, como Netflix, Amazon, Uber e Spotify Utilize microsserviços para escalar de forma independente e realizar implantações frequentes. Essa abordagem é adequada para aplicações nativas da nuvem com alto tráfego que necessitam de lançamentos rápidos e isolados.

Resuma esta postagem com: