O que é uma malha de serviço?

Autores

Mesh Flinders

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Malha de serviços, definida

Uma malha de serviços é uma camada de software em uma arquitetura moderna de aplicação que gerencia a conectividade entre microsserviços, permitindo que as aplicações funcionem. As malhas de serviços oferecem muitos recursos críticos, como comunicação entre serviços, descoberta de serviços, balanceamento de carga e autenticação.

Um dos maiores desafios que os desenvolvedores de aplicativos enfrentam no cenário empresarial moderno é a escalabilidade. À medida que o número de usuários de aplicação aumenta, torna-se difícil para os engenheiros de DevOps (a metodologia de desenvolvimento de software que acelera a entrega de aplicativo por meio da automação) monitorar o desempenho do serviço. Uma malha de serviços oferece características principais que ajudam a monitorar e gerenciar serviços críticos, como registro, rastreamento e controle de tráfego.

Como as aplicações se tornaram fundamentais para a transformação digital, a importância das malhas de serviços aumentou. Atualmente, eles são os principais viabilizadores de algumas das tecnologias de aplicação mais avançadas disponíveis, incluindo aplicação nativa da nuvem nativa da nuvem, microsserviço e contêiner.

De acordo com a Forbes, em 2022, 70% das organizações já executavam uma malha de serviços e 19% estavam avaliando uma.1

As mais recentes notícias de tecnologia, corroboradas por insights de especialistas.

Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.

Agradecemos sua inscrição!

Sua assinatura será entregue em inglês. Você pode encontrar um link para cancelar a assinatura em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

O que são microsserviços?

Microsserviços, também conhecidos como arquitetura de microsserviços, é uma abordagem de arquitetura nativa da nuvem em que as aplicações são criadas a partir de muitos componentes ou serviços menores e independentes. Essa abordagem permite que os desenvolvedores atualizem o código com mais facilidade e adicionem ou removam recursos e funcionalidades sem afetar o restante da aplicação, levando a uma alta escalabilidade.

As malhas de serviços são críticas para a arquitetura de microsserviços. Eles fornecem uma camada de infraestrutura altamente configurável onde todos os serviços na aplicação de microsserviços podem se conectar e trocar informações. Além de uma malha de serviços, a arquitetura de microsserviços também é usada em conjunto com a tecnologia de contêineres e sua plataforma mais popular, o Kubernetes.

Desenvolvimento de aplicações

Venha conosco: desenvolvimento de aplicações para empresas na nuvem

Neste vídeo, o Dr. Peter Haumer explica como é o desenvolvimento atual das aplicações empresariais modernas na nuvem híbrida, demonstrando diferentes componentes e práticas, incluindo o IBM® Z Open Editor, o IBM Wazi e o Zowe. 

O que são contêineres e Kubernetes?

A tecnologia conhecida como contêineres, junto com uma de suas plataformas de orquestração de contêineres mais populares, a Kubernetes, tornou-se indispensável para a funcionalidade de malha de serviços por permitir que os desenvolvedores gerenciem aplicação complexa baseada em microsserviços.

Contêineres são unidades executáveis de software que empacotam o código de aplicação juntamente com suas bibliotecas e dependências, permitindo que ela seja executada em qualquer ambiente de computação. Com a proliferação de contêineres na arquitetura de aplicações modernas, gerenciar grandes grupos de contêineres rapidamente se tornou um desafio.

Conheça o Kubernetes (também conhecido como k8s ou Kube), uma plataforma de orquestração de contêiner que se tornou uma das soluções de orquestração mais populares disponíveis no mercado atualmente. Os clusters do Kubernetes — coleções de nós que representam máquinas físicas e máquinas virtuais (VMs)— são gerenciados no plano de controle.

Outro aspecto importante da funcionalidade de malha de serviços é a maneira como o acesso aos serviços em um cluster específico é gerenciado, um processo conhecido como ingresso.

Como funciona uma malha de serviços?

