Arquitetura de Microservice: entenda o que é e como funciona

Rogério Marques

06 setembro 2018 - 10:00 | Atualizado em 29 março 2023 - 17:31

Homem em escritório analisando tela de computador exibindo códigos

O termo “Arquitetura de Microservice” surgiu nos últimos anos para descrever um modo específico de projetar softwares como conjuntos de serviços de implementação independentes.

Os microservices possuem muitas vantagens em relação às aplicações monolíticas, onde o código é centralizado em um único bloco.

Aplicações monolíticas sofrem do problema de SPOF (do inglês Single point of failure) ou ponto único de falha, caso parte de um sistema falhar, impedirá que todo o sistema funcione. Além disso, aumenta os custos de manutenção, pois a complexidade do código será muito maior e muito mais arriscada. Todo o sistema é acoplado, há menor escalabilidade, é necessário fazer deploy da aplicação inteira para alterar somente um componente.

Com os microservices esses problemas são minimizados, uma vez que a aplicação é dividida em módulos específicos a sua função.

Arquitetura de Microservice: entenda o que é e como funciona

Assim, é possível minimizar os SPOF uma vez que a aplicação não é completamente acoplada. Caso um módulo apresente falha, o sistema não fica totalmente comprometido. O código de cada módulo é bem menor, facilitando a manutenção.

A escalabilidade é muito maior, uma vez que os recursos necessários para o funcionamento podem ser escalados de acordo com a sua utilização.  

Build e deploy são muito mais rápidos uma vez que é necessário subir apenas o módulo que foi modificado.

Arquitetura de Microservice: entenda o que é e como funciona

O desenvolvimento é focado em produtos e não em projetos, como normalmente acontece em aplicações monolíticas. Cada equipe fica responsável pelo seu produto, fazendo com que essas equipes desenvolvam com muito mais qualidade e conheçam profundamente o seu produto assim como pode facilitar a criação de relacionamentos pessoais entre os desenvolvedores de serviços e seus usuários.

Além disso, há uma menor dependência de tecnologias, podendo ser utilizadas aquelas que melhor se adaptem à sua função.

Porém há algumas desvantagens. Como desenvolvimento de testes exigem uma maior complexidade, os desenvolvedores devem implementar o mecanismo de comunicação entre serviços. A implementação de casos de uso que abrangem vários serviços requer uma coordenação cuidadosa entre as equipes.

 

Adaptado do artigo de Martin Fowler, um dos principais geradores dessa discussão na comunidade de desenvolvimento de software.

 

Recomendados para você

Pessoas com trajes socias em reunião
Conheça os erros em gestão de talentos mais comuns nas organizações ...
Pessoas em sala de escritório utilizando computador
Cursos para turbinar o currículo do desenvolvedor ...
Pessoa utilizando computador com site de análise dados aberto
Plataforma de investimentos: conheça a solução completa da Cedro Technologies ...