Drasi: Automação de Reações Inteligentes da Microsoft

Drasi: Automação de Reações Inteligentes da Microsoft

A equipe Microsoft Azure Incubations é um dos componentes mais interessantes da nuvem de hiperescala da Microsoft. É algo entre uma equipe tradicional de desenvolvimento de software e uma organização de pesquisa trabalhando para construir soluções para os problemas de sistemas distribuídos em escala massiva. Essas soluções podem ser extensões do Kubernetes, como o sistema KEDA (Kubernetes event-driven autoscaling) ou ferramentas de desenvolvedor como Dapr e Radius. Seu último lançamento público é um híbrido entre ferramentas de gerenciamento de sistemas e uma nova plataforma de aplicativos.

O que é Drasi?

Anunciado em uma postagem de blog recente do CTO do Azure, Mark Russinovich, o Drasi é uma ferramenta para detectar eventos críticos e responder a eles imediatamente. Essa resposta pode ser reconfigurar uma arquitetura de plataforma se houver uma falha de hardware ou software, ou pode ser disparar um alerta crítico em um sistema de IoT industrial, por exemplo, excesso de pressão ou até mesmo respostas de incêndio quando um sensor detecta um problema em um processo químico.

A maioria dos projetos do Microsoft Azure Incubations são de código aberto, e o Drasi não é exceção. Ele já foi submetido à Cloud Native Computing Foundation (CNCF), com uma licença Apache 2.0 e um repositório GitHub. Você pode encontrar mais detalhes em seu site de documentação.

Arquiteturas Orientadas a Eventos

Arquiteturas orientadas a eventos como essa são um padrão de design relativamente comum em sistemas distribuídos. Como outros modelos de desenvolvimento distribuído, elas têm seus próprios problemas, especialmente em escala. Quando você recebe dezenas ou centenas de eventos por minuto, é fácil detectar e responder às mensagens que você está procurando. Mas quando seu aplicativo ou serviço cresce para várias centenas de milhares ou até milhões de mensagens em uma plataforma global, o que funcionou para um sistema menor provavelmente entrará em colapso sob essa nova carga.

Em escala, sistemas orientados a eventos se tornam complexos. Mensagens e eventos são entregues em muitas formas diferentes e armazenados em silos independentes, tornando-os difíceis de extrair e processar e frequentemente exigindo mecanismos de consulta complexos. Ao mesmo tempo, sistemas de enfileiramento de mensagens se tornam lentos e congestionados, adicionando latência ou até mesmo deixando as mensagens expirarem. Quando você precisa responder a eventos rapidamente, esse estado frágil de coisas se torna difícil de usar e gerenciar.

A Abordagem do Drasi

É aí que entra o Drasi. Ele fornece uma maneira melhor de automatizar o processo de detecção e resposta a eventos relevantes, uma abordagem que a Microsoft descreve como "a automação de reações inteligentes". Ele foi criado para ser uma ferramenta leve que não precisa de um armazenamento centralizado e complexo para dados de eventos, aproveitando a descentralização para procurar eventos perto de onde eles são originados, em arquivos de log e feeds de alterações.

Fontes, Consultas Contínuas e Reações

Como o Drasi processa as mudanças? Embora os dados sejam descentralizados e armazenados em muitos formatos diferentes, o Drasi permite que você use técnicas de desenvolvimento familiares para criar consultas e configurar gatilhos que respondem a mudanças nos resultados dessas consultas. No centro desse processo estão três conceitos: Fontes, Consultas Contínuas e Reações.

As Fontes em um aplicativo Drasi são todos os lugares onde os dados são coletados e onde as alterações podem ser observadas. Elas podem ser qualquer coisa, desde um arquivo de log, uma atualização de banco de dados ou eventos passados ​​por uma ferramenta de publicação e assinatura como o Azure Event Grid, ou até mesmo a saída de uma Função do Azure.

Consultas Contínuas, escritas em Cypher Query Language (CQL), monitoram Fontes para alterações em dados, agindo como interruptores que são acionados por uma alteração. Uma vez que uma consulta é acionada, o sistema envia uma Reação.

Uma Reação pode ser tão simples quanto um alerta, ou pode ser uma entrada que aciona um conjunto de processos pré-configurados. Esses processos dependem do que você está usando o Drasi. Se estiver em um sistema IOT industrial, a Reação pode atuar em um conjunto de controles de hardware para desligar um processo industrial fora de controle. Em um cenário de suporte de administração de sistemas, uma Reação pode iniciar um processo de failover para um site de recuperação de desastres ou uma réplica de banco de dados. As Reações Drasi podem ser tão simples ou tão complexas quanto você precisar.

Reunindo Todos os Seus Eventos

O que talvez seja mais interessante sobre a abordagem da Drasi para a computação orientada a eventos é seu suporte para o que, no passado, teria sido muitas ferramentas diferentes de gerenciamento de eventos. Uma única instância Drasi pode trabalhar com dados atualizados manualmente junto com telemetria ao vivo. Por exemplo, a Drasi pode ser capaz de ler os logs de manutenção para um conjunto de ferramentas de máquina junto com telemetria ao vivo dos mesmos dispositivos. Uma consulta pode monitorar uma janela de manutenção programada e telemetria conhecida que indica possíveis problemas (que em si pode ser um evento gerado por um aplicativo de aprendizado de máquina que usa som para detectar problemas).

Em vez de ter alertas separados, o Drasi é a cola que une todos esses sistemas diferentes. Como muitas ferramentas do Azure, ele é muito escalável, capaz de fornecer resultados de sites únicos ou em organizações globais. Ele vem com uma ferramenta de linha de comando que envolve suas várias APIs em uma maneira de gerenciar recursos do Drasi. Como todo o gerenciamento é por meio de APIs, há a oportunidade de criar sua própria ferramenta de gerenciamento.

