Modelo de notificação em integrações orientadas a eventos
Aprenda a projetar uma estratégia de notificação para arquiteturas orientadas a eventos.
Este documento descreve uma sugestão de implementação de um mecanismo de notificação centralizado para integrações orientadas a eventos na Digibee Integration Platform. O objetivo é garantir que eventos importantes, especialmente erros, sejam comunicados de forma confiável e escalável, permitindo que sistemas e usuários respondam de maneira adequada.
Para mais detalhes sobre integrações orientadas a eventos na Digibee Integration Platform, leia os seguintes artigos:
Em um ambiente de integração assíncrona, eventos podem ser disparados por diversos sistemas, exigindo um mecanismo robusto para notificar sistemas consumidores ou usuários finais. O modelo de notificação proposto neste documento aborda esses desafios considerando:
Baixa latência na entrega da notificação.
Garantia de entrega com tentativas de reenvio.
Flexibilidade para envio via diferentes canais (email, webhook, fila, e assim por diante).
Observabilidade para rastreamento de eventos.
Tratamento de erros com repositório centralizado e regras predefinidas.
Arquitetura
A implementação do modelo de notificação segue uma arquitetura baseada em eventos, onde:
Disparo do evento: Qualquer pipeline de negócio pode acionar o pipeline save-notification-event via evento Digibee chamado notification-event.
Armazenamento da notificação: O pipeline save-notification-event insere ou atualiza o registro no Object Storenotification-store, garantindo que mensagens duplicadas não sejam armazenadas dentro do intervalo de tempo definido.
Processamento e envio da notificação: Um segundo pipeline, send-notification-timer, consulta periodicamente os registros armazenados no notification-store e realiza o envio das notificações com base nas regras estabelecidas.
Entrega ao destino: As notificações são enviadas para os sistemas de sua preferência, como sistemas de alerta (Dynatrace, Datadog, Grafana, e-mail) ou sistemas de abertura de tickets (ServiceNow, Zendesk, Jira).
Diagrama de fluxo
Implementação na Digibee
Configuração dos pipelines
Pipeline save-notification-event:
Recebe um evento notification-event.
Verifica se a mensagem já existe no notification-store.
Insere um novo registro ou atualiza um existente, incrementando o contador de ocorrências.
Define o tempo de espera antes do envio do alerta.
Pipeline send-notification-timer:
Recupera registros do notification-store paginando a busca a cada 500 registros.
Aplica regras de criticidade para definir o destino da notificação.
Calcula o horário de envio com base no tempoEsperaAlerta.
Envia a notificação ao sistema adequado.
Exemplo de payloads
Entrada do evento notification-event (Exemplo para ServiceNow e Dynatrace)Armazenamento no notification-store
Exemplos de pipeline specs
Trigger: Scheduler | Nome do pipeline: send-notification-timerTrigger: Event | Nome do evento: save-notification-event
Estratégia de reprocessamento e regras de notificação
Evitar duplicidade: Não pode haver mensagens repetidas no mesmo pipeline dentro do intervalo definido.
Atualização de registros existentes: Se a chave já existir, o contador de ocorrências é incrementado.
Tempo para envio: O publicador define o tempo de espera.
Criticidade define o destino:
Nível 1: Apenas chamado (ex: ServiceNow)
Nível 2: Apenas alerta (ex: Dynatrace)
Nível 3: Alerta + chamado (ex: Dynatrace e ServiceNow)
Observabilidade e monitoramento
Para garantir a confiabilidade das notificações, recomenda-se:
Logging estruturado para rastrear eventos e erros.
Métricas como taxa de sucesso e tempo de resposta.
Alertas para falhas recorrentes.
Conclusão
Este modelo de notificação garante a entrega confiável e escalável de mensagens de erro em arquiteturas orientadas a eventos. Com a Digibee, é possível implementar esse modelo de forma flexível e integrada aos sistemas existentes, permitindo automação e rastreabilidade completa das notificações críticas.