ZYLK Alcança Serviços de IoT Simplificados com Otimização do APISIX

May 26, 2023

Case Study

Visão Geral

Alfonso González é um Desenvolvedor de IA e IoT na ZYLK, líder em otimização de soluções de código aberto e na promoção da transformação digital na Espanha. Alfonso compartilhou sua experiência sobre como a ZYLK utilizou o APISIX para comunicações MQTT e implementou cibersegurança nessa solução. Ele disse: "Seguro, confiável e de alto desempenho, o APISIX é provavelmente o melhor gateway para APIs."

Desafios

  • Problemas relacionados ao roteamento MQTT, rede K8S e comunicação HTTP.
  • Gerenciar e manter cada endpoint e roteamento acessível era desafiador, resultando em custos significativos de tempo e esforço.
  • Acomodar novos usuários na rede era difícil, pois eles precisavam se familiarizar com toda a arquitetura antes de acessar qualquer serviço ou endpoint.

Resultados

  • A ZYLK resolveu seus problemas de comunicação HTTP e MQTT ao implementar o APISIX.
  • A ZYLK usou o APISIX como um proxy TCP para criar uma rota de fluxo seguro do Raspberry Pi para o sistema de filas RabbitMQ na nuvem, garantindo a confidencialidade e integridade da transmissão de dados.
  • A ZYLK experimentou melhorias significativas na infraestrutura, que se tornou mais amigável ao usuário, resultando em economias substanciais de tempo e esforço e, finalmente, levando a uma maior produtividade.

Informações de Contexto

A ZYLK é uma consultoria de TI experiente, especializada em Big Data, portais e sites Liferay, e Inteligência Artificial há mais de 15 anos. A empresa tem sido pioneira na otimização de soluções de código aberto e na promoção da transformação digital para diversos clientes, incluindo empresas privadas, administrações públicas e órgãos governamentais em toda a Espanha e Europa desde 2004.

A ZYLK depende exclusivamente de software de código aberto para fornecer soluções, pois acredita que o software de código aberto oferece inúmeras vantagens sobre alternativas proprietárias, como custo-benefício, flexibilidade, transparência e suporte da comunidade. Antes de implementar o APISIX, a equipe tinha que lidar com seus endpoints de comunicação um a um e referenciar diretamente cada endpoint do cliente. Isso levou a custos significativos de tempo e esforço associados ao gerenciamento e manutenção de cada endpoint e roteamento acessível.

Os principais pontos problemáticos do processo anterior incluíam acomodar novos usuários na rede, que precisavam se familiarizar com toda a arquitetura antes de acessar qualquer serviço ou endpoint. Além disso, a equipe enfrentou problemas de roteamento MQTT, questões relacionadas à rede K8S e problemas de comunicação HTTP.

Seleção Técnica

A ZYLK trabalha exclusivamente com software de código aberto, incluindo muitos projetos Apache. Portanto, uma solução Apache seria interessante de tentar ao procurar um gateway de API. Após cerca de seis meses pesquisando uma solução para seus problemas e comparando com o Kong Gateway e o HAProxy, a ZYLK acabou escolhendo implementar o APISIX. As razões são as seguintes:

1. O APISIX é mais simples e possui plugins de segurança mais abrangentes com um painel de controle amigável.

O APISIX fornece uma interface direta e fácil de usar com um conjunto abrangente de plugins de segurança, o que facilita o gerenciamento e a proteção do gateway de API. O painel de controle amigável também permite uma configuração e gerenciamento mais fáceis do gateway de API.

2. O APISIX tem suporte para múltiplos protocolos, não apenas HTTP.

O APISIX suporta uma ampla gama de protocolos, tornando-o uma ferramenta versátil para gerenciar diferentes tipos de tráfego de API. Essa flexibilidade permite que os usuários gerenciem todo o tráfego de API em um só lugar, simplificando sua infraestrutura e reduzindo a complexidade.

3. O APISIX tem a capacidade de redirecionar mensagens MQTT recebidas com mTLS entre o cliente e o servidor.

O suporte do APISIX para mensagens MQTT e criptografia mTLS fornece uma camada adicional de segurança para a comunicação entre clientes e servidores. Com esse recurso, as mensagens MQTT recebidas podem ser redirecionadas com segurança através do APISIX, garantindo que sejam criptografadas e autenticadas antes de chegar ao destino. Isso aumenta a segurança geral do sistema e protege informações sensíveis contra acesso não autorizado ou adulteração.

O APISIX provou ser uma adição valiosa às soluções da ZYLK, fornecendo uma maneira mais simples e segura de gerenciar suas necessidades de gateway de API.

Introdução à Arquitetura

1. Dispositivos industriais: PLCs registram dados de máquinas de controle climático (em edifícios remotos)

