Obter atualizações em tempo real para alterações de dados com o Microsoft Graph
Este artigo descreve um padrão de integração comum do Microsoft Graph para um cenário empresarial que oferece melhorias de colaboração empresarial para que as aplicações móveis recebam um feed só de leitura de mensagens partilhadas do Microsoft Teams em tempo quase real.
Este cenário é um caso de utilização não interativo que se baseia em alterações de dados acionadas por eventos externos e tem os seguintes requisitos de arquitetura:
- Um tipo de integração de dados.
- Um fluxo de dados de saída dos limites do Microsoft 365 para a aplicação.
- Um volume de dados baixo por interação humana, mas um volume de dados potencialmente elevado consoante o número de utilizadores.
- Uma latência de dados quase em tempo real para gerar um feed atualizado.
A melhor opção de integração para este cenário é utilizar notificações de alteração do Microsoft Graph, que podem fornecer notificações de eventos, bem como o conteúdo de uma mensagem partilhada, e implementar webhooks. A aplicação cliente fornece um segredo do cliente e uma chave de encriptação e expõe um ponto final HTTP onde as publicações do serviço de notificação do Microsoft Graph são alteradas. A aplicação cliente pode aceitar e responder prontamente a pedidos síncronos do Microsoft Graph e pode ser dimensionada para processar eventos acionados por outros clientes que geram mensagens. Este tipo de interação da aplicação chama-se modo push.
O diagrama seguinte mostra a arquitetura desta solução.
Componentes da solução
A arquitetura da solução inclui os seguintes componentes:
- Serviço de Aplicativo do Azure permite-lhe criar e alojar aplicações Web, back-ends móveis e APIs RESTful na sua linguagem de programação preferida, sem gerir a infraestrutura. Oferece dimensionamento automático e elevada disponibilidade, suporta o Windows e o Linux e permite implementações automatizadas a partir do GitHub, do Azure DevOps ou de qualquer repositório git.
- Microsoft Entra ID, que é necessário para gerir a autenticação para as APIs do Microsoft Graph e suporta permissões delegadas e de aplicação para ativar o fluxo OAuth.
- Aplicação de funções, que é um componente sem servidor que lhe permite dimensionar para um grande volume de notificações e tem lógica de negócio para processar notificações e enviá-las para um serviço de destino.
- Fila de Armazenamento Simples, que o ajuda a remover a carga do serviço de aplicações ao manter as notificações antes do processamento assíncrono por uma instância de uma Aplicação de Funções.
- Gateway de Aplicativo do Azure, que fornece capacidades de segurança e encaminhamento da Web.
- Serviço de notificação do Microsoft Graph, que gere subscrições de notificação e entrega notificações de alteração aos clientes.
Considerações
As seguintes considerações suportam a utilização deste padrão de integração:
Disponibilidade: o Microsoft Graph chama o webhook do cliente sempre que uma nova mensagem é publicada num canal partilhado ou numa conversa. O webhook tem de ter elevada disponibilidade ao longo do dia ou até mesmo durante 24 horas.
Latência: o webhook tem de reconhecer os pedidos de notificação do Microsoft Graph no prazo de três segundos. Se o Microsoft Graph não receber um código de classe 200 neste momento, reenvia a notificação de alteração várias vezes, durante um máximo de quatro horas.
Escalabilidade: o webhook do cliente tem de ser capaz de dimensionar para um grande volume de notificações em qualquer altura do dia. Pode fazê-lo ao adicionar mais instâncias ao serviço de aplicações e instanciar mais instâncias da aplicação de funções para atualizar o serviço de destino rapidamente.
Complexidade da solução: a solução de webhook também requer código personalizado para manter subscrições e chaves de encriptação para processar os dados. Esta solução é altamente complexa devido ao número de componentes envolvidos e aos requisitos de escalabilidade e disponibilidade.