Entrevista de diseño de sistemas: Diseña Twitter

«Diseña Twitter» es el problema canónico de generación de feeds. Parece simple — publicar un tweet, leer una línea de tiempo — pero la parte interesante es generar la línea de tiempo de cada usuario a escala, donde la respuesta correcta es una estrategia de fan-out híbrida. El entrevistador quiere verte descubrir que ambos enfoques ingenuos fallan, y razonar hasta llegar a la mezcla.

Avanza de forma deliberada: aclara los requisitos, estima la proporción de lecturas/escrituras, diseña el almacenamiento de tweets, y luego la línea de tiempo — comparando fan-out-on-write con fan-out-on-read y llegando al híbrido que resuelve el problema de las celebridades. La guía a continuación sigue esa ruta.

1. Aclarar los requisitos

Acota al problema central del feed. Los usuarios publican tweets, siguen a otros, y leen una línea de tiempo de inicio que combina los tweets de todos a quienes siguen, del más nuevo al más antiguo.

  • Funcional: publicar un tweet, seguir/dejar de seguir, línea de tiempo de inicio (gente que sigues), línea de tiempo de usuario (un autor); la búsqueda básica queda fuera de alcance salvo que se pida.
  • No funcional: muy intensivo en lectura, lecturas de línea de tiempo de baja latencia, alta disponibilidad; la consistencia eventual de la línea de tiempo es aceptable.
  • Aclarar: medios, respuestas/hilos y ranking — reconócelos, y acota un feed cronológico para esta ronda.

2. Estimar la escala y la proporción de lecturas/escrituras

La proporción impulsa todo el diseño. Las lecturas superan ampliamente a las escrituras — los usuarios se desplazan por su línea de tiempo con mucha más frecuencia de la que publican. Con cientos de millones de usuarios, el sistema debe hacer que las lecturas de la línea de tiempo sean económicas, aunque eso haga las escrituras más costosas. Esa única observación apunta hacia precomputar las líneas de tiempo.

3. Almacenamiento de tweets

Los tweets en sí son datos simples y pesados en append. Guárdalos en un almacén particionado horizontalmente, con clave por ID de tweet (con un ID ordenable por tiempo, como un Snowflake ID, de modo que el orden quede incorporado). Un almacén aparte para el grafo social guarda las relaciones de seguidores/seguidos.

  • Tweets: almacén distribuido, particionado por ID de tweet; los IDs ordenables por tiempo dan un orden cronológico económico.
  • Grafo social: quién sigue a quién, optimizado para 'obtener todos los seguidores de X' y 'obtener todos los seguidos de X'.
  • Una caché (Redis) guarda los datos calientes — tweets recientes y líneas de tiempo precalculadas.

4. Generación de la línea de tiempo: fan-out en escritura vs lectura

Este es el corazón del problema. Fan-out-on-write (push) inserta cada nuevo tweet en la lista de línea de tiempo precalculada de cada seguidor en el momento de publicar — las lecturas de la línea de tiempo se convierten en una consulta de caché barata, pero una publicación de alguien con millones de seguidores desencadena millones de escrituras. Fan-out-on-read (pull) construye la línea de tiempo en el momento de la lectura combinando los tweets recientes de todos a quienes sigues — escrituras baratas, pero lecturas lentas y costosas para usuarios que siguen a muchas cuentas.

  • Fan-out-on-write: lecturas rápidas, escrituras costosas; ideal para usuarios normales.
  • Fan-out-on-read: escrituras baratas, lecturas costosas; necesario para cuentas con un número enorme de seguidores.

5. El problema de las celebridades y el híbrido

Ningún enfoque puro gana, así que combínalos. Usa fan-out-on-write para la gran mayoría de los usuarios, pero para cuentas 'celebridad' con un número de seguidores muy grande, NO hagas fan-out de sus tweets al escribir. En cambio, en el momento de la lectura, combina la línea de tiempo precalculada de un seguidor con una consulta en vivo de las pocas celebridades a las que sigue. Esto limita la amplificación de escrituras mientras mantiene las lecturas rápidas — la respuesta que buscan los entrevistadores.

6. Compromisos que hay que verbalizar

Cierra con las tensiones: amplificación de escrituras frente a latencia de lectura (toda la decisión de fan-out), el costo de almacenamiento de las líneas de tiempo precalculadas frente a recalcularlas, y la consistencia — unos segundos de retraso antes de que un tweet aparezca en la línea de tiempo de los seguidores es aceptable, así que la consistencia eventual permite escalar. Indicar explícitamente el umbral del híbrido (cómo clasificas a una 'celebridad') demuestra criterio senior.

Practica el diseño de sistemas de Twitter con ayuda en tiempo real

El asistente de entrevistas de diseño de sistemas de Natively puede mantenerte estructurado durante una ronda en vivo, sugiriendo la siguiente dimensión a cubrir y mostrando los compromisos en tiempo real, todo en tu propio dispositivo.

Instálalo en tu propio equipo.

Un asistente para conversaciones en vivo que funciona en local. Nada sale de tu equipo.

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Código fuente disponible bajo la Natively Personal Use Source License v1.0 · Geolocalización IP por DB-IP