As aplicações mais populares de hoje exigem que muitas cargas de trabalho ou tarefas e processos de computação sejam implementadas de uma só vez. Uma arquitetura de microsserviços permite que os desenvolvedores criem cada aplicação como uma coleção de microsserviços pequenos e independentes que são mais fáceis de gerenciar.

No entanto, para que o código de aplicação funcione, os microsserviços precisam se comunicar de forma rápida e precisa, e é nesse ponto que a arquitetura de malha de serviços é crítica. As malhas de serviços são projetadas de forma a dar aos desenvolvedores mais controle sobre a comunicação entre serviços em uma aplicação.

Em seu nível mais fundamental, as malhas de serviços dependem de um tipo de comunicação conhecido como comunicação baseada em proxy para aprimorar a capacidade de gerenciamento e o controle de aplicações baseadas em microsserviços. As funcionalidades baseadas em proxy apresentam servidores proxy (também conhecidos como proxies) que funcionam como intermediários entre o microsserviço e a Organização, permitindo que o tráfego seja roteado de e para um serviço por meio de proxies. Esse recurso, conhecido como comunicação por proxy de rede, é crítico para manter a capacidade de gerenciamento, a observabilidade e a segurança de muitas aplicações.

Além dos proxies, uma arquitetura de malha de serviços depende de dois componentes principais que permitem que ela funcione: o plano de controle e o plano de dados.

Plano de controle

O plano de controle é a parte da rede de computadores que controla como os dados são roteados entre usuários e dispositivos (também conhecidos como nós). Os planos de controle seguem regras ou protocolos de roteamento que são informados por algoritmos que determinam a melhor rota para os dados em uma rede.

Em uma malha de serviços, o plano de controle inclui proxies especificamente projetados chamados de proxies sidecar que abstraem certas funcionalidades, como monitoramento e segurança, para torná-los mais eficientes. Quando um serviço precisa se comunicar com outro serviço em uma malha de serviços, o proxy sidecar intercepta a solicitação e cria um canal seguro e criptografado para ela viajar.

Plano de dados

O plano de dados, também conhecido como plano de encaminhamento, permite que os dados sejam enviados pela rede por meio de dispositivos como roteadores e switches. Os planos de dados usam proxies sidecar para gerenciar mensagens entre serviços e funcionalidades importantes, como quebra de circuito e tentar novamente. O plano de dados também é onde os principais recursos, como balanceamento de carga, descoberta de serviços e roteamento, são realizados.

Malha de serviços versus API gateway

Além do plano de dados e do plano de controle, o gateway de interfaces de protocolo de aplicação (API) é outra parte importante da arquitetura de microsserviços que está intimamente relacionada à funcionalidade da malha de serviços.

APIs são protocolos que permitem que as aplicações de software se comuniquem e troquem dados. Os API gateways são ferramentas que atuam como intermediários entre os clientes de API - por exemplo, a popular API REST que ajuda os desenvolvedores a criar aplicações - e os serviços de back-end localizados em um servidor.

API gateways e malhas de serviços são semelhantes, pois permitem o desenvolvimento de aplicação mais eficiente. No entanto, enquanto um API gateway controla o acesso às APIs, uma malha de serviços conecta microsserviços dentro da aplicação. Malhas de serviços e API gateways são frequentemente implementados juntos para aumentar a flexibilidade e a observabilidade em um ecossistema de desenvolvimento de aplicações.

Benefícios de uma malha de serviços

As malhas de serviços e a arquitetura de microsserviços que elas possibilitam oferecem muitos benefícios críticos a uma organização. Aqui estão alguns dos mais comuns.

Observabilidade

Uma malha de serviços fornece observabilidade integrada, uma compreensão mais profunda da condição de um sistema complexo, para toda uma arquitetura de microsserviços. Isso permite que os desenvolvedores monitorem métricas importantes, como dependências, latência e taxas de erro, que são importantes para entender como um aplicativo está funcionando.

