Atualmente é difícil encontrar uma empresa que não faça uso de algum software ou ferramenta de análise para auxiliá-la em seus processos diários. Tais ferramentas oferecem um suporte crítico nas tomadas de decisões, especialmente quando o assunto são empresas de SaaS (Software-as-a-Service).
É vital para elas estarem a frente da competição e o melhor modo é provendo serviços mais rápidos, melhores e confiáveis através de microsserviços.
Empresas de tecnologia bem conhecidas também fizeram a transição para uma arquitetura de microsserviços. A Netflix, por exemplo, foi uma das das pioneiras no movimento dos microsserviços em 2009. Nessa época, o termo microsserviços nem sequer existia.
Operando em uma arquitetura monolítica, a Netflix lidava com dores de crescimento rápido e paralisações constantes e foi a partir da arquitetura de microsserviços que a empresa de streaming passou a implantar código milhares de vezes ao dia.
O que fato significa microsserviço
Microsserviços são uma abordagem de arquitetura voltada para a criação e desenvolvimento de software e aplicativos. A partir dessa arquitetura as aplicações podem ser desmembradas em componentes mínimos e independentes. Ainda que separados, tais componentes trabalham juntos para a execução das mesmas tarefas e cada componente é considerado um microsserviço.
O desenvolvimento de software por meio de microsserviços permite uma valorização da granularidade e da leveza, facilitando o compartilhamento de processos semelhantes semelhantes entre várias aplicações.
Além disso, microsserviços são elementos essenciais para uma criação de aplicações mais otimizada e facilitam a inovação e aceleram a introdução de novos recursos e soluções no mercado.
Microsserviços apresentam cinco características fundamentais. Eles são:
Isolados;
Autônomos;
Escaláveis;
Resilientes;
Responsivos (baixa latência).
E como posso diferenciar microsserviços de uma arquitetura monolítica?
No caso de uma arquitetura monolítica, todos os processos se encontram altamente acoplados e dessa forma atuam como um único serviço. Isso pode se tornar uma desvantagem no pico de demanda de um dos processos de um aplicativo por exemplo, significando que toda a arquitetura precisará ser escalada.
Outro ponto é que conforme a base de códigos cresce maior é a complexidade de adição ou de aprimoramento de recursos.
Isso significa que mesmo funcionando bem os aplicativos monolíticos acabam gerando frustrações, principalmente quando se trata da manutenção da boa estrutura modular, cada vez mais difícil com o tempo, já que uma alteração vai requerer todo um redimensionamento do aplicativo.
Essa complexidade pode agir como barreira e limitar a experimentação e implementação de novas ideias. Além disso existe a questão das falhas. A arquitetura monolítica aumenta o risco de disponibilidade de aplicativos, já que seus processos estão acoplados e dependem uns dos outros. O resultado é um impacto ainda maior da falha no aplicativo como um todo.
A arquitetura de microsserviços se diferencia justamente pelas duas características principais de microsserviços: autonomia e especialização.
Os componentes que executam os processos de um aplicativo são independentes, ou seja, esses serviços podem ser atualizados, implantados, operados e escalados para atender a funções específicas, sem que afetem o funcionamento de outros serviços. Isso porque não há necessidade de compartilhamento de nenhum código ou implementação destes com os demais.
Toda a comunicação entre os serviços é feita a partir de interfaces bem definidas através de mecanismos leves, muitas vezes em uma API com recursos HTTP.
6 vantagens da arquitetura de microsserviços
Vamos dar uma olhada detalhada nos benefícios da arquitetura de microsserviços.
1. Entrega contínua e agilidade
Os microsserviços conseguem agilizar o pipeline de CI/CD. Dessa forma desenvolvedores não precisam trabalhar todos juntos em elementos como interface do usuário, banco de dados ou lógica do servidor. Eles podem trabalhar simultaneamente em um único serviço. Outro ponto é que os testes novas funcionalidades ocorrem com maior facilidade, pois o desenvolvedor não precisa escrever testes de integração complexos para sua configuração monolítica.
2. Escalabilidade flexível
Escalabilidade é uma das peças-chave dos microsserviços, sendo um dos principais motivos para que uma empresa migre para uma arquitetura baseada em microsserviços. Cada um dos serviços atua como um componente separado, o que permite a cada um deles o fácil dimensionamento com ferramentas de alta demanda.
Ao utilizar microsserviços não será necessário escalar todo o aplicativo, mas somente dimensionar o serviço que está em alta demanda. Isso economiza muito dinheiro para as empresas.
Em suma, os microsserviços permitem maior disponibilidade e desempenho sem afetar outros serviços. Além disso, os times conseguem dimensionar com precisão as necessidades de infraestrutura, os custos de cada recurso e mantém o serviço disponível ainda que este esteja com um pico de demanda.
3. Fácil implantação
Microsserviços auxiliam nos processos de experimentação e reversão caso algo não seja executado de forma adequada. Isso porque eles possibilitam uma maior integração e entrega contínua, acelerando a atualização de códigos e introdução de novos recursos, ao mesmo tempo em que diminuem o custo das falhas.
4. Liberdade tecnológica
A arquitetura de microsserviços não se trata de uma abordagem generalista, já que as equipes possuem liberdade para escolher a melhor ferramenta na resolução de problemas específicos.Como consequência os times de desenvolvimento ao criar um software podem optar pelas ferramentas mais adequadas.
5. Código reutilizável
Uma vez que o software é dividido em módulos pequenos e bem definidos as equipes conseguem utilizar funções para diversas finalidades, logo um serviço desenvolvido para uma função específica pode muito bem ser utilizado como componente básico em outro recurso.
6. Resiliência
O fato de microsserviços terem maior independência torna um aplicativo mais resistente a falhas, diferente de uma arquitetura monolítica em que os erros em um único componente podem prejudicar todo o aplicativo.
Sua empresa está preparada para começar a usar microsserviços?
Muitas empresas, além da Netflix, como Amazon, Apple, Spotify e eBay aderiram à tendência. Elas dominaram a entrega contínua, DevOps, e evidenciam como a arquitetura de microsserviços pode impulsionar uma organização. No caso da Amazon o que a levou a migrar para uma arquitetura de microsserviços foram as inúmeras solicitações recebidas.
Sua antiga arquitetura de duas camadas já não suportava mais a demanda e por isso a API da Amazon precisava ser dimensionada rapidamente para lidar com todas as solicitações.
Abraçar uma arquitetura baseada em microsserviços pode trazer vários benefícios e as organizações que não souberem enxergar esse fato pode ficar para trás. Ainda sim, nem todas as empresas estão devidamente preparadas para fazer a transição de uma arquitetura monolítica para os microsserviços. Antes de mais nada é importante se certificar se sua empresa é capaz de gerenciar esse modelo de arquitetura.
Aqui estão algumas ressalvas organizacionais:
Você precisará estar equipado para provisionamento rápido e implantação de aplicativos.
A equipe deve contar com determinados recursos para acompanhar o ritmo necessário para aproveitar ao máximo os microsserviços. Caso haja uma demora para que os serviços sejam fornecidos, você terá sérios problemas. Logo para migrar para uma arquitetura de microsserviços você precisa rapidamente implantar novos serviços ou aplicativos.
Um monitoramento robusto é obrigatório
Cada serviço depende de seu próprio idioma, API e plataforma, por isso você deverá coordenar vários times trabalhando simultaneamente em diferentes entidades do seu projeto de microsserviços. A solução é um monitoramento robusto para gerenciar efetivamente toda a infraestrutura. Sem um monitoramento adequado o rastreamento de falhas será prejudicado e, consequentemente, seu aplicativo.
Você deve abraçar a cultura DevOps
Ao se trabalhar com times multifuncionais, práticas e cultura DevOps precisam ser incorporadas à sua empresa. Isso porque em uma configuração mais tradicional os desenvolvedores têm como foco recursos e funcionalidades, já o time de operações, no alcance de desafios de produção. Dentro de um a cultura DevOps, o time completo é responsável pelo provisionamento de serviços - e as falhas.
Para aqueles abraçaram a cultura DevOps, os microsserviços trazem alguns benefícios significativos, incluindo:
Implantabilidade: Microsserviços proporcionam mais agilidade, o que melhora a capacidade de implantar novas versões de um serviço. Tal rapidez é resultado dos ciclos de construção, de teste e de implantação mais curtos.
Confiabilidade: Uma falha em um microsserviço só afetará esse microsserviço específico e seus consumidores.
Disponibilidade: Anunciar uma nova versão de um microsserviço específico pouquíssimo tempo de inatividade quando comparado a implantação de uma nova versão de serviço na aplicação monolítica.
Modificabilidade: Microsserviços permitem maior flexibilidade no consumo de novas estruturas, bibliotecas, fontes de dados e outros recursos.
Gestão: Microsserviços podem alavancar a metodologia ágil, na qual o esforço para se desenvolver um aplicativo é dividido entre times menores e que trabalham de forma mais independente.
Os testes podem ser complexos
Microsserviços não possuem testes diretos, já que cada um dos serviços apresenta suas próprias dependências, algumas diretas, outras transitivas. Conforme o time de desenvolvedores adiciona novos recursos, novas dependências também irão aparecer. Outra questão é o aumento da complexidade ao mesmo tempo em que o número de serviços cresce.
Quer se trate de erros de banco de dados, latência de rede, problemas de cache ou indisponibilidade de serviço, os microsserviços precisa ser capaz de lidar com um nível razoável de falhas. Logo, testes de resiliência e de injeção de falhas são primordiais.