Drasi da Microsoft: Uma maneira simples de lidar com programação baseada em eventos.

A plataforma de processamento de dados de código aberto da Microsoft oferece uma abordagem inovadora para desenvolver e controlar aplicativos de nuvem que produzem eventos de forma contínua.

Essas opções podem incluir extensões para o Kubernetes, como o KEDA (Kubernetes Event-driven Autoscaling), ou ferramentas para desenvolvedores, como Dapr e Radius. A versão mais recente disponível é uma combinação de ferramentas de gerenciamento de sistemas e uma plataforma de aplicativos inovadora.
Qual é a definição de Drasi?
Em um post recente do CTO do Azure, Mark Russinovich, foi anunciado o Drasi, uma ferramenta projetada para identificar eventos importantes e reagir rapidamente a eles. Essa reação pode envolver a reconfiguração de uma estrutura de plataforma em caso de falha de hardware ou software, ou acionar um alerta crítico em um sistema de IoT industrial, como por exemplo, acionar respostas de emergência quando um sensor detecta um problema em um processo químico.
A maioria dos projetos de Incubações Microsoft Azure são baseados em código aberto, e Drasi segue essa tendência. Foi oficialmente submetido à Cloud Native Computing Foundation (CNCF), com uma licença Apache 2.0 e um repositório no GitHub. Para obter mais informações, visite o site de documentação do projeto.
Arquiteturas orientadas para eventos são comuns em sistemas distribuídos e, como em qualquer modelo distribuído, enfrentam desafios em grande escala. Lidar com um grande volume de eventos pode ser simples quando se trata de dezenas ou centenas por minuto, mas à medida que a aplicação cresce para milhares ou milhões de mensagens em escala global, o que funcionava anteriormente pode falhar sob essa nova carga.
Em grande escala, os sistemas baseados em eventos se tornam mais complicados. As mensagens e eventos são recebidos em várias formas e armazenados separadamente, o que dificulta a extração e processamento, frequentemente exigindo consultas complexas. Além disso, os sistemas de filas de mensagens podem ficar lentos e congestionados, resultando em atrasos ou até mesmo na perda de mensagens. Diante da necessidade de responder rapidamente a eventos, lidar com essa situação frágil torna-se desafiador em termos de uso e gestão.
Aqui é onde Drasi se destaca. Ele oferece uma forma mais eficiente de automatizar a identificação e reação a eventos importantes, seguindo a abordagem da Microsoft conhecida como “automatização de respostas inteligentes”. O objetivo é ser uma ferramenta simples que não requer um armazenamento complexo e centralizado de dados de eventos, optando por utilizar a descentralização para localizar eventos próximos de sua fonte, como arquivos de log e feeds de mudanças.
De que maneira o processo Drasi se transforma?
Apesar dos dados estarem distribuídos e armazenados em diversos formatos, Drasi possibilita a aplicação de abordagens de desenvolvimento convencionais para criar consultas e definir gatilhos que reajam às alterações nos resultados dessas consultas. Os pilares desse processo são: Fontes, Consultas Contínuas e Reações.
As fontes em uma aplicação Drasi são os diversos pontos onde os dados são inseridos e onde é possível visualizar as mudanças. Esses pontos podem variar, desde um registro em arquivo, uma modificação em um banco de dados até eventos transmitidos por uma ferramenta de publicação e assinatura como o Azure Event Grid, ou até mesmo a saída de uma função Azure.
Consultas constantes, redigidas na linguagem de consulta Cypher (CQL), supervisionam fontes em busca de mudanças nos dados, funcionando como interruptores que são acionados por uma alteração. Após o acionamento de uma consulta, o sistema emite uma resposta.
Uma reação pode ser algo tão simples quanto um aviso ou pode ser um gatilho para uma série de processos predefinidos. A natureza desses processos depende da finalidade para a qual você está utilizando o Drasi. Por exemplo, em um ambiente de Internet das Coisas (IOT) industrial, uma reação pode acionar controles de hardware para interromper um processo industrial fora de controle. Em um contexto de suporte à administração de sistemas, uma reação pode iniciar um procedimento de troca para um site de recuperação de desastres ou uma réplica de banco de dados. O Drasi permite que as reações sejam tão simples ou tão complexas conforme necessário.
Agrupe todas as suas ocasiões.
A abordagem de Drasi para computação orientada a eventos é notável pelo suporte que oferece a uma variedade de ferramentas de gerenciamento de eventos que seriam anteriormente separadas. Uma única instância do Drasi pode lidar com dados atualizados manualmente e telemetria ao vivo simultaneamente. Por exemplo, o Drasi pode ler registros de manutenção de máquinas-ferramentas e, ao mesmo tempo, receber telemetria ao vivo desses dispositivos. Isso possibilita a monitorização de janelas de manutenção programadas e telemetria que indica possíveis problemas, como detecção de problemas por meio de som por uma aplicação de aprendizado de máquina.
Em vez de possuir alertas individuais, Drasi atua como o elo que une todos esses sistemas diversos. Assim como muitas ferramentas do Azure, é altamente escalável, sendo capaz de oferecer resultados para sites individuais ou para organizações em escala global. Ele inclui uma ferramenta de linha de comando que integra suas diversas APIs de forma a facilitar a gestão dos recursos Drasi. Como toda a administração é feita por meio de APIs, há a possibilidade de desenvolver sua própria ferramenta de gestão.
O núcleo de uma aplicação Drasi consiste em consultas contínuas, uma abordagem distinta em relação às consultas convencionais. Ao realizar consultas de forma contínua, o Drasi pode monitorar e registrar as alterações em suas fontes de dados em tempo real, permitindo obter resultados instantâneos e um feed dinâmico similar ao do SQL Server, facilitando a análise no Azure Synapse sem a necessidade de processos de ETL complicados.
Criar consultas de alteração utilizando CQL.
Trabalhar com diversas fontes e tentar obter informações de mudanças delas é bastante semelhante a lidar com um banco de dados de gráficos. Por isso, não é surpreendente que Drasi utilize uma variante da linguagem de consulta de banco de dados de gráficos Cypher (CQL) do Neo4J para formular suas consultas contínuas. Se você está familiarizado com o SQL, o CQL oferece muitos elementos semelhantes para a construção de consultas, incluindo o uso do MATCH para encontrar caminhos, cláusulas COM e WHERE, bem como tipos e propriedades de dados comuns. A maior parte do necessário para criar consultas está disponível aqui, especialmente quando se trabalha com um conjunto relativamente limitado de fontes de dados.
O objetivo é utilizar consultas CQL para descrever as alterações desejadas nos dados. Ao permitir a construção da lógica em uma única consulta, é possível abranger os dados de interesse e seus relacionamentos com outras fontes. O CQL considera todas as fontes como um gráfico interligado único, eliminando a necessidade de elaborar junções complexas para unir as fontes, uma vez que todas fazem parte do mesmo espaço de eventos n-dimensional, podendo ser populado de forma densa ou esparsa conforme necessário.
A Microsoft incorporou extensões exclusivas para o CQL, com recursos inovadores que proporcionam uma nova perspectiva sobre os dados, algo crucial ao considerar consultas contínuas. Uma dessas novidades são as chamadas funções do Futuro, que expandem os recursos temporais existentes ao estabelecer limites futuros nos dados. Isso inclui a capacidade de definir um tempo específico e verificar a veracidade de um booleano nesse momento, ou se ele é verdadeiro até aquele ponto.
Estas funções são simples, mas possibilitam adicionar novos limites aos eventos. É possível criar expressões de consulta que avaliam um booleano e, assim, acionar eventos futuros com base na evolução do sistema. O uso dessas funções em conjunto com funções temporais permite observar valores em momentos específicos do passado. Com Drasi, é possível analisar a evolução dos dados-chave ao longo do tempo sem a necessidade de escrever códigos complexos, pois tudo pode ser construído dentro das consultas CQL.
A Microsoft disponibilizou um conjunto de dados de amostra em formato PostgreSQL para auxiliar no início do uso de CQL, mas falta ainda ferramentas de desenvolvimento. Uma extensão do Visual Studio Code seria útil para criar e testar consultas, diminuindo a chance de erros. Por enquanto, é mais eficaz trabalhar com dados de exemplo de diferentes fontes de eventos e com um conjunto de resultados esperados. A utilização de listas e operações baseadas em tempo pode demandar um período de adaptação, especialmente se houver intenção de utilizar funções do Futuro.
Transmita suas respostas para o mundo.
Drasi gera Respostas, as quais são acionadas com base nos resultados de uma Consulta em curso. Uma Resposta pode reunir informações de várias consultas, possibilitando a criação de comportamentos complexos a partir de combinações relativamente simples de consultas. Embora atualmente exista um número limitado de tipos de Resposta, esses devem abranger a maioria dos cenários. Uma alternativa importante é o Azure Event Grid, que oferece uma ampla variedade de ações adicionais. Alguns utilizam o protocolo SignalR baseado na web ou interagem com a plataforma de dados Dataverse line-of-business da Microsoft.
Uma última forma de reação, chamada Debut, apresenta uma tabela em constante atualização com os resultados de uma consulta contínua. Essa ferramenta possibilita a exploração do funcionamento de uma consulta em relação às fontes de dados. Seu propósito não é ser utilizada em produção, mas sim auxiliar os desenvolvedores na compreensão do funcionamento das consultas contínuas e na organização do gerenciamento de eventos relacionados aos seus resultados.
O Drasi foi criado para registrar e analisar mudanças, oferecendo informações que podem direcionar ações. Ele pode auxiliar na resolução rápida de problemas por meio de manutenção preventiva ou alertar sobre possíveis invasões e violações de segurança. O uso dessas informações depende de cada pessoa.
Uma estrutura eficiente para lidar com dados dinâmicos é algo que muitas vezes não percebemos ser necessário até tê-la em mãos. Drasi apresenta uma abordagem inovadora e inédita para lidar com sistemas que produzem uma grande quantidade de eventos, permitindo identificar os mais relevantes de forma eficaz.
Se você está trabalhando em grande escala na construção de infraestruturas e aplicativos em nuvem, a Drasi é uma ferramenta que você deve considerar, especialmente quando envolve o desenvolvimento de aplicativos, engenharia de plataforma e administração de sistemas.