Arquitetura de Microservice: entenda o que é e como funciona
Por Rogério Marques
06 setembro 2018 - 10:00 | Atualizado em 29 março 2023 - 17:31
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.
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.
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.
Deixe um comentário