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:

Cenário

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:

  1. Disparo do evento: Qualquer pipeline de negócio pode acionar o pipeline save-notification-event via evento Digibee chamado notification-event.

  2. Armazenamento da notificação: O pipeline save-notification-event insere ou atualiza o registro no Object Store notification-store, garantindo que mensagens duplicadas não sejam armazenadas dentro do intervalo de tempo definido.

  3. 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.

  4. 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

  1. 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.

  2. 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-timer
Trigger: 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.

Atualizado

Isto foi útil?