Arquitetura e Funcionamento

Sensedia Service Mesh é nossa solução para o gerenciamento de microsserviços. Ele abstrai problemas de redes envolvidos na comunicação entre serviços e possibilita a aplicação fácil e rápida de políticas de roteamento, segurança e implementação de versões diferentes de serviços. Ele também oferece ferramentas de observabilidade, com visualização de telemetria e dados de rastreamento, e tudo por meio de uma interface gráfica intuitiva e de baixo código.

Esta página traz um resumo da arquitetura e funcionamento do produto. Nas páginas seguintes, você poderá ler sobre como utilizar cada funcionalidade do Sensedia Service Mesh e tirar o maior proveito delas.

Conceitos

Para entender o que a Sensedia está oferecendo, é importante ter uma ideia dos conceitos por trás de service meshes e dos problemas que eles buscam solucionar.

Arquitetura de microsserviços e service meshes

A arquitetura de microsserviços postula o desenvolvimento de aplicações não como um todo unificado, o chamado monolito, que é construído e implementado de uma só vez. Ao invés disso, as aplicações compostas por microsserviços formam um sistema distribuído, dividido em muitas partes menores que se comunicam geralmente por HTTP.

Isso permite que cada microsserviço seja desenvolvido individualmente, sob a responsabilidade de um time de desenvolvimento menor — com liberdade de escolha de tecnologia e linguagem de programação — e implementado de forma autônoma, o que facilita a manutenção da aplicação como um todo.

Como qualquer estilo arquitetural, entretanto, os microsserviços geram problemas específicos que devem ser tratados de forma holística a fim de tirar o máximo proveito dos seus enormes benefícios.

Esses problemas dizem respeito sobretudo à comunicação entre os serviços, particularmente às regras de descoberta, roteamento e segurança. De forma simplificada, a questão é definir como os serviços "saberão" quais outros serviços fazem parte da aplicação como um todo, com quais outros serviços cada um pode se comunicar diretamente, e quais ações são permitidas dentro dessa rede.

Service meshes são utilizados exatamente para resolver essas questões de rede. Eles se caracterizam como uma camada de infraestrutura que provê um controle central para um sistema distribuído. Assim, é possível definir de forma declarativa o comportamento da rede, identidade dos nós (nodes) e o fluxo de tráfego por meio de políticas.[1]

Além de gerenciar aplicações já desenvolvidas como microsserviços, os service meshes são uma ótima opção para modernizar aplicações monolíticas sem precisar reprogramá-las, seja criando uma frente de microsserviço para acessar a aplicação e aumentar suas funcionalidades por meio de novos serviços, ou definindo oportunidades de quebrar o monolito em porções menores. Ou seja, service meshes auxiliam a gerenciar e integrar legados.

Sensedia Service Mesh

O Sensedia Service Mesh permite a criação de políticas de tráfego e segurança a um grupo de microsserviços com controle central (e esse grupo é chamado de mesh). Todo o sistema é observável e gera gráficos para que você acompanhe o funcionamento de suas aplicações.

Ao mesmo tempo, ele se integra totalmente à Sensedia API Platform, que se encarrega do tráfego Norte-Sul (para dentro e para fora dos meshes), enquanto o Sensedia Service Mesh controla o tráfego Leste-Oeste, ou seja, a comunicação entre serviços.

Sua maior vantagem é que tudo isso pode ser feito por meio de uma interface gráfica intuitiva, que facilita o trabalho dos times de desenvolvimento e operações, mas que também suporta configurações por kubectl, aproveitando a experiência do usuário com a linha de comando.

Arquitetura

Nosso produto foi desenvolvido a partir do Istio e roda em Kubernetes.

O Istio é um service mesh de código aberto para rodar um sistema distribuído de microsserviços. Para saber mais sobre ele, acesse a documentação específica aqui.

Nós abstraímos as funcionalidades do Istio, permitindo acesso a elas por meio de uma interface gráfica, adicionamos gerenciamento de usuários, e integramos ferramentas extras de rastreamento e visualização de métricas que necessitariam, se trabalhando diretamente com o Istio, de aplicações terceiras.

Essa abstração permite a integração direta das funcionalidades da Sensedia API Platform com a implementação do Istio.

Funcionamento

Este diagrama representa, de forma simplificada, o funcionamento do Sensedia Service Mesh.

diagram pt

A Plataforma de APIs da Sensedia expõe os serviços por meio de APIs, o API Gateway aceita o tráfego vindo de fora e o distribui para dentro do sistema — tráfego Norte-Sul (para dentro e para fora de um mesh). A partir daí, o Sensedia Service Mesh toma conta do tráfego Leste-Oeste, entre serviços.

A central de controle configura proxies para os serviços com as políticas inseridas pela interface do Sensedia Service Mesh. Essas políticas combinam regras de segurança (com distribuição de certificados pelo sistema), descoberta de serviços e roteamento de tráfego. O sistema é observável por meio de headers seguindo a especificação OpenTracing propagados na comunicação entre os serviços. Esses headers alimentam gráficos de métricas e compilações de rastreamento.

Além dessas funcionalidades de gerenciamento e visualização, o sistema de descoberta e roteamento de tráfego do Istio permite implementar versões diferentes de um serviço ao mesmo tempo. Isso permite que você crie Canary Releases com facilidade, definindo regras para separar tráfego de uma versão a outra do produto, seja por porcentagem de requisições ou por controle de headers. Também é possível testar novas versões de serviços sem impactar o tráfego real, direcionando uma parte das requisições tratadas por um serviço para uma outra versão dele, que não terá que responder à requisição (o que é chamado de traffic shadowing).

Requisitos mínimos

O Sensedia Service Mesh reconhece e gerencia os meshes implementados em sua plataforma de containers. Para rodá-lo, você deve ter Istio (versão 1.9 ou superior) e Kubernetes instalados. Para que as funcionalidades de observabilidade operem corretamente, também é preciso que os clusters tenham Kiali e Jaeger instalados.

Quanto aos microsserviços, não há requisitos referentes à tecnologia e linguagens de programação utilizadas para desenvolver os serviços implantados nos meshes. Entretanto, para que as funcionalidades de rastreabilidade sejam aplicadas, é necessário que alguns headers HTTP sejam propagados ao longo da comunicação entre os serviços seguindo a especificação OpenTracing.

Para acessar a interface gráfica, a resolução mínima é de 1366 × 768 pixels. O Google Chrome é o navegador oficialmente suportado.


1. Calcote, Lee; Butcher, Zack. Istio Up & Running: using a service mesh to connect, secure, control, and observe. Sebastopool: O’Reilly, 2020.
Thanks for your feedback!
EDIT
How useful was this article to you?