Partilhar via


Implementar um sistema de notificações escalável com a Power Platform

A Microsoft Power Platform oferece uma forma de escalar aplicações empresariais enquanto se integra com serviços cloud de nível empresarial para operações de alto volume. O sistema de notificações escalável utiliza esta capacidade para enviar lembretes por SMS e email para compromissos armazenados no Microsoft Dataverse. As principais funcionalidades incluem:

  • As notificações eram ativadas automaticamente uma semana, um dia e uma hora antes da consulta.
  • Capacidade de atualizar ou cancelar notificações quando as consultas são modificadas ou canceladas.
  • O Power Apps serve como interface para que os utilizadores possam gerir as consultas de forma eficiente.
  • Suporta milhares de notificações por dia, mantendo-se fiável e com desempenho.

O sistema utiliza Azure Service Bus para agendamento de alto volume, Azure Functions para processamento e entrega, e Dataverse para acompanhamento persistente de marcações e notificações. As notificações são enviadas através do SendGrid para email e do Twilio ou Azure Communication Services para SMS.

Esta arquitetura garante escalabilidade, fiabilidade e manutenção, superando as limitações de depender exclusivamente do Power Automate para orquestrar grandes volumes de notificações.

Sugestão

Este artigo apresenta um exemplo de cenário e uma arquitetura de exemplo generalizada para ilustrar como enviar lembretes por SMS e email para compromissos armazenados no Dataverse. O exemplo de arquitetura pode ser modificado para muitos cenários e setores diferentes.

Diagrama da arquitetura

Diagrama de arquitetura que mostra o agendamento de compromissos do Power Apps com os serviços Azure.

Workflow

O fluxo de trabalho do sistema envia notificações de forma fiável nos momentos corretos e suporta atualizações e cancelamentos:

  1. Criação de consultas: Os utilizadores criam consultas através da aplicação Power Apps Canvas. A aplicação grava os dados da marcação diretamente no Dataverse, garantindo que apenas utilizadores autorizados possam aceder aos dados com base nos papéis de segurança.

  2. Desencadeamento de eventos: Quando uma consulta é criada, atualizada ou cancelada, o Dataverse desencadeia um processo do lado do servidor, como um plugin, webhook ou um fluxo leve do Power Automate. Este evento inicia a lógica de agendamento.

  3. Agendamento de notificações: O Scheduler Azure Function calcula os tempos de notificação para uma semana, um dia e uma hora antes da consulta. Depois, cria registos de notificação correspondentes no Dataverse e agenda mensagens no Azure Service Bus, armazenando números de sequência para futuras atualizações ou cancelamentos.

  4. Atualizações de marcação: Se uma marcação for modificada, a Função de Agendamento cancela notificações previamente agendadas usando números de sequência do Service Bus. Atualiza os registos de notificações no Dataverse e reagenda as notificações com base nos novos detalhes da marcação.

  5. Cancelamento de nomeações: Quando uma marcação é cancelada, a Função de Agendamento remove todas as mensagens pendentes do Azure Service Bus e atualiza os registos de notificação correspondentes no Dataverse como cancelados.

  6. Entrega de notificações: A Função de Entrega do Azure processa mensagens agendadas do Azure Service Bus. Envia notificações por email via SendGrid e SMS via Twilio ou Azure Communication Services. Após o envio, a função atualiza o registo de notificação com o estado, as retentações e qualquer informação de erro.

  7. Monitorização e observabilidade: O Application Insights e o Azure Monitor acompanham execuções de funções, saúde da fila, sucesso da entrega e falhas. As filas de mensagens não entregues no Service Bus capturam mensagens não entregues para análise posterior.

