Pular para o conteúdo
OS Domains
Use case

Notifications bimodais: steady state baixo, bursts de milhões, entrega em segundos.

A OS Domains entrega notificações de alto volume para SaaS e plataformas operacionais cujo tráfego é bimodal: um steady state baixo e bursts de centenas de milhares de mensagens quando um evento desencadeia fanout sobre a base de clientes. A capacidade de burst é pré-provisionada com 2× de headroom em cada PoP para absorver até 5M de mensagens por hora com latência P99 de submission de 180 ms e SLA contratual de 99,99%. Os webhooks assinados com HMAC-SHA256, em formato CloudEvents v1.0 e com buffer de replay de 7 dias, são o contrato entre as duas plataformas, e os pools de IP separados para transacional, notification e marketing evitam que uma queixa em um degrade a entrega dos alertas que importam.

As notifications de alto volume vivem entre o transacional e o marketing: volume alto que pode saltar 100-1000× em um evento, mas com a urgência per-mensagem do transacional porque o destinatário está esperando. Projetamos para o burst especificamente: 2× headroom permanente em cada PoP, capacidade burst-absorption pré-provisionada, filas de despacho separadas para tráfego time-sensitive vs background. A diferença se vê no dia que sua plataforma tem incidente e precisa avisar a 50K clientes em 5 minutos sem que o provedor de e-mail se engasgue.

Os webhooks não são nice-to-have aqui: são o contrato entre sua plataforma e a nossa. HMAC-SHA256 com timestamp anti-replay, formato CloudEvents v1.0, replay buffer de 7 dias se seu endpoint cair, retry com backoff exponencial. Para clientes Performance e Enterprise nosso próprio on-call está assinado a alertas de degradação da sua conta: se sua latência cair, paginamos a nosso engenheiro em 5 minutos antes que você escreva o ticket.

Em resumo

  • Burst absorvido até 5M de mensagens por hora por PoP com 2× de headroom pré-provisionado: sem cold-start de autoescala no caminho crítico de um alerta sensível ao tempo.
  • Latência P99 de submission de 180 ms mesmo em burst, com SLA contratual de 99,99% e failover multi-PoP em menos de 30 s em Performance e Enterprise.
  • Pools de IP separados para transacional, notification e marketing: uma queixa em um pool não degrada a entrega dos outros.
  • Webhooks HMAC-SHA256 em formato CloudEvents v1.0, com retry de 30 min e buffer de replay de 7 dias drenado em ordem cronológica se seu endpoint cair.
  • Smart fanout que suaviza a taxa por provedor de caixa e timezone-aware scheduling para digests, mantendo cada pico sob o headroom de 2× sem throttling.
Números-chave
Capacidade burst pico
5M msg/h
Latência P99 submission
180 ms
SLA contratual
99,99%
Webhook replay buffer
7 dias

O que são notificações de alto volume?

As notificações de alto volume se situam entre o transacional e o marketing em termos de volume, mas compartilham com o transacional a sensibilidade ao tempo. Os exemplos típicos: notificações de produto SaaS (alguém te mencionou, seu build falhou, sua fatura vence em 3 dias), alertas financeiros (limiar de saldo, detecção de fraude, advertência de segurança sobre login desde IP desconhecida), páginas operativas (seu incidente está escalando, seu deploy terminou, seu monitoring disparou alerta), notificações de marketplace (você recebeu uma mensagem, alguém comprou seu produto, alguém deixou review). O volume é alto —às vezes milhões diários distribuídos em uma base de clientes— mas cada mensagem individual precisa aterrissar em segundos porque há um destinatário esperando. O problema arquitetônico é sustentar taxa pico de envio sem sacrificar latência por mensagem, e isso exige disciplina específica que muitos provedores não têm porque projetaram para ou transacional puro ou marketing puro.

Por que o burst bimodal quebra a maioria dos provedores?

