O que são microsserviços?

O que são microsserviços?

Microsserviços e suas arquiteturas relacionadas estão ganhando força em empresas de todos os portes. No entanto, muitos responsáveis pela tomada de decisão de TI ainda não sabem ao certo o que são os microsserviços e o que uma estrutura de microsserviços significa para o desenvolvimento de soluções de TI nas empresas atuais. Para DevOps, os microsserviços também estão tendo um grande impacto. O ciclo de desenvolvimento ágil está reunindo o desenvolvimento e as operações, duas entidades de TI que antes eram distintas, em uma ideologia de projeto comumente executada.

Em um nível muito alto, os microsserviços podem ser conceitualizados como uma nova maneira de criar aplicativos corporativos, onde os aplicativos são divididos em serviços menores e independentes que não dependem de uma linguagem de codificação específica. Em outras palavras, as equipes de desenvolvimento são capazes de usar as ferramentas de linguagem com as quais se sentem mais confortáveis e ainda conseguem ter sinergia no processo de desenvolvimento de aplicativos. Usando a ideologia dos microsserviços, aplicativos complexos de grande porte podem ser divididos em pequenos componentes modulares de executáveis que, quando recompostos, oferecem toda a funcionalidade de um aplicativo de grande escala e altamente complexo.

Na conferência Connect da MuleSoft em 2016, Katharina Probst da Netflix e Uri Sarid, CTO da MuleSoft, destacaram que as empresas mais bem-sucedidas hoje em dia, como McDonald's, Under Armour, Amazon, Tesla e Netflix, não estão apenas competindo nos bens e serviços que vendem, mas também em sua capacidade de serem plataformas digitais, oferecendo maneiras inovadoras de levar esses bens, serviços e experiências aos clientes em grande escala e em tempo real. Para fazer isso, elas criam pequenos serviços que se compõem em processos que evoluem de forma independente, podem ser construídos na velocidade necessária e são otimizados para mudança e reutilização. 
 
Com a adoção de microsserviços, as organizações têm maior agilidade e alcançam custos mais baixos, graças à granularidade inerente e reutilização do que constitui um microsserviço. Uma infinidade de tecnologias e ideologias de apoio tornaram o conceito de arquiteturas baseadas em microsserviços uma realidade para empresas de qualquer porte, trazendo agilidade e eficiência que antes eram considerados impossíveis ao desenvolvimento e à implementação de aplicativos.

Esses conceitos e tecnologias incluem o aumento da disponibilidade de contêineres, ferramentas e processos que tornam os processos baseados em SOA mais atingíveis, bem como processos de projeto orientados por domínio. Combinar esses fatores cria um ambiente de desenvolvimento que se concentra mais na colaboração do que na governança de código, resultando em maior produtividade.

A arquitetura de microsserviços definida

Um estilo arquitetônico de microsserviços emprega a ideologia do desenvolvimento de um único aplicativo como um conjunto de serviços pequenos, altamente focados e com implementação independente. Cada microsserviço é executado em seu próprio processo e se comunica com um mecanismo leve, muitas vezes uma API de recursos HTTP. Esses serviços são encapsulados para recursos de negócios específicos e são implementados de forma independente usando um mecanismo totalmente automatizado.

Os microsserviços podem ser alinhados com a mudança para ofertas baseadas na nuvem, onde vários aplicativos podem ser orientados por um conjunto compartilhado de serviços. No entanto, uma arquitetura baseada em microsserviços revela-se útil para implementações de nuvem pública, privada e híbrida, onde o conceito de usar uma coleção de pequenos serviços independentes pode ser acessado com uma interface leve, como uma API RESTful.

É possível debater que o conceito de uma arquitetura baseada em microsserviços pode ser rastreado até os primórdios da SOA (Service Oriented Architecture), que teve foco na descoberta de serviços e uso anônimo de serviços baseados em UDDI (Universal Description, Discovery, and Integration), princípios que ainda são válidos hoje. No entanto, os microsserviços avançam várias etapas usando as APIs RESTful, juntamente com plataformas e contêineres virtualizados para criar uma integração de serviço híbrido que substitui aplicativos monolíticos de base de código único. É a composição desses serviços independentes que cria a experiência associada a uma aplicação monolítica. A SOA, como foi originalmente concebida, falhou simplesmente porque os componentes modulares adequados para executar essa abordagem não estavam prontamente disponíveis.