Components

  • Power Apps (aplicação Canvas): A aplicação Power Apps Canvas serve como a principal interface de utilizador para gerir compromissos. Permite aos utilizadores criar, atualizar ou cancelar compromissos numa interface intuitiva e low-code. A aplicação canvas interage diretamente com o Dataverse para ler e escrever registos de marcações e notificações. Também fornece feedback em tempo real ao utilizador sobre a criação bem-sucedida, atualizações ou cancelamento de compromissos. A interface foi concebida para validar a introdução de dados, lidar com conflitos como compromissos sobrepostos e fornecer fusos horários localizados para notificações.

  • Dataverse

    • Tabela de marcações: O Dataverse funciona como sistema de registo para toda a informação de marcações. Cada entrada de consulta inclui detalhes como o paciente ou utilizador, hora da consulta, tipo de serviço e estado. A tabela de Compromissos foi concebida para acionar eventos em operações de criação, atualização ou eliminação. A Função Azure do Scheduler ouve estes eventos para calcular e agendar notificações. O Dataverse oferece segurança integrada através de controlo de acesso baseado em funções, permissões ao nível de campo e auditoria, garantindo que informações sensíveis sobre marcações só sejam acessíveis aos utilizadores certos. Além disso, a sua integração com o Power Platform garante acesso de baixa latência e interação fluida com outros componentes.

    • Tabela de notificações: A tabela de notificações armazena metadados para cada notificação agendada, rastreando o canal (SMS ou Email), hora de entrega agendada, estado (Programado, Enviado, Falhado ou Cancelado), número de tentativas e o número de sequência do Service Bus associado. O sistema fornece rastreamento, relatórios e gestão de erros em tempo real para todas as notificações, mantendo estes dados no Dataverse. A tabela permite aos administradores auditar o histórico de entregas, monitorizar tentativas falhadas e tomar medidas corretivas, se necessário. Também suporta atualizações automáticas desencadeadas por alterações de marcação, garantindo que as notificações se mantenham precisas.

  • Azure Functions

    • Agendador: A Função de Agendador calcula os tempos de notificação com base nos detalhes das marcações. Determina lembretes para uma semana, um dia e uma hora antes da consulta e cria registos correspondentes no Dataverse. Também agenda mensagens no Azure Service Bus, armazenando os números de sequência para permitir futuros cancelamentos ou reagendamentos. Esta função consegue gerir grandes volumes de agendamentos sem degradação de desempenho e garante idempotência para evitar o agendamento de notificações duplicadas. O seu design serverless permite-lhe escalar automaticamente com base na carga de eventos e garante eficiência operacional.

    • Entrega: A Função de Entrega processa mensagens do Azure Service Bus quando chega a hora de entrega agendada. Determina o canal correto para cada notificação, como email via SendGrid ou SMS via Twilio/Azure Communication Services, e envia a mensagem em conformidade. Após a entrega, atualiza o registo da notificação no Dataverse com o estado e os dados de repetição caso ocorra uma falha. A função também implementa mecanismos de tratamento de erros, registo de logs, e mecanismos de nova tentativa, garantindo que entrega mensagens de forma fiável, mesmo em caso de falhas transitórias ou limitações de taxa impostas pelo fornecedor. Escala automaticamente com o número de mensagens no Service Bus para lidar com picos no volume de notificações.

  • Azure Service Bus: Azure Service Bus é a espinha dorsal do sistema de agendamento de notificações. Proporciona uma fila de mensagens durável, de alta taxa de envio e cronológica, garantindo que entrega as mensagens exatamente quando necessário. Os números de sequência permitem cancelar ou reagendar mensagens se houver uma alteração na marcação, mantendo a consistência. O Service Bus também suporta filas de letras mortas para capturar mensagens que falham na entrega após múltiplas tentativas, proporcionando aos administradores a capacidade de investigar e corrigir erros. A sua capacidade de desacoplar o agendamento da entrega garante que o sistema se mantém responsivo e escalável.

  • Fornecedores de email e SMS: Os serviços de comunicação externos tratam da entrega efetiva das notificações. O SendGrid é utilizado para enviar notificações por email, fornecendo mecanismos robustos de monitorização, relatórios de análise e tentativas de repetição. A Twilio e a Azure Communication Services entregam notificações SMS, suportando mensagens de alto volume com fiabilidade. A Função de Entrega interage com estes fornecedores utilizando chaves API seguras armazenadas no Azure Key Vault e implementa estratégias de retentativa para lidar com erros transitórios ou problemas de limitação de taxa. Ao subcontratar a entrega a fornecedores especializados, o sistema assegura elevada fiabilidade e reduz a sobrecarga operacional.

  • Azure Key Vault: Pode armazenar de forma segura todas as credenciais sensíveis e chaves API no Azure Key Vault. O Azure Functions acede a segredos através de identidades geridas, que eliminam a necessidade de armazenar dados sensíveis em ficheiros de código ou configuração. O Key Vault garante que encripta as credenciais em repouso, audita o acesso e aplica automaticamente políticas de rotação para manter a conformidade com a segurança.

  • Ferramentas de monitorização e observabilidade: O sistema utiliza Application Insights e Azure Monitor para fornecer visibilidade total sobre a saúde e desempenho da solução. O Application Insights acompanha execuções de funções, comprimentos de fila, estado de entrega e falhas, enquanto o Azure Monitor fornece alertas para comportamentos anormais, atrasos de mensagens ou falhas de serviço. Pode usar registos e telemetria para resolução de problemas, análise operacional e planeamento de capacidade, garantindo que os administradores têm a informação necessária para manter uma elevada fiabilidade e desempenho operacional.