A observabilidade também ajuda na solução de problemas, na otimização do desempenho, na telemetria (registro do comportamento do sistema) e na depuração por fornecer aos desenvolvedores uma visão completa e desobstruída do funcionamento interno de um ecossistema de microsserviços.

Controle

Para que os aplicativos funcionem corretamente, os desenvolvedores e administradores de aplicação precisam controlar como os serviços se comunicam entre si no aplicativo. Uma malha de serviços aumenta os recursos de governança para as organizações que implementam arquiteturas de microsserviços - por exemplo, a maneira como as equipes aplicam os requisitos de segurança e conformidade em setores altamente regulamentados.

Além disso, as malhas de serviços fornecem camadas de infraestrutura dedicadas especificamente para lidar com as demandas de comunicação serviço a serviço com aplicações distribuídas— aplicações que são executadas em mais de um computador conectado ao mesmo tempo.

Segurança

As malhas de serviçoa ajudam a garantir a comunicação segura entre os serviços por meio de recursos como criptografia e autenticação do Mutual Transport Layer Security (mTLS). A autenticação mTLS ajuda a garantir que o tráfego em uma aplicação seja seguro e confiável em ambas as direções entre o cliente e o servidor.

O mTLS também proporciona confidencialidade de dados ao criptografar as informações enviadas pela comunicação entre serviços. Ele permite que os administradores apliquem políticas de autorização, como o acesso a endpoint específico, um processo conhecido como segurança de endpoint.

Descoberta de serviços

As malhas de serviços têm um recurso conhecido como descoberta automatizada de serviços que ajuda a reduzir a carga de trabalho de gerenciamento de endpoints de serviços, o local na malha de serviço onde um microsserviço específico pode ser acessado. Um registro de serviços permite que os serviços se encontrem e se comuniquem automaticamente, independentemente de onde estejam localizados, possibilitando que os desenvolvedores implementem novos serviços de forma rápida e fácil.

Balanceamento de carga

O balanceamento de carga, a distribuição do tráfego de rede entre vários servidores para otimizar o desempenho do aplicativo, é um recurso essencial das malhas de serviços. Usando algoritmos, a malha de serviços ajuda a equilibrar cargas de trabalho entre nós, otimizar recursos de computação e geralmente garantir a alta disponibilidade de uma aplicação.

Gerenciamento de tráfego e divisão de tráfego

As malhas de serviços fornecem gerenciamento de tráfego avançado e funcionalidades de divisão de tráfego para ajudar a otimizar o fluxo de informações e Recursos em uma rede. Embora o gerenciamento e a divisão de tráfego sejam usados para controlar o fluxo de informações em uma rede, eles têm uma diferença importante que vale a pena observar. O gerenciamento de tráfego concentra-se em mudanças sistêmicas de longo prazo na infraestrutura para melhorar o fluxo de tráfego de informações, enquanto a divisão de tráfego envolve a distribuição baseada em pesos de tráfego entre back-ends ou versões de serviço.

As malhas de serviços fornecem controle refinado e altamente específico sobre roteamento e comportamento de tráfego, permitindo transições mais suaves quando uma aplicação é atualizada para uma versão de software mais recente. Por exemplo, na popular implementação canary, uma nova versão de um aplicativo só é lançada para um pequeno grupo de usuários para testar as funcionalidades e o desempenho antes de ser disponibilizada para todos os outros.

Escolha da solução de malha de serviços certa

O mercado global de provedores de malhas de serviços já é forte e está crescendo rapidamente. De acordo com uma pesquisa recente, ela foi avaliada em US$ 0,22 bilhão em 2023 e deve crescer para US$ 5,05 bilhões até 2032, uma taxa composta de crescimento anual (CAGR) de 41,3%.2

Em um setor que cresce em um ritmo tão rápido, selecionar a solução de malha de serviços certa pode ser um desafio. Alguns fatores importantes a serem considerados incluem custo, facilidade de implementação, compatibilidade com tecnologias existentes, segurança, desempenho e suporte.

