Sobre el proyecto
Este repositorio es una colección de enlaces curada para aprender diseño de sistemas y prepararse para entrevistas de diseño de sistemas. No contiene software original; organiza artículos gratuitos, videos, cursos, libros, boletines, publicaciones de ingeniería y artículos de sistemas distribuidos.
Secciones principales incluyen:
- Conceptos básicos: escalabilidad, disponibilidad, confiabilidad, punto de falla único (SPOF), latencia vs rendimiento vs ancho de banda, hash consistente, teorema CAP, conmutación de fallos, tolerancia a fallos.
- Fundamentos de redes: modelo OSI, direcciones IP, DNS, proxy vs proxy inverso, HTTP/HTTPS, TCP vs UDP, equilibrio de carga, checksums.
- Fundamentos de APIs: APIs, puerta de enlace de API, REST vs GraphQL, WebSockets, webhooks, idempotencia, limitación de tasas, diseño de APIs.
- Fundamentos de bases de datos: transacciones ACID, SQL vs NoSQL, índices, partición, replicación, escalado, tipos de bases de datos, filtros de Bloom, arquitecturas.
- Fundamentos de caché: conceptos básicos de caché, estrategias, políticas de evicción, caché distribuida, CDN.
- Comunicación asíncrona: publicación/suscripción, colas de mensajes, captura de cambios.
- Sistemas distribuidos y microservicios: latidos, descubrimiento de servicios, algoritmos de consenso, bloqueo distribuido, protocolo de rumor, circuit breaker, recuperación ante desastres, seguimiento distribuido.
- Patrones arquitectónicos: cliente-servidor, microservicios, sin servidor, basado en eventos, punto a punto.
- Compromisos de diseño de sistemas: escalado vertical vs horizontal, concurrencia vs paralelismo, sondeo prolongado vs WebSockets, procesamiento por lotes vs en streaming, estado vs sin estado, modelos de consistencia, estrategias de caché, empujar vs extraer, REST vs RPC, sincrónico vs asíncrono, latencia vs rendimiento.
- Preparación para entrevistas: un marco para responder problemas de entrevista de diseño de sistemas, más problemas prácticos categorizados (fáciles, medianos, difíciles) como acortador de URLs, WhatsApp, Instagram, Uber, Google Docs, Dropbox y almacenamiento distribuido.
- Recursos adicionales: cursos, boletines, libros, canales de YouTube, artículos de ingeniería obligatorios y artículos clásicos de sistemas distribuidos (Paxos, MapReduce, GFS, Dynamo, Kafka, Spanner, Bigtable, ZooKeeper, LSM-Tree, Chubby).
El repositorio es útil como mapa de estudio y índice de referencia para ingenieros de software que se preparan para entrevistas de diseño de sistemas o buscan entender conceptos de sistemas distribuidos a gran escala.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.