Blog

O Que é Arquitetura de Microservices: Vantagens, Desvantagens e Exemplos de Uso

Os microsserviços estão ganhando cada vez mais popularidade entre os desenvolvedores, sendo ideais para grandes serviços online que atendem a um vasto número de usuários. Se ocorrer uma falha em um serviço, os demais continuarão a funcionar normalmente: isso é muito importante para sistemas grandes e complexos. Com inovações, pode-se simplesmente criar um novo serviço que se integrará facilmente ao sistema como um todo, sem a necessidade de resolver problemas de compatibilidade. Além disso, é possível envolver várias equipes independentes umas das outras, utilizando diferentes linguagens de programação: os microsserviços permitem isso.

A abordagem de microsserviços tem tanto vantagens quanto desvantagens. Neste artigo, examinaremos detalhadamente a essência da arquitetura de microsserviços, suas diferenças em relação à arquitetura monolítica, suas vantagens e desvantagens, bem como as características da operação de aplicativos baseados no princípio de microsserviços.

O que é arquitetura de microsserviços

A arquitetura de microsserviços é um estilo de desenvolvimento de software que envolve a divisão do monólito do sistema em componentes separados, que são serviços independentes. Cada serviço individual é projetado para realizar funções relativamente simples, o funcionamento do aplicativo é testado em tempo real com monitoramento de elementos técnicos e características de negócios. Os serviços têm limites físicos claros, o que os torna escaláveis e permite o uso de diferentes linguagens de programação no desenvolvimento. As mudanças necessárias são implementadas sem afetar o aplicativo como um todo.

Arquitetura de microsserviços e monólito

Sistemas monolíticos combinam todos os serviços do aplicativo em um único processo e depois replicam este sistema em vários servidores. Na arquitetura de microsserviços, cada serviço possui um empacotamento separado, e em diferentes servidores eles são armazenados de forma isolada uns dos outros, sendo replicados conforme necessário. Isso permite trabalhar separadamente com cada elemento funcional.

Vantagens da arquitetura de microsserviços

As vantagens dos microsserviços provaram ser tão fortes que grandes players corporativos como Amazon, Netflix e eBay os implementaram em seus sistemas.

  • Alta resiliência: se um serviço falhar, todos os outros permanecem operacionais. Assim, falhas em serviços individuais não interferem no processo de trabalho como um todo;
  • Flexibilidade: é possível tentar implementar uma nova tecnologia com um esforço mínimo. Isso será significativamente mais rápido e, em caso de falha, reverter as mudanças será simples. Alterando localmente um serviço, não corremos riscos com todo o sistema e o tempo necessário para mudanças é menor;
  • Simplicidade: quanto menos código (e cada serviço separado representa um sistema completo, então não é necessário entender uma quantidade enorme de detalhes que não dizem respeito àquela função específica), mais fácil é para os programadores entenderem como tudo funciona. Além disso, isso levará menos tempo;
  • Facilidade em colocar o código em produção: uma pequena quantidade de código garante um deploy rápido;
  • Escalabilidade: os serviços mais necessários e importantes podem ser complementados e ampliados conforme necessário. O sistema como um todo permanece o mesmo.

Comparada à monolítica, a arquitetura de microsserviços é mais flexível e permite o escalonamento independente de serviços individuais. É mais fácil fazer alterações locais no código sem arriscar todo o sistema, mas em troca disso, a complexidade da interação entre os serviços aumenta.

Desvantagens da arquitetura de microsserviços

Apesar da tendência e do grande número de vantagens da arquitetura de microsserviços, ela também possui desvantagens.

  • A comunicação entre os próprios serviços é complexa. Como cada elemento funcional é isolado, requer-se um cuidado especial ao construir uma comunicação eficaz entre eles, pois, de qualquer forma, precisarão trocar solicitações e respostas entre si. É claro que, com o aumento no número de serviços, a complexidade na construção de sua comunicação também aumentará.
  • O aumento no número de serviços também traz um aumento no número de bancos de dados com os quais esses serviços se relacionam, já que, ao contrário da arquitetura monolítica, os microsserviços não utilizam um banco de dados comum.
  • A complexidade dos testes se manifesta no fato de que primeiro é necessário entender cada serviço individualmente e depois testar sua interação correta com outros microsserviços.
  • Os microsserviços são menos adequados para uso dentro de organizações individuais, pois podem se mostrar excessivamente complexos, enquanto para serviços online de grande escala eles são uma excelente escolha.