No entanto, os microsserviços, que se baseiam nos princípios da SOA, são agora uma realidade com a introdução de novas tecnologias que constituem os três principais componentes modulares de uma arquitetura de microsserviços. Com esses componentes modulares prontamente disponíveis e estabelecidos, surgem os seguintes benefícios:

  • Contêineres: os contêineres de software criaram uma estrutura padronizada para todos os serviços, abstraindo o código do SO principal do hardware subjacente. A padronização oferecida pelos contêineres elimina o que antes era um processo de integração doloroso em um mundo de infraestrutura heterogênea. Graças a fornecedores como o Docker, os contêineres revolucionaram a forma como os desenvolvedores criam e implementam aplicativos.
  • APIs: a adoção e o aumento dos recursos oferecidos pelas APIs criaram um formato robusto e padronizado para comunicações entre aplicativos, serviços e servidores. As APIs REST (Representation State Transfer), especificamente, são fundamentais para a arquitetura de microsserviços: uma API RESTful divide uma transação para criar uma série de pequenos módulos, onde cada um aborda uma parte subjacente específica da transação. Essa modularidade oferece aos desenvolvedores muita flexibilidade para o desenvolvimento de APIs leves, que são mais adequadas para aplicativos executados no navegador.
  • Infraestruturas de nuvem escaláveis: as infraestruturas de nuvem pública, privada e híbrida agora são capazes de fornecer recursos sob demanda e podem efetivamente serem dimensionadas para fornecer serviços, independentemente das cargas ou do tráfego associado. Isso traz elasticidade aos microsserviços que, por sua vez, ficam mais adaptáveis e eficientes.

Os riscos de uma arquitetura de microsserviços

O perigo que qualquer nova tendência arquitetônica representa é que ela possa ser percebida como uma solução simples para os problemas de TI e ser implantada como a "última novidade" sem considerar pré-requisitos, como o modelo operacional de TI, a infraestrutura e as habilidades dos desenvolvedores.

Uma estratégia arquitetônica de microsserviços deve receber uma abordagem cuidadosa e medida para proporcionar o máximo de benefícios: recomendamos projetar e construir microsserviços que envolvam recursos para domínios de negócios específicos e com a segurança em mente. O risco em não fazer isso é que você acabará criando um conjunto monolítico de microsserviços, já que os desenvolvedores atuarão de forma independente. Em outras palavras, as organizações podem acabar com um conjunto díspar de microsserviços com todos os pontos negativos do monólito, a complexidade adicional da distribuição e uma redução no retorno geral do seu investimento. As organizações que desejam adotar microsserviços devem esperar que as equipes de desenvolvimento coordenem esforços e sigam planos claros. 

Também recomendamos que você estabeleça uma rigorosa disciplina 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 da equipe nos moldes do DevOps pode levar sua iniciativa de microsserviços a trazer mais desvantagens do que benefícios. 

Uma abordagem de plataforma à arquitetura de microsserviços

Os microsserviços são claramente uma tendência importante e bem-vinda no setor de desenvolvimento de software e têm muitas vantagens em relação às abordagens de arquitetura anteriores. No entanto, é necessário observar várias questões ao instituir uma arquitetura de microsserviços na sua organização. As empresas precisam implementar os microsserviços devido à facilidade de implementação e natureza ágil, mas, se não forem gerenciados adequadamente, essa arquitetura poderá gerar desorganização e falta de governança. Os produtos desenvolvidos com uma arquitetura de microsserviços também precisarão ser integrados às pilhas de tecnologia legadas e, se isso for feito incorretamente, poderá criar problemas técnicos e mais custos operacionais para a equipe de TI. Portanto, instituir microsserviços como maneira de criar vantagem competitiva e ajudar sua empresa a inovar mais rapidamente vai além da simples seleção de produtos e software. Você também deve considerar as pessoas, os processos e a cultura dentro da organização.
É por isso que recomendamos uma abordagem holística de plataforma aos microsserviços, centrada em conectividade API-led. A conectividade API-led não só cria o componente de integração essencial para o funcionamento adequado da sua pilha de tecnologias, como também permite que desenvolvedores dentro e fora da equipe central de TI criem soluções de maneira gerenciável, reutilizável e governada, eliminando o problema de proliferação de aplicativos que dificulta o controle da empresa. A abordagem de plataforma da MuleSoft fornece um modelo operacional exclusivo para permitir que tanto o LoB quanto a TI criem, inovem e forneçam novas soluções sempre que necessário em toda a organização, mantendo a visibilidade e a governança necessárias. 

No ambiente comercial hipercompetitivo de hoje, é importante se destacar e proporcionar uma experiência positiva a clientes, funcionários e parceiros. Os microsserviços são essenciais para uma empresa conseguir isso. Executados de maneira holística e gerenciável, prevê-se que a arquitetura de microsserviços se torne um novo padrão tecnológico para as empresas. 

Dê uma olhada em outros recursos sobre as práticas recomendadas para implementar uma arquitetura de microsserviços.