Durante cinco años, comprar un servidor aquí tardó una mediana de tres minutos y veinte segundos desde el webhook de pago hasta las credenciales en tu bandeja de entrada. Nadie se quejó. Era más rápido que la mayor parte del sector y considerablemente más rápido que cualquier cosa que requiriera aprobación humana.
También eran cuatro pasos en serie que no tenían por qué ser en serie, y una vez que lo notas, no puedes dejar de notarlo. La reescritura se publicó en marzo y la mediana ahora es de cuarenta y siete segundos, con el percentil noventa y cinco justo por debajo de cuatro minutos.
Lo que hacía el anterior
| Paso | Mediana | Qué ocurría |
|---|---|---|
| Copia de imagen | 84 s | Descargar una imagen de disco de un almacén por sitio al nodo de destino |
| Creación de volumen | 31 s | Asignar y formatear el volumen NVMe |
| Asignación de dirección | 46 s | Tomar un bloqueo del pool de direcciones del sitio, elegir una IPv4, escribir el DNS inverso |
| Primer arranque y cloud-init | 39 s | Generar claves, expandir el sistema de archivos, enviar correo |
Cuatro pasos, un pool de trabajadores global y un bloqueo del pool de direcciones tras el que cada pedido en el mismo sitio debía hacer cola. En un martes tranquilo estaba bien. Durante una promoción, o durante la hora posterior a que un gran cliente automatizara cuarenta creaciones, la mediana se duplicaba y la cola superaba los doce minutos.
Qué cambiamos
Las imágenes están presembradas, no se copian. Cada nodo tiene una base de clon fino para cada imagen del catálogo, actualizada cada noche. Crear un volumen ahora es un clon de copia en escritura contra un espejo NVMe Gen4 local en lugar de una descarga de red. Ese paso pasó de ochenta y cuatro segundos a menos de dos.
Las direcciones se reservan con antelación. Cada sitio mantiene un pool cálido de direcciones asignadas con el DNS inverso ya escrito, dimensionado para unas seis horas de demanda en ese sitio. La asignación ahora es un pop de un pool preconstruido en lugar de un bloqueo, un escaneo y una escritura DNS. Cuarenta y seis segundos se convirtieron en unos cuatrocientos milisegundos.
Las colas son por sitio. Un aumento en Fráncfort ya no ralentiza una creación en São Paulo, lo que parece obvio y no era el diseño original porque el diseño original tenía cuatro sitios y un ingeniero.
Los trabajadores son idempotentes y reanudables. Cada paso está identificado con una clave, de modo que un trabajador que muere a mitad deja un trabajo reanudable en lugar de una instancia a medio construir y un ticket de soporte. La intervención manual en una creación fallida cayó de aproximadamente uno de cada cuatrocientos pedidos a uno de cada nueve mil.
El resultado
| Métrica | Antes | Después |
|---|---|---|
| Mediana | 3 min 20 s | 47 s |
| Percentil 95 | 12 min 10 s | 3 min 56 s |
| Percentil 99 | 41 min | 8 min 20 s |
| Creaciones fallidas que requieren un humano | 1 de cada 400 | 1 de cada 9,000 |
| Concurrencia por sitio antes de que se mueva la mediana | 6 | 90 |
Lo que salió mal en el camino
En marzo, durante once horas, la actualización nocturna de las bases de clon fino falló silenciosamente en cuatro sitios y la imagen Debian presembrada sirvió una versión puntual que tenía nueve días de antigüedad. Unas noventa instancias se construyeron a partir de ella. Ninguna se rompió de forma interesante, ya que una versión puntual desactualizada está a una actualización de paquetes de la actual, pero nadie que compre un servidor debería tener que comprobarlo.
Reconstruimos las instancias afectadas bajo petición, enviamos un correo a las noventa lo pidieran o no, y añadimos una comprobación que compara el hash de la imagen base con el catálogo antes de que cualquier nodo pueda servir creaciones. Un fallo silencioso en un trabajo nocturno es la causa más aburrida posible y merece la pena escribirlo precisamente porque es aburrido.
Lo que sigue siendo lento
- Instalaciones ISO personalizadas. Siguen siendo manuales, medidas en decenas de minutos, normalmente completadas en una hora. El cuello de botella es una persona que confirma que la imagen hace lo que su subidor dice que hace.
- Windows. La activación de licencia añade de dos a tres minutos y no está bajo nuestro control.
- Bare metal. El mismo día en lugar del mismo minuto. Una máquina física tiene una reconstrucción física, y preferimos darte un presupuesto honesto que iniciar un cronómetro que no podemos batir.
- Delegación /48 de IPv6. Manual en tres sitios donde la configuración de la red es más antigua. Se está arreglando, lentamente.
Por qué nos detuvimos aquí
Podríamos llevar la mediana a unos veinte segundos manteniendo instancias pre-arrancadas y simplemente entregándote una al pagar. Eso significa mantener capacidad inactiva, lo que supone pagar por núcleos que nadie usa, lo que a su vez significa cobrar a todos un poco más para que los nuevos pedidos se sientan once segundos más rápidos.
Cuarenta y siete segundos es lo bastante corto para que la restricción ahora sea la cadena que confirma tu pago en lugar de cualquier cosa que hagamos nosotros. Optimizar más allá del punto en el que el cliente lo nota es un hobby, no ingeniería.