Características da operação de aplicativos com arquitetura de microsserviços

  • Monitoramento
    Com o tempo, pequenos problemas podem levar a questões sérias. Portanto, o monitoramento oportuno e, no caso dos microsserviços, contínuo, é necessário. O monitoramento da arquitetura de microsserviços é muito mais complexo de configurar e requer maiores despesas para sua manutenção do que o monitoramento de um aplicativo monolítico.
  • Implementação da resiliência
    Tanto a arquitetura monolítica quanto a de microsserviços não podem evitar falhas durante a operação do aplicativo. Um princípio importante na criação de um aplicativo baseado em microsserviços é aceitar de antemão que falhas no sistema ocorrerão mais cedo ou mais tarde. Com essa suposição inicial, o aplicativo é criado.
    Antes de liberar o código para a produção, ele deve ser rigorosamente testado. No entanto, sempre há a possibilidade de que algum erro não seja detectado. Para esses casos, foi criada a sistema de teste de caos. Erros e problemas são criados automaticamente e intencionalmente para estudá-los antecipadamente e encontrar soluções rápidas ou métodos para preveni-los.
  • Escalabilidade
    A natureza baseada em nuvem dos microsserviços e a virtualização subjacente possuem a escalabilidade como principal vantagem. Cada serviço executa uma função determinada, todos os serviços são relativamente pequenos — essas características fazem com que a escalabilidade seja mais simples e indolor.

Quando é adequado usar a arquitetura de microsserviços


A arquitetura de microsserviços é especialmente relevante para empresas que fornecem serviços online para um grande número de usuários simultaneamente. Exemplos de tais serviços incluem grandes lojas online, plataformas de streaming, redes sociais.

Para eles, a capacidade de escalar independentemente diferentes componentes do sistema é crucial. Por exemplo, nos dias de promoções, a carga sobre o serviço de gerenciamento de pedidos aumenta significativamente, enquanto os demais serviços funcionam normalmente. Os microsserviços permitem aumentar de forma flexível a capacidade de computação e a largura de banda apenas do serviço de gerenciamento de pedidos, sem afectar outras subsistemas.

Para serviços online com um grande público, a resiliência também é crítica — se um serviço falhar, o restante do aplicativo deve continuar a funcionar normalmente. A divisão em microsserviços independentes garante esse isolamento de falhas.

Além disso, os microsserviços são convenientes para grandes equipes de desenvolvimento distribuídas — cada equipe pode trabalhar em seu próprio serviço, o que simplifica a coordenação e acelera o processo de lançamento de versões.

Ao mesmo tempo, os microsserviços podem ser uma solução excessiva para projetos menores ou sistemas internos de empresas. Nesses casos, é preferível usar uma arquitetura monolítica devido à sua maior simplicidade e baixo custo de desenvolvimento e manutenção.

Exemplos de uso da arquitetura de microsserviços

Amazon

Uma das primeiras empresas a adotar microsserviços. Toda a infraestrutura da Amazon é construída a partir de centenas de serviços independentes — para o catálogo de produtos, contas de usuário, busca, recomendações e assim por diante. Isso permite que a Amazon escale facilmente seus recursos conforme as demandas aumentam e lance novos produtos rapidamente devido ao desenvolvimento baseado em microsserviços.

Netflix

O serviço de streaming Netflix é dividido em mais de 800 microsserviços. Eles cuidam da transcodificação de vídeos, recomendações, testes A/B de interfaces e outras tarefas. A flexibilidade dos microsserviços permite que a Netflix aumente rapidamente sua capacidade de servidores durante picos de tráfego e experimente com UI/UX sem risco para o sistema.

Uber

A empresa utiliza centenas de microsserviços — para geolocalização, cartografia, processamento de pagamentos, logística e muito mais. Isso garante a confiabilidade e a resiliência do sistema sob cargas enormes, além de permitir que a Uber escale rapidamente e entre em novos mercados.

Conclusões

Os microsserviços são menos adequados para uso como arquitetura para desenvolvimento de sistemas de informação corporativos. Nesse modelo, obteremos um sistema excessivamente complexo em termos de operação e manutenção. O aumento dos custos operacionais não será compensado pelas vantagens da arquitetura de microsserviços, pois elas não se manifestarão plenamente dentro de uma única organização, mesmo que grande.

A principal área de aplicação eficaz dos microsserviços são grandes serviços online, que funcionam em tempo real para um grande número de usuários.

Você ainda tem dúvidas?
Temos um time de consultores especializados nas melhores práticas de mercado
Ao usar este site, você concorda com o uso de cookies