Academia Bonsai Labs · Curso en vivo y en línea

Fundamentos de diseño de sistemas.

Un curso práctico, en español, para diseñar sistemas que crecen y aguantan fallas: requisitos y estimación, datos, replicación, colas, APIs y operación. Con una app de domicilios que crece de una ciudad a varios países.

PRÓXIMA COHORTE: POR ANUNCIAR
MAPA DEL CURSO
Mapa del curso: la app de domicilios en el centro, conectada a seis etapas numeradas. 01 Requisitos: latencia, QPS y costo. 02 Datos: modelos, índices y esquemas. 03 Distribuir: réplicas, particiones y transacciones. 04 Fallas: timeouts, idempotencia y consenso. 05 Servicios: APIs, sagas y eventos. 06 Operar: SLO, despliegues y ADR.
EN VIVO 6 sesiones de 3 horas Una por semana, con tiempo para preguntas. Todas quedan grabadas.
UN CASO QUE CRECE Una app de domicilios De una ciudad a varios países: cada sesión le agrega una capa.
PARA TU TRABAJO Y para tus entrevistas El método que usas con tu equipo sirve igual en una entrevista.
Qué aprenderás

Diseña con números, no con intuición.

Seis habilidades para decidir cómo se construye un sistema: qué necesita, cómo guarda sus datos, qué hace cuando algo falla y cómo se opera.

01

Definir requisitos y estimar

  • Requisitos no funcionales con números.
  • QPS, almacenamiento y costo antes de diseñar.
  • Qué problema resuelve cada pieza.
02

Modelar y guardar datos

  • El modelo correcto para cada dato.
  • Cómo funcionan los índices y los motores.
  • Cambiar un esquema sin detener el servicio.
03

Distribuir los datos

  • Réplicas y su retraso.
  • Particiones, claves y hotspots.
  • Aislamiento y anomalías de concurrencia.
04

Diseñar para las fallas

  • Timeouts, reintentos e idempotencia.
  • Consistencia y consenso sin mitos.
  • Cortar una falla en cascada.
05

Conectar servicios

  • APIs que otros equipos pueden usar.
  • Monolito modular o microservicios.
  • Sagas, outbox y eventos.
06

Operar y decidir

  • SLO, presupuesto de errores y observabilidad.
  • Despliegues que no rompen nada.
  • Decisiones escritas que el equipo entiende.
Temario

Seis sesiones, una app que crece.

Cada sesión en vivo cubre tres bloques y termina con un proyecto sobre la app de domicilios. Entre sesiones, practicas con los casos clásicos: acortador de URLs, rate limiter, notificaciones, feed y chat.

SESIÓN 1

Requisitos, estimación y el mapa de escala

1.1

Requisitos antes de dibujar

  • Funcionales y no funcionales: qué hace el sistema y qué tan bien lo hace.
  • Latencia p50 y p99, throughput y disponibilidad, con números.
  • Costo y complejidad como requisitos, no como consecuencias.
  • Las preguntas que acotan un problema ambiguo.
1.2

Cálculos rápidos

  • Las latencias que todo ingeniero debe conocer: memoria, disco y red.
  • De usuarios activos a QPS promedio y pico.
  • Almacenamiento y ancho de banda a 1 y a 5 años.
  • Los nueves de disponibilidad: cuántos minutos al mes es 99,9 %.
1.3

De un servidor a millones

  • El camino de una petición: DNS, balanceador y servidor.
  • Crecer en la misma máquina o agregar máquinas, y servidores sin estado.
  • Réplicas de lectura, caché y CDN.
  • Qué problema resuelve cada pieza, y qué problema nuevo trae.
Diagrama de la sesión 1. En 1.1, los requisitos no funcionales con números: latencia, throughput, disponibilidad y costo. En 1.2, un cálculo de usuarios activos a pedidos por día y a QPS promedio y pico. En 1.3, la app de domicilios en cinco versiones: un servidor, base de datos aparte, balanceador con varios servidores, réplicas y caché, y CDN.

Proyecto: La app de domicilios, versión 1 a 5

EN PIZARRA · SOBRE EL CASO DEL CURSO
  • Estima usuarios, pedidos y QPS de la app en una ciudad.
  • Dibuja la versión 1: un servidor y una base de datos.
  • Agrega una pieza por versión hasta llegar a la 5.
  • Escribe qué problema resolvió cada salto.
SESIÓN 2

Modelar y guardar datos

2.1

Modelos de datos

  • Relacional, documentos y grafos: cuándo usar cada uno.
  • Normalizar o desnormalizar, según cómo se leen los datos.
  • Relaciones uno a muchos y muchos a muchos.
  • Búsqueda de texto y datos geográficos.
2.2

Cómo guarda una base de datos

  • Índices B-tree y LSM: qué optimiza cada uno.
  • OLTP y OLAP: las transacciones y el análisis no se guardan igual.
  • Almacenamiento por filas y por columnas.
  • Leer un plan de consulta.
2.3

Codificación y evolución

  • JSON, Protobuf y Avro.
  • Compatibilidad hacia atrás y hacia adelante.
  • Migraciones de esquema sin detener el servicio.
  • Versionar los datos que viajan entre servicios.
