O que são microsserviços? Quais as vantagens? O que devo estar atento para utilizar?
Cada vez mais, as empresas estão investindo em arquiteturas baseadas em microsserviços para seus produtos ou sistemas como uma abordagem confiável para acelerar as entregas de novas versões, otimizar performance, melhorar a experiência de seus clientes e reduzir custos.
De acordo com a pesquisa ‘Microservices bring faster application delivery and greater flexibility to enterprises’, do TechRepublic Premium, 73% dos entrevistados já incorporaram este tipo de arquitetura no desenvolvimento de aplicativos. Para aqueles que utilizam os microsserviços, os principais benefícios estão na rapidez para a implementação (69%), na flexibilidade para responder às mudanças (61%) e na agilidade de expansão de novos recursos em aplicativos (56%).
Os microsserviços são um tipo de arquitetura de software cuja construção se dá a partir de um conjunto de aplicações modulares e que podem ser complementares entre si. Na prática, isso significa que cada módulo tem uma interface e executa seu próprio processo e, geralmente, se comunicam usando APIs.
Muitos consideram que os microsserviços são a evolução da arquitetura orientada a serviços (SOA) e um modelo oposto à arquitetura monolítica, que é quando os módulos de uma aplicação estão concentrados em um único processo e respondem ao mesmo banco de dados, recursos e memória.
Vantagens de implementação
A criação de aplicativos pela lógica de microsserviços permite o desenvolvimento de sistemas mais flexíveis, escaláveis e de fácil manutenção, quando comparado aos sistemas monolíticos, além de simplificar a migração para a nuvem. Por essas características, empresas como Netflix, Amazon e Spotify adotam fortemente esse modelo de negócios.
Para se ter uma ideia de como a estrutura de microsserviços funciona na prática, um dos clientes da Iteris possuía uma aplicação com mais de 60 milhões de usuários (com picos de milhões de acessos simultâneos), organizada em arquitetura monolítica, com um único banco de dados. Por conta dessas características (e alguns outros fatores), o sistema apresentava lentidão e travamento por falta de recursos, além da dificuldade em escalar a infraestrutura.
Executando um projeto especificamente para solucionar estes problemas, a Iteris segmentou essa aplicação e seus bancos de dados, de forma que cada parte da aplicação foi separada em módulos diferentes e migrada para a nuvem. Assim, foi possível otimizar a performance dos serviços, agregar escalabilidade e reduzir custos de maneira significativa, bem como resolver os problemas de lentidão e travamento, melhorando a experiência dos usuários.
Confira algumas das principais vantagens do uso de microsserviços a seguir:
- Flexibilidade: reutilização em diferentes projetos para diferentes contextos de negócio que utilizam o mesmo serviço.
- Possibilidade de uso de diferentes tecnologias e linguagens de programação para cada serviço.
- Escalabilidade: maior capacidade para acompanhar o crescimento das operações de uma empresa sem comprometer alcance e produtividade.
- Abordagem descentralizada: é possível implementar, melhorar e corrigircada serviço de maneira independente.
- Segurança otimizada: como cada parte tem seu próprio banco de dados, uma violação que acontece em um serviço não afeta as outras áreas.
O que devo estar atento para utilizar?
Com todas essas vantagens somos inclinados a acreditar que todo sistema deve ser desenvolvido utilizando arquitetura de microsserviços, contudo, isto não é verdade. Como toda tecnologia, existem cenários que essa arquitetura funciona em sua máxima capacidade, entretanto existem armadilhas e desvantagens que devemos ter em mente. Veja algumas a seguir:
- Testes e debugs podem se tornar complicados uma vez que os logs estão segmentados entre os serviços, além de que para testar a solução completa são necessários todos os serviços essenciais implantados.
- Múltiplos databases podem complicar o gerenciamento e em cenários de altos volumes de dados eles podem se tornar um gargalo entre os serviços.
- Comunicação complexa entre os serviços, como cada serviço opera de maneira independente eles precisam trocar informações e isso pode ser um desafio na implementação.
- Empresas pequenas ou sem cultura madura de desenvolvimento podem sofrer com a redução de velocidade de implementação em razão da complexidade imposta pela arquitetura de microsserviços.
Os microsserviços podem ajudar a aumentar a eficiência de equipes de TI multidisciplinares, sobretudo ao seguirem as práticas de integração e entrega contínua de DevOps, e permitir que os profissionais trabalhem em itens separados sem afetar outras partes do aplicativo, contudo é necessário experiência e compreensão para evitar as armadilhas que uma arquitetura mais complexa impõe para sua TI.