Afinal o que são microsserviços?

Por Monica Nietsche em

Imagine que uma aplicação é um quebra-cabeças grande e complexo, no qual todas as peças são importantes para o todo. Cada pecinha seria um microsserviço que, apesar da individualidade (tamanho, forma e etc), precisa estar conectada às outras para que juntas completem o quebra-cabeças.

Aprofundando mais o entendimento, podemos definir que os microsserviços são uma nova maneira de criar aplicações, onde as aplicações são divididas em serviços menores e independentes, que não precisam de uma linguagem de programação específica. Ou seja, as equipes de desenvolvimento podem usar as ferramentas de linguagem com as quais se sentem mais confortáveis ​​e ainda obter sinergia no processo de desenvolvimento de aplicações.

Com microsserviços, aplicações grandes e complexas podem ser divididas em blocos menores que, ao serem recompostos, oferecem toda a funcionalidade de uma aplicação altamente complexa e de grande escala.

Em 2016, Katharina Probst (Netflix) e Uri Sarid (MuleSoft), na conferência Connect da MuleSoft, afirmaram que as empresas bem-sucedidas aumentaram o nível da competição. Ou seja, atualmente elas estão competindo não apenas nos produtos e serviços que vendem, mas também em sua capacidade de serem plataformas digitais.

Isto implica em investir em estratégias inovadoras para oferecer bens, serviços e experiências aos clientes de forma escalável e em tempo real. Essas empresas são capazes de fazer isso criando pequenos serviços que se compõem em processos, que evoluem de forma independente. Desta forma, é possível otimizar as mudanças e a reutilização dos serviços.

Por que utilizar microsserviços?

A adoção de microsserviços permite que as organizações alcancem maior agilidade e reduzam custos de desenvolvimento, graças à granularidade inerente à capacidade de reutilização que é característica de um microsserviço.

Uma infinidade de tecnologias, inclusive open source, tornaram o conceito de arquiteturas baseadas em microsserviços uma realidade para muitas empresas. Este modelo gera agilidade e eficiência para o desenvolvimento e a implantação de aplicações.

Estas tecnologias podem ser usadas em conjunto com ferramentas de conteinerização e orquestração de containers, como o Docker e o Kubernetes, além das ferramentas que tornam os processos baseados em SOA mais acessíveis e os processos de design orientados a domínio.

Combinando isso, cria-se um ambiente de desenvolvimento que se concentra mais na colaboração do que na governança de código, resultando em maior produtividade.

O que é uma arquitetura de microsserviços?

Um estilo de arquitetura de microsserviços propõe a ideologia na qual se desenvolve um único aplicativo como um conjunto de serviços pequenos, com um único foco e de implantação independente. Cada microsserviço é executado em seu próprio processo e se comunica com um mecanismo leve, geralmente uma API de recurso HTTP.

Esses serviços são encapsulados para recursos de negócios específicos e são implantados de forma independente, usando um mecanismo totalmente automatizado.

Os microsserviços podem ser alinhados com a migração para ofertas baseadas em nuvem, onde várias aplicações podem ser orientadas por um conjunto compartilhado de serviços.

Além disto, uma arquitetura baseada em microsserviços mostra-se útil para implementações de nuvem pública, privada e híbrida, em que o conceito de usar uma coleção de pequenos serviços independentes pode ser acessado usando uma interface leve, como uma API RESTful.

Os riscos de uma arquitetura de microsserviços

O perigo que qualquer nova tendência de arquitetura representa é a possibilidade de ser considerada a melhor opção para resolver os problemas da TI, simplesmente por ser a mais moderna. Isto pode acarretar no risco de sua implantação ser feita sem levar em consideração pré-requisitos, como: modelo operacional de TI, infraestrutura e conjuntos de habilidades do desenvolvedor.

Uma estratégia de arquitetura de microsserviços deve adotar uma abordagem cuidadosa e planejada para obter o máximo benefício.

Recomendamos enfaticamente o desenvolvimento e a criação de microsserviços que encapsulem recursos para determinados domínios de negócios. O risco de não fazer isso é que você acabará construindo um conjunto monolítico de microsserviços, uma vez que os desenvolvedores agem de forma independente.

Em outras palavras, as organizações podem acabar com uma dispersão esparsa de microsserviços, com a complexidade adicional da distribuição, gerando uma redução no retorno geral do investimento.

As organizações que buscam adotar os microsserviços devem esperar que as equipes de desenvolvimento coordenem os esforços e sigam planos claros.

Também é recomendável que você estabeleça a disciplina rigorosa de entrega contínua e tenha as ferramentas necessárias para a automação do pipeline de liberação.

A falta de coordenação e automação de equipes no estilo DevOps significará que provavelmente a sua iniciativa de microsserviços trará mais dores do que benefícios.

FONTE: Blog Vertigo