>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Unknown

Cheat Sheet de Diseño de Sistemas con 28 Capítulos para Quienes No Quieren Leer los Dos Volúmenes de Alex Xu

Recuerdo hace un par de años cuando me senté por primera vez a prepararme para una entrevista de diseño de sistemas. Abres el popular libro de dos volúmenes de Alex Xu "System Design Interview" y te das cuenta de que tiene casi mil páginas. Generalmente tienes una semana, como mucho dos, antes de la entrevista, y tu cabeza ya está dando vueltas por la abundancia de diagramas. Y recientemente, me encontré con el repositorio liquidslr/system-design-notes en mis marcadores.

El autor del proyecto hizo todo el trabajo rutinario por nosotros. Tomó ambas partes del libro, eliminó el contenido innecesario y organizó 28 temas con soluciones arquitectónicas listas para usar. El proyecto ya ha recopilado casi 15,000 estrellas en GitHub, y hay razones claras para eso.

Qué hay dentro de las notas

Aquí no hay discusiones abstractas sobre arquitectura limpia. El repositorio sigue estrictamente la estructura de los libros originales y se divide en dos grupos principales de temas: bloques de construcción básicos y diseño de servicios específicos.

La primera parte cubre la mecánica básica sin la cual es imposible diseñar cualquier backend confiable:

  • Cálculos de orden de magnitud. La capacidad de calcular RPS entrantes, espacio en disco para terabytes de logs y ancho de banda de red requerido en un par de minutos.
  • Algoritmos de limitación de tasa para proteger APIs públicas de sobrecargas y spam.
  • Hash consistente, que salva el día al fragmentar dinámicamente bases de datos y balancear caché.
  • Generación de IDs únicos en un entorno distribuido sin bloqueos, como el Snowflake de Twitter o los servidores de tickets de Flickr.

El segundo grupo de temas está dedicado a analizar servicios completos. El autor desglosa tareas que se ven más comúnmente en entrevistas de grandes empresas tecnológicas:

  • Arquitectura de servicio acortador de URLs con cálculos de colisiones de hash.
  • Chat escalable a nivel de Slack o Discord con conexiones WebSocket persistentes.
  • Alojamiento de video como YouTube con un pipeline de transcodificación asíncrono para diferentes resoluciones.
  • Pasarelas de pago y billeteras digitales, donde la idempotencia de operaciones y el commit de dos fases son críticamente importantes.

Artículos de ingeniería reales en lugar de teoría seca

La principal ventaja del repositorio ni siquiera es el resumen condensado de los capítulos. Al final del README, el autor recopiló enlaces a artículos técnicos originales y papers de los equipos de Discord, Uber, Netflix y Amazon.

Los diagramas de los libros a menudo se ven estériles. En el papel, todos los componentes funcionan perfectamente, las colas nunca fallan y las réplicas de la base de datos se sincronizan al instante. La producción real es diferente.

Cuando lees el capítulo sobre sistemas de mensajería, puedes abrir inmediatamente el artículo de los ingenieros de Discord sobre cómo almacenaron miles de millones de mensajes y por qué inicialmente eligieron Cassandra, luego reescribiendo el almacenamiento a Rust y ScyllaDB. También hay un artículo sobre la arquitectura de Flannel del equipo de Slack, explicando cómo funciona el caché a nivel de aplicación en el borde de la red.

La sección sobre búsqueda y autocompletado incluye un enlace a Prefixy y materiales sobre Prefix Hash Tree. Para quienes se sumergen en el almacenamiento de datos distribuidos, se recopilan papers originales sobre Google BigTable y Amazon Dynamo DB.

Este enfoque conecta la teoría del libro con la experiencia real de grandes empresas.

Cómo leer y usar estas notas

Los materiales están disponibles en dos formatos. Puedes estudiar las carpetas directamente en el repositorio de GitHub, o abrir la versión web a través de Pagefy, con un enlace al principio del README. La segunda opción es más conveniente para leer en un smartphone o tablet mientras te desplazas.

En cada carpeta, encontrarás:

  • Declaración del problema con requisitos funcionales y no funcionales.
  • Diagrama de componentes de alto nivel (balanceadores de carga, cachés, bases de datos, colas).
  • Desglose detallado de cuellos de botella arquitectónicos y formas de escalarlos.
  • Conclusiones finales y compromisos de la solución elegida.

No hay código escrito aquí; el enfoque es específicamente en la lógica de flujo de datos, protocolos de comunicación y elección de tipos de almacenamiento para diferentes patrones de carga de trabajo.

Dicho esto, el repositorio tiene una nuance: el proyecto todavía está marcado como trabajo en progreso. Algunos capítulos están formateados en detalle, con fórmulas y diagramas limpios, mientras que algunos capítulos actualmente solo tienen breves esquemas. El autor actualiza el contenido de vez en cuando, pero antes de una entrevista seria, es mejor revisar adicionalmente los artículos mencionados de los blogs de ingeniería.

Para quién el proyecto ahorrará tiempo

Si te estás preparando para un cambio de trabajo a un puesto de nivel Middle+ o Senior, este repositorio te ahorrará docenas de horas.

Las notas también serán útiles para quienes:

  • Están diseñando un nuevo servicio en el trabajo y están eligiendo entre almacenamiento SQL, NoSQL y clave-valor.
  • Quieren entender los detalles de cómo funcionan los servicios geoespaciales (como encontrar objetos cercanos o amigos en un mapa) a través de GeoHash y QuadTree.
  • Están escribiendo integraciones con sistemas de pago y quieren evitar cobros duplicados durante fallos de red.
  • Están cansados de las tareas típicas y quieren mejorar su comprensión de los sistemas distribuidos en general.

Si el tiempo es ajustado, recomiendo comenzar con los primeros tres temas: escalar de cero a millones de usuarios, cálculos rápidos de orden de magnitud, y un marco paso a paso para responder preguntas de entrevistas de diseño de sistemas. Esto creará una base sólida sobre la cual luego podrás superponer cualquier escenario especializado.

Proyectos relacionados