Atlasingeniería

Carrera profesional y entrevistasEntrevistasTema 2

Diseñar un sistema en cuarenta minutos

No se espera que salga la arquitectura correcta: se espera que hagas las preguntas correctas, propongas algo simple y sepas explicar qué se rompe cuando crece. El error más común es empezar a dibujar cajas antes de saber qué se está construyendo.

«Diseñá un acortador de URLs.» La reacción habitual es empezar a dibujar: un balanceador, unos servidores, una base, un caché. A los diez minutos hay un diagrama lleno y nadie preguntó cuánta gente lo va a usar ni qué tiene que garantizar.

En estas entrevistas el diagrama es lo último que importa. Lo que se evalúa es si podés convertir un enunciado vago en requisitos, elegir lo más simple que los cumpla, y explicar qué se rompe primero cuando la escala cambia.

Los cinco tramos

Cómo repartir cuarenta minutos

  1. Requisitos, 5 a 8 minutos. Qué tiene que hacer, qué no, y qué garantiza. Quién lo usa y para qué.
  2. Escala, 3 a 5 minutos. Usuarios, lecturas y escrituras por segundo, tamaño de los datos, crecimiento. Números aproximados dichos en voz alta.
  3. Diseño simple, 10 minutos. La versión más chica que cumple los requisitos. Componentes, modelo de datos, el camino de un pedido de punta a punta.
  4. Escalar y romper, 10 a 15 minutos. Qué se cae primero con diez veces más carga y cómo se resuelve. Acá está la mayor parte del puntaje.
  5. Cierre, 3 minutos. Qué quedó sin resolver, qué monitorearías, qué harías distinto con más tiempo.

Las preguntas que hay que hacer

DimensiónQué preguntarPor qué cambia el diseño
Uso¿Se lee mucho más de lo que se escribe?Define si la solución pasa por caché y réplicas de lectura
Escala¿Cuántos usuarios, cuántas operaciones por segundo?Miles y millones piden diseños distintos; asumir mal arruina todo
Consistencia¿Puede haber unos segundos de desfasaje?Es la decisión que más cambia la arquitectura
Latencia¿Cuánto puede tardar?Define si algo puede ser asincrónico
Durabilidad¿Qué pasa si se pierde un dato?No es lo mismo un like que una transferencia
Alcance¿Incluye estadísticas, cuentas, permisos?Evita diseñar tres sistemas en cuarenta minutos
Con seis preguntas de un minuto cada una, el resto de la entrevista tiene dirección.

Antes de seguir, predecí

Te piden diseñar un sistema y no decís cuántos usuarios asumís. ¿Qué pasa?

Empezar simple es la señal de experiencia

Señal de inexperienciaSeñal de experiencia
Empezar con microservicios y colasEmpezar con una aplicación y una base, y justificar cada pieza que se agrega
Nombrar tecnologías de modaNombrar propiedades: «necesito algo que garantice orden por clave»
Diseñar para mil millones de usuariosDiseñar para la escala que se acordó, y decir qué cambiaría diez veces más arriba
Evitar las debilidades del diseñoSeñalar los puntos únicos de falla y qué haría con más tiempo
Agregar componentes es fácil; justificar por qué cada uno tiene que existir es lo difícil y lo que se evalúa.

Dónde está la mayor parte del puntaje

El tramo de escalar es donde más se diferencia una entrevista buena de una regular. La secuencia que conviene seguir:

Multiplicá la carga por diez y preguntate

  1. ¿Qué se satura primero? Casi siempre la base de datos: conexiones, escrituras, consultas lentas.
  2. ¿Qué es lo más barato que lo alivia? Caché de lo más leído, índices, réplicas de lectura. En ese orden, antes de rediseñar nada.
  3. ¿Qué se puede hacer asincrónico? Todo lo que el usuario no necesita esperar: correos, estadísticas, procesamiento de imágenes.
  4. ¿Dónde hay un punto único de falla? Y qué pasaría si se cae.
  5. ¿Qué se rompe a la siguiente multiplicación por diez? Ahí aparecen particionamiento y separación por dominio, y ahí sí se justifican.

Los primeros diez minutos

Escenario · 1 decisión como mínimo

«Diseñá un acortador de URLs» — y tenés cuarenta minutos

Te dan el enunciado y una pizarra en blanco. Ya tenés en la cabeza el diagrama completo: balanceador, servicio, base, caché. ¿Qué hacés con los primeros minutos?

Mirá en qué paso aparece el primer dibujo. Es mucho más tarde de lo que parece.

Cierre

Autoevaluación

¿Lo entendiste?

¿Cuál es el error más común al empezar?
¿Qué pregunta cambia más la arquitectura?
¿Qué muestra empezar con una aplicación y una base?
Al multiplicar la carga por diez, ¿qué se satura primero casi siempre?
Llegás a algo que no sabés. ¿Qué conviene decir?