Aqui estão cinco das soluções de malhas de serviços mais populares disponíveis e uma breve visão geral do que as torna únicas.

Istio

A malha de serviços mais popular disponível é o Istio. Seu grande conjunto de funcionalidades significa que ele é altamente adaptável e adequado para cargas de trabalho de nível empresarial. O Istio é conhecido por seus recursos avançados de gerenciamento de tráfego, funcionalidades de segurança e extensibilidade, que são aprimoradas por seu grande ecossistema de colaboradores.

Como algumas outras ofertas de malhas de serviços, o Istio é um projeto de código aberto, o que significa que ele foi desenvolvido e mantido por meio de colaboração aberta e disponibilizado para qualquer pessoa usar. Funciona bem com o Kubernetes e muitas outras tecnologias adjacentes de malhas de serviços.

Linkerd

Mais leve e direto do que o Istio, o Linkerd é uma solução de malha de serviços simples que melhora o desempenho enquanto mantém baixa latência. O Linkerd tem todas as funcionalidades básicas que as empresas esperam de uma malha de serviços, incluindo balanceamento de carga, descoberta de serviços, criptografia e muito mais. Como o Istio, o Linkerd também é de código aberto.  

Malha de serviços NGINX

O NGINX é mais abrangente do que a maioria das outras malhas de serviços. Ele funciona como um servidor da web e um proxy reverso, o que significa que pode oferecer uma variedade maior de protocolos do que outras malhas de serviços. O NGINX foi projetado para máximo desempenho e estabilidade e é usado por muitos sites de alto tráfego. Assim como Linkerd, Istio e outras soluções de malhas de serviços, ele é de código aberto.

Consul

Criado pela popular empresa de infraestrutura baseada em nuvem HashiCorp, o Consul é uma malha de serviços multinuvem que oferece muitas das mesmas funcionalidades que outros service meshes populares. O Consul é uma das soluções de malhas de serviços mais flexíveis disponíveis e pode ser usado em diversos sistemas operacionais (SOs), incluindo Windows, Linux, macOS, FreeBSD e Solaris. O Consul também é de código aberto e é mais conhecido por seu popular plug-in Prometheus que aprimora os recursos de monitoramento.

Malha de aplicativos AWS

Projetada especificamente para uso com implementações de nuvem da Amazon Web Services (AWS), a malha de aplicativos da AWS é uma malha de serviços com muitas das mesmas funcionalidades que o Linkerd, Istio e outros, incluindo segurança aprimorada, gerenciamento de tráfego e observabilidade. No entanto, a AWS não é flexível e é considerada apenas uma boa opção para organizações já integradas à arquitetura da AWS.

Soluções relacionadas
IBM Enterprise Application Service for Java

Um serviço de locatário único, totalmente gerenciado, para desenvolver e entregar aplicações Java.

Explore os aplicativos em Java
Soluções de DevOps

Utilize softwares e ferramentas de DevOps para desenvolver, implementar e gerenciar aplicações nativas da nuvem em diversos dispositivos e ambientes.

Explore as soluções de DevOps
Serviços de desenvolvimento de aplicações empresariais

Com o desenvolvimento de aplicações na nuvem você só constrói uma única vez, itera rapidamente e implementa em qualquer lugar.

Serviços de desenvolvimento de aplicações
Dê o próximo passo

Os serviços de consultoria de desenvolvimento de aplicações da IBM® Cloud oferecem orientação de especialistas e soluções inovadoras para simplificar sua estratégia em relação à nuvem. Trabalhe com os especialistas em nuvem e desenvolvimento da IBM para modernizar, escalar e acelerar suas aplicações, trazendo resultados transformadores para os seus negócios.

Explore os serviços de desenvolvimento de aplicações Comece a criar com a IBM® Cloud sem custo
Notas de rodapé

Service Mesh As The Bridge To App Modernization, Forbes, março de 2023

2 Service Mesh Market Report, Business Research Insights, outubro de 2024