GuíaIntermedio
Guía de Fundamentos de System Design
Aprende a diseñar un sistema distribuido desde cero y a escalarlo con criterio, no con memoria. La guía enseña el método completo —aclarar requisitos, estimar capacidad con matemática de servilleta, modelar los datos, meter caché, escalar la base de datos, balancear carga y razonar los tradeoffs de fiabilidad y consistencia— usando un solo caso de estudio real de principio a fin: Enlace, un acortador de URLs que arranca en una sola caja y se escala módulo a módulo hasta un diseño distribuido completo. Cada número que aparece se calcula y se ejecuta en Python (QPS, almacenamiento, hit ratio, consistent hashing), nunca se cita de memoria. Al terminar, puedes tomar un enunciado vago como "diseña un acortador de URLs" y producir un diseño defendible con números, diagrama y tradeoffs explícitos —exactamente lo que se espera en una revisión de arquitectura o una entrevista técnica de system design.
- 64
- lecciones
- 8
- módulos
- Inglés · Español
- disponible en
- Gratis
- acceso
Resultados
Lo que vas a poder hacer
- Convertir un enunciado vago en requisitos funcionales y no funcionales concretos, y acotar el alcance de un primer diseño
- Dominar la matemática de servilleta: QPS de lectura/escritura, almacenamiento a varios años, ancho de banda y memoria del working set
- Diseñar el modelo de datos y generar identificadores únicos y cortos (hash vs. contador+base62 vs. random)
- Meter caché con criterio en el camino de lectura pesada: cache-aside, políticas de evicción (LRU), hit ratio y latencia media
- Escalar una base de datos más allá de una sola máquina con replicación (primary/replica), sharding y consistent hashing
- Balancear carga entre servidores stateless (round-robin, least-connections, por hash) y decidir dónde vive el estado
- Razonar la fiabilidad de un sistema distribuido: redundancia, puntos únicos de fallo, failover básico, CAP/PACELC y el tradeoff de consistencia fuerte vs. eventual
- Diseñar y defender un sistema distribuido completo de punta a punta: requisitos, estimación, diagrama de alto nivel, camino de lectura/escritura, y la lista de tradeoffs justificados
Antes de empezar
Qué necesitas traer
Es para ti si...
- Backend devs que quieren pasar de "escribir features" a diseñar sistemas que aguantan escala real
- Devs preparándose para entrevistas técnicas de system design (acortadores de URL, feeds, sistemas de mensajería)
- Cualquiera que necesite defender un diseño con números en una revisión de arquitectura, no con intuición
- Devs que ya usan caché, réplicas o balanceadores por receta y quieren entender el porqué numérico detrás de cada uno
Requisitos y materiales
- Python básico (leer y seguir los snippets de estimación y generación de IDs; no hace falta dominio avanzado)
- Conocimientos generales de bases de datos relacionales y APIs HTTP/REST
- No se requiere experiencia previa en sistemas distribuidos ni en diseño de arquitecturas a escala
Contenido
El temario, módulo por módulo
Abre cualquiera para ver sus lecciones.
- 1. Presentación del módulo: entiende el problema antes de dibujar
- 2. Requisitos funcionales vs. no funcionales
- 3. Las preguntas de aclaración correctas
- 4. Acotar el alcance: recorta el problema a su tamaño
- 5. El marco de 4 pasos
- 6. Enlace en una sola caja
- 7. Pensar en tradeoffs y dónde se rompe la caja
- 8. Mini-proyecto: de un enunciado vago a requisitos y alcance
- 1. Presentación del módulo: la servilleta antes que el servidor
- 2. Las herramientas: potencias de 10, segundos por día y unidades
- 3. QPS: de peticiones al mes a peticiones por segundo
- 4. Almacenamiento: cuánto disco en cinco años
- 5. Ancho de banda: cuántos bytes por segundo entran y salen
- 6. Memoria: el working set y por qué cabe en RAM
- 7. Redondeo inteligente y sanity checks
- 8. Proyecto: la tabla de capacidad de Enlace
- 1. Presentación del módulo: del número al modelo
- 2. El registro `Link`
- 3. SQL vs NoSQL para Enlace
- 4. Generar el código con hash: colisiones medidas
- 5. Contador global + base62 (y aleatorio + verificación)
- 6. `base62_encode`/`base62_decode`, ejecutado
- 7. Elegir la estrategia
- 8. Proyecto: el generador de `short_code` de Enlace
- 1. Presentación del módulo: cuando la caja única ya no aguanta
- 2. Cuándo una sola base de datos no alcanza
- 3. Replicación: primary y replica
- 4. Replication lag y leer desde las réplicas
- 5. Sharding y la clave de shard
- 6. El problema de `hash(key) % N`
- 7. Consistent hashing, ejecutado
- 8. Proyecto: plan de sharding y réplicas para Enlace
- 1. Presentación del módulo: cuando la máquina se cae y la red se parte
- 2. Redundancia y single points of failure
- 3. Failover básico
- 4. El teorema CAP, explicado (sin el mito)
- 5. PACELC: más allá de CAP
- 6. Consistencia fuerte contra eventual, y la elección de Enlace
- 7. SLA, SLO y los nines, ejecutados
- 8. Proyecto: elige y justifica el modelo de consistencia de Enlace y su SLO
- 1. Presentación del módulo: el recorrido de vuelta
- 2. Paso 1 — Requisitos y alcance de Enlace
- 3. Paso 2 — La tabla de capacidad, ejecutada
- 4. Paso 3 — Diseño de alto nivel y el diagrama
- 5. Paso 4a — El camino de escritura
- 6. Paso 4b — El camino de lectura y la caché
- 7. Paso 4c — Escalar hacia afuera: réplicas, sharding, balanceo y consistencia
- 8. Proyecto: diseña Enlace de punta a punta
Dudas frecuentes
Lo que suele preguntarse
Sin límite. Es una guía gratuita: entras cuando quieras, las veces que quieras.
No. Los módulos están ordenados de menos a más, pero puedes saltar al que necesites. Tu progreso se guarda por lección.
Lo que haga falta está en «Qué necesitas traer», arriba. Si no aparece nada ahí, puedes empezar desde cero.
En el grupo de WhatsApp del Club, y cada quince días hay un live con un instructor donde se resuelven dudas en vivo.
Empieza cuando quieras
Lo que dicen los estudiantes
Estas reseñas son de estudiantes inscritos que completaron al menos el 50% del curso. Moderamos las reseñas solo por motivos de contenido (spam, lenguaje ofensivo, datos personales), nunca por ser críticas o negativas.
Aún no hay reseñas aprobadas.
¡Sé el primero en compartir tu experiencia!