Um burst de notificações é bimodal por natureza: 95% do tempo você está enviando a 1-5K/hora, e então um evento desencadeante —um deploy, um movimento de mercado, um incidente de segurança em um dos seus clientes, uma queda de serviço de um provedor que afeta vários— provoca que você envie 500K mensagens em 15 minutos. A maioria dos provedores maneja o steady state corretamente e se engasga no burst. O engasgo adota formas distintas: SES limita rate e enfileira internamente com atraso multi-minuto que é invisível ao cliente até que apareça; SendGrid Pro throttlea para proteger sua infraestrutura compartilhada; os serviços gerenciados com caps de capacidade horários rejeitam submissions até que a janela do rate se resete. Projetamos especificamente para o caso de burst: 2× headroom permanente em cada PoP, capacidade de burst-absorption pré-provisionada, filas de despacho separadas para tráfego time-sensitive vs background. A ideia: você não quer descobrir que seu provedor se engasga no dia que sua plataforma tem um incidente.

O que torna esta categoria distinta do marketing e do transacional.

As notificações diferem do marketing porque o destinatário está realmente esperando (engajamento não é opcional, é o propósito completo da mensagem). Diferem do transacional porque o volume por evento pode ser 100-1000× o steady state, o que faz com que o dimensionamento estável não baste. Compartilham com o transacional o requisito de baixa latência, e compartilham com o marketing o requisito de alto throughput. A maioria dos senders nesta categoria opera um setup híbrido: um pool transacional pequeno para OTPs e password resets, um pool de notificações que escala para bursts, e às vezes um pool separado de marketing. Suportamos os três na mesma conta com pools de IP separados, estatísticas separadas, webhooks separados routáveis a endpoints distintos conforme o fluxo. A separação importa porque um complaint spike em marketing não deve degradar a entrega dos seus alertas de segurança.

Por que webhooks confiáveis importam tanto em notifications?

Em notifications, os webhooks não são nice-to-have: são o contrato entre sua plataforma e a nossa. Cada vez que enviamos um evento (queued, delivered, bounced, deferred, complained, replied) entregamos o webhook assinado com HMAC-SHA256 sobre o body completo, com timestamp Unix em epoch segundos dentro da assinatura para proteção anti-replay com janela 5 minutos. O header de assinatura é X-OSD-Signature com formato v1=hex_hash. A idempotência é responsabilidade do receiver mas fazemos o que podemos para facilitar: cada evento leva um message_id único, então seu endpoint pode usá-lo como idempotency key e descartar duplicatas durante uma janela razoável (recomendamos 7 dias, que coincide com nosso retention). O esquema CloudEvents v1.0 torna nosso payload interoperável com AWS EventBridge, Google Eventarc, Knative e Argo Events sem parsing custom. Se seu endpoint cair, reenviamos por 30 minutos com backoff exponencial (5s, 25s, 125s, 625s, 3125s); passada essa janela os eventos vão ao buffer de replay de 7 dias onde ficam disponíveis para drenagem cronológica quando seu endpoint voltar. O replay manual desde painel está disponível para Performance e Enterprise.

Cross-PoP failover e por que Performance vale a pena para notifications.

Os clientes Performance e Enterprise têm routing multi-PoP: se um PoP perde transit (porque um dos IXs cai, porque há um BGP problem que um upstream demora a resolver, porque um datacenter tem incidente com seu transit principal), o tráfego se desvia ao PoP alterno em menos de 30 segundos. Os planos Starter e Standard são single-PoP e veriam a interrupção durante toda a duração do incidente upstream. Recomendamos Performance para qualquer workload de notifications que não tolere uma hora de regional outage, que é basicamente todas as notifications operacionais críticas. A diferença de preço entre Standard e Performance se amortiza na primeira vez que seu PoP principal tem incidente e o tráfego muda transparentemente, o que acontece estatisticamente 1-3 vezes por ano dependendo da região.

Como se gerencia o fanout a múltiplos provedores em um evento crítico?