Diagrama de la sesión 2. En 2.1, el modelo de datos de la app: pedidos, restaurantes, repartidores y menús, y qué va en tablas, en documentos o en un índice geográfico. En 2.2, un índice B-tree frente a un índice LSM, y una base transaccional frente a una analítica. En 2.3, una migración de esquema en tres pasos sin tiempo fuera de servicio.

Proyecto: Los datos de la app

EN PIZARRA · SOBRE EL CASO DEL CURSO
  • Modela pedidos, restaurantes, repartidores y menús.
  • Decide dónde vive cada dato y por qué.
  • Diseña los índices de las tres consultas más frecuentes.
  • Planea una migración sin tiempo fuera de servicio.
SESIÓN 3

Datos distribuidos

3.1

Replicación

  • Un líder, varios líderes o ninguno.
  • Replicación síncrona o asíncrona.
  • Retraso de las réplicas: leer lo que escribí y lecturas monotónicas.
  • Failover, y lo que se puede perder en él.
3.2

Particionamiento

  • Por rango o por hash, y cómo elegir la clave.
  • Hashing consistente y rebalanceo.
  • Hotspots: el restaurante que todos piden a la misma hora.
  • Índices secundarios sobre datos particionados.
3.3

Transacciones

  • ACID sin marketing.
  • Niveles de aislamiento y sus anomalías: lost update y write skew.
  • Locks o control optimista.
  • Transacciones entre servicios, y por qué evitar 2PC.
Diagrama de la sesión 3. En 3.1, un líder que replica a dos seguidores y un usuario que no ve su propio pedido por el retraso de una réplica. En 3.2, los pedidos repartidos por ciudad en particiones, con un hotspot marcado. En 3.3, dos repartidores que aceptan el mismo pedido al mismo tiempo, y cómo lo evita el aislamiento correcto.

Proyecto: Pedidos en varias ciudades

EN PIZARRA · SOBRE EL CASO DEL CURSO
  • Particiona los pedidos y justifica la clave.
  • Decide qué lecturas pueden venir de una réplica.
  • Encuentra una anomalía de concurrencia y corrígela.
  • Planea qué pasa si cae el líder.
SESIÓN 4

Cuando las cosas fallan

4.1

Fallas parciales

  • La red pierde, demora y duplica mensajes.
  • Timeouts: cuánto esperar y qué hacer después.
  • Relojes que no coinciden, y por qué no ordenar eventos por la hora.
  • Detectar un nodo caído sin equivocarse.
4.2

Consistencia y consenso

  • Consistencia linealizable, causal y eventual.
  • CAP y PACELC sin mitos.
  • Consenso con Raft y elección de líder.
  • Locks distribuidos con fencing tokens, en etcd o ZooKeeper.
4.3

Resiliencia

  • Reintentos con backoff y jitter.
  • Idempotencia de punta a punta.
  • Circuit breaker, backpressure y descarte de carga.
  • Cómo nace una falla en cascada, y cómo se corta.
Diagrama de la sesión 4. En 4.1, un cobro que se envía, no recibe respuesta y se reintenta. En 4.2, la escala de consistencia de eventual a linealizable, y un clúster Raft que elige un nuevo líder. En 4.3, la clave de idempotencia que evita el doble cobro, y un circuit breaker que se abre cuando el servicio de pagos falla.

Proyecto: Un cobro que no se duplica

EN PIZARRA · SOBRE EL CASO DEL CURSO
  • Traza qué pasa si el pago tarda, falla o responde dos veces.
  • Diseña la clave de idempotencia.
  • Decide timeouts, reintentos y circuit breaker.
  • Demuestra con un diagrama de secuencia que no hay doble cobro.
SESIÓN 5

Servicios, APIs y eventos

5.1

APIs

  • REST, gRPC y eventos: cuándo usar cada uno.
  • Paginación, versionado y errores.
  • API gateway, rate limiting y descubrimiento de servicios.
  • Contratos entre equipos.
5.2

Monolito o microservicios

  • Empezar con un monolito modular.
  • Separar servicios por capacidad del negocio.
  • Una base de datos por servicio.
  • Migrar poco a poco con el patrón strangler.
5.3

Eventos y flujos de datos

  • Colas y logs: RabbitMQ o Kafka.
  • Sagas, outbox y CDC.
  • CQRS y event sourcing: cuándo valen la pena.
  • Procesamiento por lotes y en streaming.
Diagrama de la sesión 5. En 5.1, una petición que entra por el API gateway y llega al servicio correcto. En 5.2, el monolito modular de la app y los servicios que salen de él. En 5.3, el checkout como saga: pedido, pago e inventario, con un outbox que publica los eventos y una compensación cuando un paso falla.

Proyecto: El checkout como saga

EN PIZARRA · SOBRE EL CASO DEL CURSO
  • Divide el checkout en pedido, pago e inventario.
  • Coordina los pasos con una saga.
  • Publica los eventos con un outbox.
  • Compensa cuando un paso falla.
SESIÓN 6

Operar y decidir

6.1

