É provável que os microsserviços sejam pelo menos tão populares entre executivos e líderes de projeto quanto entre desenvolvedores. Essa é uma das características mais incomuns dos microsserviços, pois o entusiasmo com a arquitetura normalmente é reservado às equipes de desenvolvimento de software. A razão para isso é que os microsserviços refletem melhor a maneira como muitos líderes de negócios desejam estruturar e administrar suas equipes e processos de desenvolvimento.
Em outras palavras, os microsserviços são um modelo de arquitetura que facilita melhor um modelo operacional desejado. Em uma pesquisa da IBM de 2021 com mais de 1.200 desenvolvedores e executivos de TI, 87% dos usuários de microsserviços concordaram que a adoção de microsserviços vale a despesa e o esforço.
Aqui estão apenas alguns dos benefícios corporativos dos microsserviços:
Implementável de forma independente
Talvez a característica mais importante dos microsserviços seja que, como os serviços são menores e implementáveis de forma independente, não é mais necessário um ato do congresso para alterar uma linha de código ou adicionar um novo recurso na aplicação.
Os microsserviços prometem às organizações um antídoto para as frustrações viscerais associadas a pequenas mudanças que levam muito tempo. Não é necessário um Ph.D. em ciência da computação para ver ou entender o valor de uma abordagem que facilita melhor a velocidade e a agilidade.
Mas a velocidade não é o único valor de projetar serviços dessa maneira. Um modelo organizacional emergente comum é a reunião de equipes multifuncionais em torno de um problema de negócios, serviço ou produto. O modelo de microsserviços se encaixa perfeitamente nessa tendência porque possibilita que uma organização crie equipes pequenas e multifuncionais em torno de um serviço ou uma coleção de serviços e faça com que operem de forma ágil.
O acoplamento frouxo dos microsserviços também cria um grau de isolamento de falhas e melhor resiliência nas aplicações. E o tamanho reduzido dos serviços, combinado com seus limites e padrões de comunicação claros, facilita que os novos membros da equipe entendam a base de código e contribuam com ela rapidamente, um claro benefício em termos de velocidade e moral dos funcionários.
Ferramenta certa para o trabalho
Nos padrões tradicionais de arquitetura de n camadas, uma aplicação normalmente compartilha uma pilha comum, com um grande banco de dados relacional que oferece suporte a todo a aplicação.
Essa abordagem tem várias desvantagens óbvias, a mais significativa delas é que todos os componentes de uma aplicação devem compartilhar uma pilha, um modelo de dados e um banco de dados comuns, mesmo que haja uma ferramenta clara e melhor para o trabalho para determinados elementos. Isso contribui para uma arquitetura ruim e é frustrante para os desenvolvedores que estão constantemente cientes de que há uma maneira melhor e mais eficiente de construir esses componentes.
Por outro lado, em um modelo de microsserviços, os componentes são implantados de forma independente e se comunicam por meio de uma combinação de REST, streaming de eventos e agentes de mensagens, portanto é possível que a pilha de cada serviço individual seja otimizada para esse serviço. A tecnologia muda o tempo todo, e uma aplicação composto por vários serviços menores é muito mais fácil e menos dispendioso de evoluir com uma tecnologia mais desejável à medida que ela se torna disponível.
Dimensionamento preciso
Com microsserviços, serviços individuais podem ser implantados individualmente, mas também podem ser dimensionados individualmente. O benefício resultante é óbvio: feitos corretamente, os microsserviços exigem menos infraestrutura do que aplicações monolíticas porque permitem o dimensionamento preciso somente dos componentes que exigem isso, em vez de toda a aplicação no caso de aplicações monolíticas.
Desafios dos microsserviços
Os benefícios significativos dos microsserviços vêm com desafios significativos.
Passar do monólito para os microsserviços significa muito mais complexidade de gerenciamento - muito mais serviços, criados por muito mais equipes, implantados em muito mais lugares. Problemas em um serviço podem causar ou ser cautilizados por problemas em outros serviços.
Os dados de log (utilizados para monitoramento e resolução de problemas) são mais volumosos e podem ser inconsistentes entre os serviços. Novas versões podem causar problemas de compatibilidade com versões anteriores. As aplicações envolvem mais conexões de rede, o que significa mais oportunidades para problemas de latência e conectividade.
Uma abordagem de DevOps pode resolver muitos desses problemas, mas a adoção do DevOps tem seus próprios desafios.
No entanto, esses desafios não impedem que os não adotantes adotem microsserviços, nem que os adotantes aprofundem seus compromissos com microsserviços. Os dados da pesquisa da IBM acima mencionados revelam que 56% dos não usuários atuais provavelmente ou muito provavelmente adotarão microsserviços nos dois anos seguintes e 78% dos usuários atuais de microsserviços provavelmente aumentarão o tempo, o dinheiro e o esforço que investiram em microsserviços.