Tenuto da ottobre 2019

Riscrivere la coda di provisioning

Il tempo mediano dalla fattura saldata alle credenziali di root è sceso da tre minuti e venti a quarantasette secondi. La maggior parte del guadagno deriva dal lavoro svolto prima che l'ordine esistesse.

Per cinque anni, comprare un server qui ha richiesto in media tre minuti e venti secondi dal webhook di pagamento alle credenziali nella tua casella di posta. Nessuno si è lamentato. Era più veloce della maggior parte del settore e considerevolmente più veloce di qualsiasi cosa richiedesse l'approvazione umana.

Ma erano anche quattro passaggi seriali che non avevano motivo di essere seriali, e una volta che lo noti, non puoi smettere di notarlo. La riscrittura è stata rilasciata a marzo e la mediana è ora di quarantasette secondi, con il novantacinquesimo percentile poco sotto i quattro minuti.

Cosa faceva il vecchio sistema

PassaggioMedianaCosa succedeva
Copia immagine84 sScaricare un'immagine disco da uno store per sito sul nodo di destinazione
Creazione volume31 sAllocazione e formattazione del volume NVMe
Allocazione indirizzo46 sBlocco sul pool di indirizzi del sito, scelta di un IPv4, scrittura del DNS inverso
Primo avvio e cloud-init39 sGenerazione delle chiavi, espansione del filesystem, invio email

Quattro passaggi, un pool di worker globale e un blocco sul pool di indirizzi dietro cui ogni ordine nello stesso sito doveva attendere in coda. In un martedì tranquillo andava bene. Durante una promozione, o nell'ora dopo che un grande cliente aveva scriptato quaranta creazioni, la mediana raddoppiava e la coda superava i dodici minuti.

Cosa abbiamo cambiato

Le immagini sono pre-seedate, non copiate. Ogni nodo contiene una base di clone sottile per ogni immagine nel catalogo, aggiornata ogni notte. Creare un volume è ora un clone copy-on-write su un mirror NVMe Gen4 locale, non un trasferimento di rete. Quel passaggio è passato da ottantaquattro secondi a meno di due.

Gli indirizzi sono riservati in anticipo. Ogni sito mantiene un pool caldo di indirizzi allocati con DNS inverso già scritto, dimensionato per circa sei ore di domanda in quel sito. L'allocazione è ora un pop da un pool pre-costruito, non un blocco, una scansione e una scrittura DNS. Quarantasei secondi sono diventati circa quattrocento millisecondi.

Le code sono per sito. Un picco a Francoforte non rallenta più una creazione a San Paolo, cosa che sembra ovvia e non era nel design originale perché il design originale aveva quattro siti e un ingegnere.

I worker sono idempotenti e riprendibili. Ogni passaggio è chiavettato, quindi un worker che muore a metà lascia un lavoro riprendibile, non un'istanza a metà e un ticket di supporto. L'intervento manuale su una creazione fallita è sceso da circa un ordine su quattrocento a uno su novemila.

Il risultato

MetricaPrimaDopo
Mediana3 min 20 s47 s
95° percentile12 min 10 s3 min 56 s
99° percentile41 min8 min 20 s
Creazioni fallite che richiedono un umano1 su 4001 su 9.000
Concorrenza per sito prima che la mediana si muova690

Cosa è andato storto lungo il percorso

A marzo, per undici ore, l'aggiornamento notturno delle basi di clone sottili è fallito silenziosamente in quattro siti e l'immagine Debian pre-seedata ha servito una point release vecchia di nove giorni. Circa novanta istanze sono state create da essa. Nessuna era rotta in modo interessante, poiché una point release vecchia è a un aggiornamento di pacchetti da quella attuale, ma nessuno che compra un server dovrebbe doverlo verificare.

Abbiamo ricostruito le istanze interessate su richiesta, abbiamo inviato un'email a tutte le novanta, che l'avessero chiesta o no, e abbiamo aggiunto un controllo che confronta l'hash dell'immagine base con il catalogo prima che qualsiasi nodo possa servire creazioni. Un fallimento silenzioso in un lavoro notturno è la causa più noiosa possibile e vale la pena scriverlo proprio perché è noioso.

Cosa è ancora lento

  • Installazioni ISO personalizzate. Ancora manuali, ancora misurate in decine di minuti, di solito completate entro un'ora. Il collo di bottiglia è una persona che conferma che l'immagine fa ciò che il suo caricatore dice.
  • Windows. L'attivazione della licenza aggiunge da due a tre minuti e non è sotto il nostro controllo.
  • Bare metal. Stesso giorno, non stesso minuto. Una macchina fisica ha una ricostruzione fisica, e preferiamo farti un preventivo onesto piuttosto che avviare un cronometro che non possiamo battere.
  • Delega IPv6 /48. Manuale in tre siti dove la configurazione della fabric è più vecchia. In fase di correzione, lentamente.

Perché ci siamo fermati qui

Potremmo portare la mediana a circa venti secondi mantenendo le istanze già avviate e consegnandotene una semplicemente al pagamento. Ciò significa tenere capacità inattiva, il che significa pagare per core che nessuno usa, il che significa far pagare a tutti un po' di più così che i nuovi ordini possano sembrare undici secondi più veloci.

Quarantasette secondi sono abbastanza brevi che il vincolo ora è la catena che conferma il tuo pagamento, non qualcosa che facciamo noi. Ottimizzare oltre il punto in cui il cliente se ne accorge è un hobby, non ingegneria.

Pronto quando lo sei

Scegli una città. Scegli una dimensione. Paga in criptovaluta.

Nessun modulo su chi sei, nessuna attesa per l'approvazione di una persona, nessuna chiamata per verificare nulla. La fattura viene saldata e le credenziali arrivano nella tua casella di posta.