Quando um único evento dispara fanout (status page incident → 50K customer alerts simultâneos, deploy completado → 10K developer notifications, market move → 200K subscriber alerts), a dinâmica com provedores de caixa muda. Enviar 50K mensagens em 5 minutos a uma mistura de Gmail, Outlook 365, Yahoo e Exchange corporativos está bem para Gmail (aceita essa taxa com pool adequado), mas Outlook rate-limita por domínio remetente e Yahoo deferre se seu backend vê um spike. Nosso scheduler suaviza a taxa per-provedor automaticamente para que nenhum provedor receba o burst completo de uma vez: se você tem 50K mensagens para enviar e seu pool tem capacidade sustentada de 5K/min, o scheduler distribui o burst em 10-12 minutos repartido por provedor. O destinatário recebe a mensagem em segundos individuais, mas a fila interna evita gerar um padrão que ativaria defesas anti-abuse do lado do receiver. Isso se chama smart fanout na nossa documentação e está ativo por padrão em Standard, Performance e Enterprise.

Padrões de digest: o caso especial de notificações agrupadas.

Algumas notificações são por natureza digest: o resumo diário de atividade, a lista semanal de mentions, o relatório das últimas 24 horas. Estas não têm a urgência per-mensagem dos alertas operacionais, mas têm um padrão de envio massivo concentrado em uma janela curta (tipicamente entre 7:00 e 9:00 hora local do destinatário). O desafio operacional é enviar a uma base de 1-10M destinatários em distintos fusos horários e respeitar o "envia às 8:00 hora local de cada usuário" sem que o envio total se concentre em poucas horas UTC que saturariam os pools. Suportamos timezone-aware scheduling: você passa à API o timestamp desejado em UTC mais a timezone preferida do destinatário, e nossa fila calcula o momento real de envio e o distribui ao longo das 24 horas seguindo o padrão geográfico da sua base.

Como se integra com PagerDuty, Opsgenie e status pages?

O uso mais crítico de notifications é o de incidentes operacionais: quando sua plataforma tem um incidente, os assinantes da sua status page recebem e-mails imediatos, os oncall dos seus clientes recebem page emails (se você integrou com o sistema deles), e sua própria equipe recebe escalation emails. A latência importa mais aqui que em qualquer outro lugar: um minuto de atraso no incident notification pode significar que um cliente fica sabendo pelo Twitter antes que por e-mail, o que danifica a confiança. Integramos com PagerDuty, Opsgenie e os status page providers mais comuns (Statuspage da Atlassian, Better Stack, Instatus, Cachet) via webhooks bidirecionais: eles disparam o evento, nós entregamos as mensagens, as acks voltam ao seu sistema para que seu dashboard mostre quantos assinantes receberam e quantos fizeram click. Para Performance e Enterprise, nosso próprio on-call está assinado a alertas de degradação da sua conta —se sua latência ou entrega cair, paginamos a nosso engenheiro em 5 minutos antes que você escreva o ticket.

Notifications de segurança: login alerts, anomalias de fraude, mudanças de senha.

As notificações de segurança merecem tratamento à parte porque caem em uma zona cinza regulatória. Um e-mail de "foi iniciada sessão na sua conta desde uma nova localização" não é marketing nem transacional puro: é uma notificação de proteção ao usuário. No Brasil, a Resolução BCB 4.893/2021 sobre política de segurança cibernética exige medidas técnicas razoáveis para detecção e notificação de eventos de risco para fintechs reguladas. Na UE, sob PSD2 SCA (Directiva (UE) 2015/2366), estas notificações são requerimento explícito para entidades financeiras quando se detecta risco. Para SaaS B2B a pressão regulatória vem de NIS2 (Directiva (UE) 2022/2555) e das obrigações de reportes de incidentes do Regulamento DORA. A consequência operacional: este tráfego não aceita nem um atraso de 60 segundos porque o atacante pode ter já trocado a senha e escalado privilégios. Cap diário por destinatário muito alto (os usuários sob ataque recebem muitos eventos seguidos), latência P99 medida e reportada separadamente, pool de IP dedicado distinto do de marketing e do transacional geral.