Confiabilidad medida

  • SLI, SLO y presupuesto de errores.
  • Logs, métricas y trazas distribuidas.
  • Alertas por síntomas, no por causas.
  • Incidentes y postmortems sin culpables.
6.2

Cambiar sin romper

  • Canary, blue-green y feature flags.
  • Varias regiones: activo-pasivo y activo-activo.
  • Seguridad básica: autenticación, autorización, secretos y cifrado.
  • El costo como requisito del diseño.
6.3

Decidir en equipo

  • ADR: registrar cada decisión y sus alternativas.
  • Un método en cuatro pasos para presentar un diseño.
  • Revisar el diseño de otro con preguntas útiles.
  • El mismo método en una entrevista.
Diagrama de la sesión 6. En 6.1, un SLO de 99,9 % y su presupuesto de errores del mes, con logs, métricas y trazas. En 6.2, un despliegue canary que pasa de 5 % a 100 % y la app en dos regiones. En 6.3, un ADR con contexto, decisión, alternativas y consecuencias, y el método en cuatro pasos.

Proyecto: El diseño completo, defendido

EN PIZARRA · SOBRE EL CASO DEL CURSO
  • Define los SLO de la app.
  • Escribe tres ADR de tus decisiones más difíciles.
  • Presenta el diseño al grupo en 20 minutos.
  • Responde las preguntas de los demás.
Proyecto final

Tu app de domicilios, lista para escalar.

Cada semana le sumas una capa al mismo diseño. Al final tienes un sistema documentado, con sus números y sus decisiones, que puedes mostrar en tu equipo o en una entrevista.

1

Requisitos

La estimación de carga, los requisitos no funcionales y los SLO.

2

Datos

El modelo, los índices, las réplicas y las particiones.

3

Fallas

Idempotencia, reintentos y resiliencia en cada llamada crítica.

4

Decisiones

Los ADR de tus decisiones y la defensa del diseño ante el grupo.

Quién enseña

Aprende de quien diseña y opera sistemas.

Victor Hazbun

Fundador · Bonsai Labs

Victor construye software desde 2014. Trabajó como contratista para Priceline y GoDaddy, y como líder técnico formó a desarrolladores con sesiones en pareja, revisiones de código y planes de estudio. Desde 2023 diseña y opera sistemas de IA en producción: agentes, RAG, guardrails y evaluaciones. Hoy dirige Bonsai Labs, donde construye UTMKit y CodeWarden. En este curso enseña cómo decide la arquitectura de esos sistemas.

REQUISITOS

Qué necesitas antes de empezar

  • Haber construido una app web con base de datos, en cualquier lenguaje.
  • No hace falta experiencia con sistemas distribuidos ni con la nube.
  • Un navegador: los diagramas se hacen en Excalidraw.
INCLUYE

Qué recibes al inscribirte

  • Seis sesiones en vivo con preguntas y respuestas.
  • Grabación de cada sesión.
  • Los diagramas del curso en Excalidraw, para reutilizarlos.
  • Una comunidad con tu cohorte para avanzar en grupo.
  • Horas de consulta opcionales sobre el material o tu proyecto.
  • Certificado de finalización para tu perfil de LinkedIn.
Preguntas frecuentes

Antes de inscribirte.

¿El curso es en español?

Sí. Las sesiones, los materiales y los proyectos están en español. Muchos términos técnicos están en inglés, y te explicamos cada uno.

¿El curso es en línea?

Sí. Todas las sesiones son en vivo y en línea: te conectas desde Colombia o desde cualquier otro país.

¿Qué necesito saber antes?

Haber construido una app web con base de datos, en cualquier lenguaje. No hace falta experiencia con sistemas distribuidos ni con la nube.

¿Tengo que programar?

No. Los proyectos son diseños: diagramas en Excalidraw, estimaciones y decisiones escritas. Si quieres, puedes llevarlos a código.

¿Cuánto tiempo necesito?

Son seis sesiones en vivo de 3 horas, una por semana. Con los proyectos, calcula entre 3 y 5 horas por semana.

¿Qué pasa si no puedo ir a una sesión?

Todas las sesiones se graban. Puedes verlas cuando quieras y seguir con los proyectos igual que el resto de la cohorte.

¿Me sirve para entrevistas?

Sí. La sesión 6 enseña un método para presentar y defender un diseño. Los casos clásicos de entrevista (acortador de URLs, rate limiter, notificaciones, feed y chat) quedan como práctica en la comunidad.

¿En qué se diferencia de «Construye sistemas IA para producción»?

Este curso enseña a diseñar cualquier sistema que escala. Construye sistemas IA para producción aplica esas ideas a sistemas de IA: modelos, RAG, evaluaciones y agentes.

¿Mi empresa puede pagar el curso?

Sí. Te enviamos una factura para que la presentes a tu presupuesto de formación.

¿Tienes otra pregunta?

Escríbenos a contact@bonsailabs.io.

PRÓXIMA COHORTE: POR ANUNCIAR

Diseña hoy el sistema que vas a necesitar mañana.

Estamos definiendo la fecha y el precio de la primera cohorte. Escríbenos y te avisamos antes de abrir las inscripciones.

Unirme a la lista de espera →