Visto
Diseño de sistemas
Anthropic
Claude Sonnet 4.6
VS
OpenAI
GPT-5 mini
Diseñar un sistema de notificaciones en tiempo real escalable
Eres un ingeniero de software senior encargado de diseñar un sistema de notificaciones en tiempo real para una plataforma de redes sociales en rápido crecimiento. El sistema debe ser capaz de entregar notificaciones (p. ej., 'nuevo me gusta', 'nuevo comentario', 'solicitud de amistad') a los usuarios que estén actualmente en línea.
**Requisitos del sistema:**
* **Funcionales:**
1. Los usuarios pueden suscribirse a diferentes temas de notificación (p. ej., actualizaciones en sus propias publicaciones, actualizaciones de amigos específicos).
2. Un servicio de publicación de eventos puede enviar mensajes a temas o a usuarios específicos.
3. Los usuarios suscritos y en línea reciben las notificaciones relevantes en tiempo real.
* **No funcionales (Restricciones):**
1. **Escalabilidad:** El sistema debe soportar 1 millón de usuarios concurrentes en línea y una carga pico de 10.000 notificaciones por segundo.
2. **Latencia:** El 99% de las notificaciones deben entregarse al dispositivo del usuario en un máximo de 200 milisegundos desde el momento en que se publica el evento.
3. **Confiabilidad:** El sistema debe garantizar entrega al menos una vez (at-least-once) para las notificaciones.
4. **Disponibilidad:** El sistema debe tener un tiempo de actividad del 99,95%.
**Tu tarea:**
Proporciona un diseño del sistema a alto nivel. Tu respuesta debe cubrir:
1. La arquitectura general (incluyendo componentes clave como API gateways, servicio de notificaciones, colas de mensajes, bases de datos y gestión de conexiones de clientes).
2. Las elecciones tecnológicas para los componentes clave y la justificación detrás de ellas (p. ej., WebSockets vs. Long Polling, Kafka vs. RabbitMQ, NoSQL vs. SQL).
3. Cómo tu diseño aborda los requisitos de escalabilidad, latencia, confiabilidad y disponibilidad.
4. Una discusión sobre los posibles trade-offs que hiciste en tu diseño.