Como resolvemos

As capacidades específicas que importam para este caso.

01

Capacidade burst a 5M/h por PoP

Headroom pré-provisionado em cada PoP UE significa que um burst de 500K mensagens é submetido em menos de 6 minutos e despachado ao MX destinatário em menos de 12 minutos. Sem pre-warming exigido para bursts previsíveis.

02

Filas separadas para tráfego time-sensitive

Marca as mensagens com priority=high na API e saltam qualquer fila batch do cliente, indo direto à lane de despacho por IP. A diferença é de segundos quando o sistema está sob carga normal e de minutos quando está sob carga pico.

03

Webhooks real-time com replay 7 dias

Cada evento (queued, delivered, bounced, complained, replied) entregue em menos de 1 segundo desde a mudança de estado. HMAC-SHA256 com timestamp anti-replay. Se seu endpoint cair, retry 30 min com backoff exponencial e buffer 7 dias.

04

Controle de fanout por domínio receptor

Quando um evento dispara fanout (status page incident → 50K customer alerts), throttle automático por provedor de caixa para evitar hits dos limiares anti-abuse. Smart fanout ativo por padrão em Standard+.

05

PagerDuty integration para nosso on-call

Se sua latência de notification ou taxa de entrega degrada, nosso engenheiro on-call recebe page em 5 minutos —seu problema vira nosso problema antes que você escreva o ticket. Configurável por cliente Performance e Enterprise.

06

Status API a 60 req/min

Check programático do estado de plataforma para que sua aplicação possa adaptar-se (enfileirar localmente, fallback, alertar a sua equipe) quando estamos degradados. Status data freshness inferior a 60 segundos.

07

Timezone-aware scheduling para digests

Você passa à API o timestamp desejado mais timezone do destinatário; a fila calcula o momento real de envio. Distribui o envio total ao longo de 24 horas seguindo o padrão geográfico da sua base.

08

Esquema CloudEvents v1.0 nativo

Webhooks em formato CloudEvents v1.0 para interoperabilidade nativa com AWS EventBridge, Google Eventarc, Knative, Argo Events. Sem parsing custom exigido.

Desafios comuns

O que costuma dar errado e como resolvemos.

Fanout a múltiplos receivers em um único evento crítico

Enviar 50K mensagens em 5 minutos a uma mistura de Gmail, Outlook, Yahoo e Exchange corporativo está bem para Gmail mas Outlook rate-limita e Yahoo deferre. Nosso scheduler suaviza a taxa per-provedor automaticamente para que nenhum provedor receba o burst completo ao mesmo tempo.

Webhook endpoint outages durante picos de incidentes

Seu webhook handler é mais provável que falhe precisamente no momento em que mais o precisa (quando 500K eventos estão firing em 15 minutos durante um incidente real). O replay buffer de 7 dias cobre este cenário; uma vez seu endpoint volta a responder 200, drenamos cada evento perdido em ordem cronológica com os timestamps originais do evento.

Cross-PoP failover em outages regionais

Os clientes Performance e Enterprise têm multi-PoP routing: se um PoP perde transit, o tráfego se desvia ao PoP alterno em menos de 30 segundos. Starter e Standard são single-PoP e veriam o outage. Recomendamos Performance para qualquer workload de notifications que não tolere outage regional de 1 hora.

Idempotency em arquiteturas event-driven com reenvios

Em sistemas event-driven sérios os webhooks de upstream reentram à lógica de envio com reenvios (Stripe reenvia por até 72 horas com backoff exponencial). Sem idempotency keys geradas pela sua aplicação, o destinatário recebe a mensagem duas vezes. Nosso header Idempotency-Key resolve a duplicação do nosso lado por 24 horas, mas o UUID o gera seu sistema.

Apple Mail Privacy Protection em notifications

Para notifications o impacto MPP é misto. Por um lado, as notifications vão a usuários que esperam a mensagem, então o open rate inflado não quebra operação. Por outro lado, os digests que se calculam por engajamento (envia resumo só se o usuário esteve ativo) sofrem porque o "ativo" detectado por opens inclui machine opens. Recomendamos pivotar a clicks como sinal de engajamento para lógica de envio de digests.

Perguntas frequentes

As perguntas que mais recebemos.

01

Quão rápido posso enviar 1 milhão de notifications?

No tier Performance, 12 minutos desde submission API até hand-off ao MX destinatário para o conjunto completo de mensagens, sustentado. A capacidade burst escala além disso com aviso prévio. Os clientes Enterprise com janelas pré-provisionadas chegaram a 5M em 60 minutos; tipicamente recomendamos distribuir esses volumes em janela mais longa para proteger a reputação do lado receiver mais que do nosso lado.

02

Vocês suportam endpoints batch de envio?

Sim. POST /v2/send aceita arrays de até 1 000 destinatários por request, cada um renderizado desde um template compartilhado com variáveis de merge per-destinatário. A latência de submission é idêntica para batched vs individual —tunamos para o que sua aplicação produza de forma mais natural. Para volumes maiores há POST /v2/send/bulk que aceita até 50 000 destinatários por request com resposta async.

03

O que acontece se meu webhook handler está fora durante um burst?

Reenviamos cada evento por 30 minutos com backoff exponencial (5s, 25s, 125s, 625s, 3125s). Passados esses 30 minutos os eventos vão ao buffer de replay de 7 dias. Uma vez seu endpoint devolve 200 OK, drenamos o buffer em ordem cronológica com timestamps originais do evento. Também pode disparar replay manual desde o painel para um intervalo de datas específico ou por filtro de tipo de evento.

04

Como vocês manejam deliverability para transacional + notification + marketing em uma única conta?

Três pools de IP separados, cada um com seu próprio histórico de reputação em cada provedor de caixa. O painel mostra dashboards per-pool. Se um pool tem complaint spike, só esse pool vê degradada sua reputação —os outros seguem em placement pleno.

05

Posso enviar notifications em 7+ idiomas com templates por locale?

Sim. Você salva templates por locale (welcome-en, welcome-de, welcome-es, welcome-pt-br, welcome-fr, welcome-it, welcome-nl), passa locale e recipient_id no objeto data, renderizamos o template correto server-side. Alternativamente pode passar html/text diretamente por mensagem —a API aceita qualquer padrão.

06

Que SLA vocês têm sobre latência P99 de notifications?

O SLA contratual é sobre disponibilidade de plataforma (99,99% mensal) e sobre latência plataforma-side (submission API até hand-off MTA em sub-200 ms P99). Não SLAmos a latência end-to-end (de submission a chegada na caixa destinatária) porque depende de infraestrutura alheia. Sim monitoramos essa cifra e a mostramos no dashboard.

07

Como vocês facilitam o cumprimento NIS2 para notifications críticas?

NIS2 (Directiva (UE) 2022/2555, transposta na Espanha pelo Real Decreto-ley 7/2024) classifica como entidades importantes os provedores de serviços de plataforma quando o cliente final é entidade essencial. Nosso DPA Enterprise inclui cláusulas NIS2 artigo 21 sobre medidas de gestão de risco de cibersegurança. Produzimos atestação anual escrita com resumo de incidentes, utilização de capacidade, resultados de provas BCP, resumo de incidentes de segurança.

Vamos conversar

Agende uma ligação técnica de 45 minutos com um engenheiro.

Sem SDR, sem comissão, sem rondas de qualificação. Conta o que precisa, dizemos se faz sentido, e você sai com uma recomendação de qualquer jeito.

Telefone +43 1 205 11 80 Seg–Sex · 9–18 CET
Email [email protected] Resposta média 4h em horário comercial
Escritório Fleischmarkt 1, 1010 Wien Com agendamento