@la12tuittera Increíble el miedo que tienen a pegarle a la pelotita de afuera, si hay que depender de que Giménez gane un duelo en el área, nos vimos 🥴
Si tuviese que arrancar a estudiar System Design desde 0:
Primero lo básico (fácil):
→ client–server (tu app habla con un backend)
→ APIs (intercambiar datos)
→ request–response (acción → respuesta)
→ bases de datos (guardar información)
Y algo clave:
→ modelado de datos (definir qué guardás y cómo lo consultás)
Después aparecen problemas (medio):
→ más tráfico → load balancing (repartir requests)
→ latencia → caching / CDN (responder más rápido)
→ usuarios → auth (autenticación & autorización)
→ abuso → rate limiting (evitar spam)
Acá importa cómo se usa el sistema:
→ read-heavy vs write-heavy (optimizar lecturas vs escrituras)
Cuando escala (medio–difícil):
→ la app crece → monolito vs microservicios (dividir responsabilidades)
→ tareas largas → queues (procesar en background)
→ sistemas desacoplados → event-driven (no depender de un solo flujo)
→ muchos datos → sharding (dividir datos)
→ más demanda → escalar (vertical vs horizontal)
En producción (difícil):
→ no sabés qué pasa → observabilidad (logs, métricas, tracing)
→ fallos → fault tolerance (seguir funcionando ante errores)
→ datos inconsistentes → CAP (consistency vs availability)
→ alta disponibilidad → réplicas (copiar datos para no depender de una sola máquina)
System Design no se trata de memorizar.
Se trata de ver el problema, decidir qué hacer y aceptar los trade-offs.