Consultas Contínuas com CQL

O coração de um aplicativo Drasi é um conjunto de Consultas Contínuas. Essa é uma maneira muito diferente de trabalhar com dados do que consultas tradicionais. Ao executar consultas continuamente, a Drasi pode criar um mapa de alterações em suas fontes de dados subjacentes conforme elas acontecem, com a capacidade de obter resultados pontuais, bem como um feed dinâmico que é conceitualmente como o feed de alterações do SQL Server, que fornece dados para o Azure Synapse Analytics sem precisar de ETL complexo.

Trabalhar com várias fontes e tentar obter dados de alteração delas é muito parecido com trabalhar com um banco de dados de gráficos, então não é surpresa que a Drasi use uma versão da linguagem de consulta de banco de dados de gráficos Cypher (CQL) da Neo4J para construir suas Consultas Contínuas. Se você estiver familiarizado com SQL, o CQL suporta muitas construções semelhantes para construir suas consultas. Você pode usar MATCH para encontrar caminhos, cláusulas WITH e WHERE, junto com tipos de dados e propriedades comuns. Muito do que você precisa para construir consultas está aqui, já que você está trabalhando com um conjunto relativamente restrito de fontes de dados.

O objetivo é usar consultas CQL para descrever as alterações que você está procurando em seus dados. Como ele suporta a construção de lógica em uma consulta, você pode construir uma única consulta que encapsula tanto os dados que você está olhando quanto seus relacionamentos com o restante dos seus dados em todas as suas fontes. Como o CQL trata todas as suas fontes como um único gráfico interconectado, não há necessidade de escrever junções complexas para reunir fontes. Elas são todas parte do mesmo espaço de eventos n-dimensional, que pode ser tão ricamente preenchido ou esparso quanto necessário.

A Microsoft adicionou suas próprias extensões específicas do Drasi ao CQL. Elas incluem alguns recursos interessantes que fazem você olhar os dados de uma maneira diferente — algo que é muito importante ao pensar em Consultas Contínuas. Um recurso é o que a Microsoft chama de funções Future, que vão além dos recursos temporais existentes para definir limites futuros em dados. Elas incluem a capacidade de definir um tempo e verificar se um Booleano específico é verdadeiro naquele ponto, ou se é verdadeiro até aquele ponto.

Essas são funções relativamente simples, mas permitem que você adicione novos limites aos seus eventos. Você pode criar um conjunto de expressões de consulta que avaliam um Boolean e, em seguida, usar esse resultado para disparar eventos futuros com base na maneira como seu sistema muda ao longo do tempo. Você pode usar essas funções junto com as funções temporais, que permitem que você veja valores em pontos específicos no passado. Com o Drasi, agora você pode ver como os dados principais mudam ao longo do tempo, sem precisar escrever código complexo para fazer isso, construindo tudo em funções dentro de suas consultas CQL.

A Microsoft forneceu um conjunto de dados de amostra no formato de um conjunto de dados PostgreSQL para ajudar você a começar com CQL, mas ainda estamos sem ferramentas de desenvolvimento. Uma extensão do Visual Studio Code seria útil para criar e testar consultas, reduzindo o risco de erros. Por enquanto, é melhor trabalhar com dados de amostra de suas várias fontes de eventos e com um conjunto de saídas esperadas. Usar listas e operações baseadas em tempo levará algum tempo para se acostumar, especialmente se você estiver planejando usar funções Future.

Entregando Reações ao Mundo

Drasi gera Reactions, que agem com base nos resultados de uma Continuous Query. Uma Reaction pode obter dados de mais de uma query, permitindo que você entregue comportamentos complexos de combinações relativamente simples de querys. Atualmente, há um número limitado de tipos de Reaction, mas eles devem cobrir a maioria dos cenários. Uma opção importante é o Azure Event Grid, que fornece muito mais ações avançadas. Outros usam o protocolo SignalR baseado na web ou trabalham com a plataforma de dados de linha de negócios Dataverse da Microsoft.

Um último tipo de Reação, Debut, fornece uma tabela de resultados continuamente atualizada de uma Consulta Contínua, permitindo que você explore como uma consulta funciona em relação às suas fontes de dados. Esta não é uma ferramenta para produção; em vez disso, é uma maneira de ajudar os desenvolvedores a entender como as Consultas Contínuas funcionam e como estruturar o tratamento de eventos em torno de suas saídas.

Conclusão

Coisas que mudam são interessantes por muitas razões diferentes, e o Drasi foi projetado para capturar detalhes dessas mudanças e entregá-los para que as informações possam orientar ações. Em alguns casos, o Drasi pode nos ajudar a corrigir problemas rapidamente, usando manutenção preventiva em hardware ou software. Em outros casos, ele pode nos dar um aviso antecipado de intrusões e outras violações de segurança. O que você faz com ele depende de você.

Uma estrutura leve para processar dados de alterações é uma dessas coisas que você não sabia que precisava até que ela chegou. Isso é uma coisa boa, pois Drasi oferece o que parece ser uma maneira verdadeiramente nova e inovadora de trabalhar com sistemas que geram um fluxo constante de eventos para que você possa identificar aqueles que realmente importam.

Se você estiver criando infraestruturas e aplicativos de nuvem em escala, o Drasi deve estar na sua lista de ferramentas a serem investigadas, especialmente porque ele cruza os limites entre desenvolvimento de aplicativos, engenharia de plataforma e gerenciamento de sistemas.

Conteúdo Relacionado

Vissza a blogba

Hozzászólás írása

Felhívjuk a figyelmedet, hogy a hozzászólásokat jóvá kell hagyni a közzétételük előtt.