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.

At MuleSoft’s Connect conference in 2016, Katharina Probst from Netflix and Uri Sarid, CTO of MuleSoft, made the point that the most successful businesses now, e.g. Under Armour, Amazon, Tesla, and Netflix, are not only competing on the goods and services they sell, but also on their ability to be digital platforms, providing innovative ways of getting those goods, services, and experiences to customers at scale and in real-time. They are able to do this by creating small services that compose themselves into processes, that evolve independently, can be built as quickly as they are needed, and are optimized for change and reuse. 
 
Adopting microservices allows organizations to achieve greater agility and realize lower costs, thanks to the inherent granularity and reusability of what constitutes a microservice. A plethora of supporting technologies and ideologies  have made the concept of microservice-based architectures a reality to businesses of any size, bringing agility and efficiencies to application development and deployment once deemed impossible.

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 sobre as abordagens de arquitetura anteriores. No entanto, ´é necessário observar várias questões ao instituir uma arquitetura de microsserviços em sua organização. As empresas precisam implementar 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 mal feito, poderá criar problemas técnicos e mais custos operacionais para a equipe de TI. Portanto, instituir microsserviços a fim 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 de plataforma holística para microsserviços, centrada em API-led connectivity. Ela não só cria o componente de integração crucial 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.