Primeiramente, o foco está em dispositivos industriais, como PLCs, que são usados para registrar dados gerados por máquinas de controle climático. O sistema de controle climático está localizado em um edifício remoto, que é considerado a infraestrutura de computação de borda. Os dados gerados por esses dispositivos precisam ser armazenados nos servidores em nuvem. A nuvem tem duas partes que compartilham dados entre si, e os dados são conectados por protocolos industriais.

2. Protocolos industriais: Modbus e BACnet são usados para ler dados dos PLCs

Para ler os dados diretamente dos PLCs, são utilizados módulos no BACnet. A ZYLK planeja traduzir esses módulos e as informações do BACnet para TCP para facilitar o gerenciamento. Uma vez que os dados estão em um formato adequado, eles são enviados para os servidores em nuvem usando MQTT. Embora o MQTT seja simples de usar para dispositivos IoT, lidar com ele na nuvem apresentou alguns desafios para a ZYLK, especialmente em relação à implementação de medidas de cibersegurança.

3. Comunicação MQTT: A conversão TCP é feita e os dados são enviados para um servidor em nuvem via MQTT

A ZYLK usa o APISIX como sua solução para comunicações MQTT seguras em seu caso de uso. Os dados gerados pelas máquinas de ar condicionado industrial são coletados pelos PLCs e traduzidos para a linguagem TCP por um gateway TCP para Modbus, depois enviados para um Raspberry Pi. Os dados devem ser enviados através do protocolo MQTT para chegar a um sistema de filas, que pode ser Mosquitto ou RabbitMQ, e a ZYLK usa o APISIX para realizar isso.

edge-infrastructure

O objetivo de armazenar esses dados é ter registros históricos do funcionamento das máquinas, que são usados para construir modelos de aprendizado de máquina na nuvem. A ZYLK usa modelos NTL para treinar e alimentar esses dados. A infraestrutura de borda é construída usando um diagrama simples, com as máquinas de ar condicionado industrial gerando dados à esquerda e sendo coletados pelos PLCs.

O Raspberry Pi estava enviando mensagens MQTT de forma não segura, o que representou um problema para a ZYLK, pois eles precisavam que as mensagens fossem seguras, pelo menos do APISIX para o exterior, já que o Raspberry Pi está localizado em um edifício remoto. A ZYLK não se preocupava tanto com a segurança uma vez que as mensagens chegavam ao APISIX, pois o sistema de filas, RabbitMQ, estava localizado em seu próprio servidor. No entanto, garantir a segurança da primeira parte da comunicação era crucial para garantir a cibersegurança e as mensagens criptografadas.

4. Modelos de ML: Uma vez na nuvem, os dados são armazenados e usados para treinar e alimentar modelos LSTM

cloud-edge-infrastructure

Finalmente, na nuvem, há um cluster Kubernetes com o banco de dados NIFI. Os dados gerados pelos dispositivos industriais são armazenados na nuvem e usados para treinar e alimentar modelos LSTM.

Processo de Implementação

Passo 1: Habilitar o Plugin

A ZYLK descreve os passos que tomou para habilitar o APISIX para funcionar como um proxy TCP e criar uma rota de fluxo do APISIX para o sistema de filas RabbitMQ. Primeiro, eles habilitaram o plugin de proxy MQTT ao descomentar algumas linhas no arquivo de configuração e permitir que a porta especificada funcionasse como um processo de fluxo para mensagens TCP. É importante notar que, ao configurar isso, eles ainda podiam usar todos os outros recursos do APISIX e trabalhar com APIs REST e o protocolo HTTP sem problemas.

enable-the-plugin

Passo 2: Criar a Rota de Fluxo

Em seguida, a ZYLK criou a rota de fluxo usando um objeto especial no APISIX que é semelhante a estradas, mas não aparece no painel de controle. Eles usaram um comando simples para especificar o plugin que estavam usando, o nome e a versão do protocolo MQTT, e o SNI (server name indication) para corresponder ao seu certificado para comunicação segura. Eles especificaram o nó upstream que hospeda o serviço RabbitMQ ou qualquer outro sistema de filas que preferissem usar. Habilitar o APISIX como um proxy TCP e configurar rotas upstream permitiu que a ZYLK enviasse mensagens MQTT com segurança do Raspberry Pi para o sistema de filas RabbitMQ na nuvem. Isso garantiu a cibersegurança e as mensagens criptografadas necessárias para seu caso de uso. A capacidade de ainda usar outros recursos do APISIX e trabalhar com APIs REST e o protocolo HTTP tornou a solução flexível e adaptável às suas necessidades. A ZYLK testou com sucesso sua solução com o Mosquitto Broker e descobriu que funcionava perfeitamente.

create-the-stream-route

Passo 3: Assinar e Carregar Certificados