Detalhes do cenário

Esta solução foi concebida para organizações que precisam de enviar lembretes atempados para consultas agendadas, como clínicas de saúde, centros de vacinação ou empresas de serviços. Os utilizadores interagem através do Power Apps para introduzir os dados das marcações, que são armazenados no Dataverse e processados imediatamente para agendar notificações. O sistema calcula automaticamente os tempos de lembrete, como uma semana, um dia e uma hora antes da consulta, e garante que esses lembretes são entregues pelo canal apropriado.

O sistema pode gerir milhares de notificações diárias sem degradação de desempenho, possibilitado pela separação entre gestão de marcações, agendamento e entrega de mensagens. Garante que os lembretes continuam a ser precisos mesmo quando as marcações são adiadas ou canceladas, reagendando ou removendo mensagens do Service Bus de forma dinâmica. Cada etapa do processo é registada e acompanhada. Esta abordagem garante que tanto os administradores como o pessoal de apoio tenham visibilidade sobre o comportamento do sistema e o estado de cada notificação enviada.

Considerações

Estas considerações implementam os pilares do Power Platform Well-Architected, um conjunto de princípios orientadores que melhoram a qualidade de uma carga de trabalho. Mais informações em Microsoft Power Platform Well-Architected.

Segurança

O sistema integra a segurança em todo o sistema, utilizando o Microsoft Entra ID para funções de identidade e Dataverse, restringindo o acesso a marcações e notificações. Os utilizadores do Power Apps autenticam-se usando o Microsoft Entra ID, garantindo que todas as interações com o Dataverse são autorizadas e registadas. O Azure Functions utiliza identidades geridas para interagir de forma segura com o Dataverse, Service Bus e Key Vault sem armazenar credenciais em código ou ficheiros de configuração.

Armazene credenciais sensíveis, como chaves SendGrid e Twilio, apenas no Azure Key Vault e aceda-as através de identidades geridas. Pode garantir ainda mais a comunicação entre os serviços Azure usando endpoints privados e redes virtuais, reduzindo a exposição à internet pública. Todas as trocas de mensagens entre os componentes do sistema cumprem padrões de comunicação encriptada para proteger dados em repouso e em trânsito.

Excelência Operacional

Alcança excelência operacional através de monitorização contínua, observabilidade e alertas automatizados. O Application Insights recolhe telemetria detalhada das Funções Azure, incluindo tempos de execução, falhas, tentativas e métricas de desempenho. O Azure Monitor acompanha o estado das filas do Azure Service Bus, identificando potenciais gargalos ou atrasos. As filas de mensagens não entregues fornecem um mecanismo para capturar e resolver problemas de mensagens que não são processadas após várias tentativas.

Os administradores podem configurar alertas para os notificar de falhas relacionadas com processamento de mensagens, falhas de fornecedores ou crescimento anormal de filas. A Dataverse mantém um registo de auditoria dentro da tabela de Notificações, permitindo aos administradores acompanhar o ciclo de vida de cada notificação. Como as Azure Functions são sem estado e escalam automaticamente, o sistema pode responder a aumentos súbitos no volume de mensagens sem intervenção manual, garantindo desempenho e tempo de funcionamento consistentes.

Eficiência de desempenho

A arquitetura está otimizada para alto desempenho e escalabilidade. O Azure Service Bus permite uma gestão eficiente das notificações agendadas sem a sobrecarga que os atrasos baseados no Power Automate introduziriam. A separação do agendamento e da entrega em Funções separadas permite que cada componente escale independentemente com base na procura. A Função de Entrega beneficia da escalabilidade automática, permitindo processar picos nas mensagens enviadas sem afetar os sistemas voltados para o utilizador.

Além disso, a utilização de identidades geridas e estratégias de cache para autenticação do fornecedor reduz a latência durante a entrega das mensagens. O sistema minimiza a sobrecarga de armazenamento desnecessária ao manter apenas os metadados essenciais no Dataverse e apoiar estratégias de arquivo para notificações mais antigas. Ao combinar as capacidades da Power Platform com a infraestrutura de mensagens escalável da Azure, o sistema assegura uma entrega de notificações rápida, eficiente e económica à escala empresarial.

Contributor

A Microsoft mantém este artigo. Os seguintes colaboradores escreveram este artigo.

Principais autores: