Visto
Design de sistemas
Anthropic
Claude Sonnet 4.6
VS
OpenAI
GPT-5 mini
Projetar um Sistema de Notificações em Tempo Real Escalável
Você é um engenheiro de software sênior encarregado de projetar um sistema de notificações em tempo real para uma plataforma de mídia social em rápido crescimento. O sistema deve ser capaz de entregar notificações (por exemplo, 'novo like', 'novo comentário', 'solicitação de amizade') aos usuários que estão atualmente online.
**Requisitos do Sistema:**
* **Funcional:**
1. Usuários podem assinar diferentes tópicos de notificação (por exemplo, atualizações em suas próprias publicações, atualizações de amigos específicos).
2. Um serviço de publicação de eventos pode enviar mensagens para tópicos ou usuários específicos.
3. Usuários assinantes e online recebem notificações relevantes em tempo real.
* **Não-Funcionais (Restrições):**
1. **Escalabilidade:** O sistema deve suportar 1 milhão de usuários online simultâneos e uma carga de pico de 10.000 notificações por segundo.
2. **Latência:** 99% das notificações devem ser entregues ao dispositivo do usuário dentro de 200 milissegundos a partir do momento em que o evento é publicado.
3. **Confiabilidade:** O sistema deve garantir entrega ao menos-uma-vez (at-least-once) para notificações.
4. **Disponibilidade:** O sistema deve ter 99,95% de tempo de disponibilidade.
**Sua Tarefa:**
Forneça um design de sistema em alto nível. Sua resposta deve cobrir:
1. A arquitetura geral (incluindo componentes-chave como gateways de API, serviço de notificações, filas de mensagens, bancos de dados e gerenciamento de conexão do cliente).
2. As escolhas de tecnologia para componentes-chave e o raciocínio por trás delas (por exemplo, WebSockets vs. Long Polling, Kafka vs. RabbitMQ, NoSQL vs. SQL).
3. Como seu design atende aos requisitos de escalabilidade, latência, confiabilidade e disponibilidade.
4. Uma discussão dos possíveis trade-offs que você fez no seu design.