Após criar a rota de fluxo, o próximo passo foi criar e assinar certificados e carregá-los na instância do APISIX. Eles usaram um script Python para criar objetos SSL com o certificado, chave e SNI, garantindo que o SNI correspondesse ao especificado na rota de fluxo.

sign-and-load-certificates

A ZYLK enfatiza a importância de garantir que o SNI esteja correto. Uma vez que os certificados foram carregados, o TLS mútuo foi estabelecido entre o cliente e o servidor, com ambos mostrando seus certificados. Com essa configuração, a ZYLK teve comunicação segura do APISIX para o exterior. Eles também poderiam criptografar a comunicação entre o APISIX e seu upstream, se necessário, mas optaram por deixá-la não criptografada. A ZYLK usou o APISIX para outros usos e descobriu que o plugin forneceu funcionalidades adicionais. Eles redirecionaram o tráfego recebido para brokers MQTT, usando um ID de cliente para dividir mensagens em tópicos diferentes, se necessário. E a autenticação MQTT também foi possível.

O uso do APISIX e do MQTT permitiu que a ZYLK resolvesse problemas únicos e expandisse suas capacidades além de questões típicas relacionadas ao HTTP. Ao criar um canal de comunicação seguro, eles puderam armazenar e analisar dados gerados por equipamentos industriais e usá-los para treinar modelos de aprendizado de máquina para manutenção preditiva.

Conquistas após o Uso do APISIX

A ZYLK recomenda fortemente o APISIX e está muito disposta a recomendá-lo a seus parceiros de negócios. Ao descrever o APISIX para um amigo, Alfonso González diria: "O APISIX é um serviço de gateway de API da Apache que fornece muitos recursos para roteamento, incluindo autenticação, limitação de taxa e rastreabilidade." Alfonso acredita que o APISIX é o melhor gateway para APIs.

O caso de uso da ZYLK envolveu dispositivos industriais, protocolos industriais, comunicação MQTT e modelos de ML. Os benefícios que a ZYLK obteve ao usar o APISIX incluem:

1. Envio seguro de mensagens MQTT com o APISIX em ambientes industriais

Dispositivos industriais, como PLCs, registram dados de máquinas de controle climático, que são traduzidos para TCP e enviados para servidores em nuvem usando MQTT. O APISIX foi usado para enviar mensagens MQTT com segurança do Raspberry Pi para o sistema de filas RabbitMQ na nuvem, garantindo a cibersegurança e as mensagens criptografadas necessárias para seu caso de uso.

2. Habilitar comunicação segura com o Plugin de Proxy MQTT e TLS Mútuo

A ZYLK habilitou o plugin de proxy MQTT e criou uma rota de fluxo usando um objeto especial no APISIX. Eles também assinaram e carregaram certificados com um script Python, garantindo que o SNI correspondesse ao especificado na rota de fluxo. Ao estabelecer o TLS mútuo entre o cliente e o servidor, a ZYLK conseguiu ter comunicação segura do APISIX para o exterior.

3. Expandir capacidades com o APISIX

A implementação bem-sucedida do APISIX e do MQTT pela ZYLK permitiu que eles resolvessem problemas únicos e expandissem suas capacidades além de questões típicas relacionadas ao HTTP. Eles puderam armazenar e analisar dados gerados por equipamentos industriais e usá-los para treinar modelos de aprendizado de máquina para manutenção preditiva.

A ZYLK está comprometida em permanecer na vanguarda de sua indústria e fornecer aos seus clientes as melhores soluções possíveis. À medida que continuam a enfrentar os desafios do futuro, eles certamente encontrarão novas e inovadoras maneiras de aproveitar tecnologias como o APISIX para alcançar seus objetivos.

Resumo

Antes de implementar o APISIX, a ZYLK tinha que gerenciar suas comunicações endpoint por endpoint, o que era demorado e ineficiente. Eles enfrentaram vários problemas relacionados ao roteamento MQTT, rede K8S e comunicação HTTP.

Após pesquisar várias soluções de gateway de API, a ZYLK acabou escolhendo implementar o APISIX devido aos seus recursos abrangentes de segurança, painel de controle amigável e simplicidade. Com o APISIX, a ZYLK conseguiu expor com segurança uma porta do roteador para comunicações de mensagens MQTT e roteamento interno de API. Eles também conseguiram redirecionar mensagens MQTT recebidas com mTLS entre o cliente e o servidor. A ZYLK também experimentou melhorias significativas em sua infraestrutura, resultando em economias de tempo e esforço.

Em termos de objetivos futuros, a ZYLK vê a cibersegurança, a convergência de TI e OT e o aprendizado profundo explicável como os maiores desafios no horizonte para sua indústria. Nos próximos seis meses, a equipe planeja continuar trabalhando em projetos de P&D e desenvolver seu próprio serviço de IoT.

Tags: