La nuvola e le operazioni per secondo
Ho iniziato a lavorare nella mia posizione corrente esattamente due anni fa, il primo Settembre. Da allora la ditta è ingrassata, l'ufficio è passato da un paio di appartamenti riconvertiti ad un lussuoso (e rumoroso) open plan, e l'elenco delle mie responsabilità si è allungato.
Così per celebrare, oggi sono rimasto sul fronte fino alle 9 di sera. Seduto accanto a Devops, abbiamo combattuto contro la nuvola ed infine scelto una ritirata strategica. Ed acceso un antico Sun SPARC da qualche parte nella città, da remoto, via LOM accessibile solo da una porta seriale RJ-45, ma quella è un'altra storia.
Tutto è cominciato con l'aggiunta di un semplice disco in produzione. I nostri clienti accumulano dati e mese dopo mese i dati caricati sono sempre più di quelli archiviati. È venuto così il momento di aggiungere spazio sui server. Nulla di più facile ora che viviamo nel futuro della nuvola!
Nei giorni scorsi abbiamo cliccato qua e la nel pannello di amministrazione della nuvola, aggiunto costosissime volumi SSD per tutte le regioni che copriamo, cominciato a passare i dati sulle nuove partizioni. Arriva oggi il momento di scambiare i dischi in uso, fare un ultima sincronizzazione dei dati, ed andare a casa appena dopo le cinque. Questo almeno in teoria.
Asia e Pacifico non hanno nessuno problema, le Americhe fanno il passaggio senza dolori, e mentre l'ufficio inizia a svuotarsi all'orario di chiusura ci accingiamo quasi annoiati a fare il passaggio per i server in Europa. Ferma processi, copia copia, smonta, monta, sposta link. Ci vuole più di una mezz'ora perché tutti gli ingranaggi si arrestino, i pezzi del rompicampo vengano scambiati, oliati, e rimessi in movimento. Tutte le lucine verdi si riaccendono come previsto, e la normale replica dei dati si riavvia. Ma non finisce nei soliti 4 minuti.
E non finisce in 10 minuti. Ci scambiamo sguardi pieni di sospetto, troviamo nervose scuse per la lentezza.
Attorno ai 15 minuti, nulla è cambiato. Terminali pieni di log scrollano su almeno sei schermi. I dati stanno muovendo, tutto sembra normale. Solo... al rallentatore?
La replica si completa dopo 21 minuti. Altri due processi in coda hanno rifiutato di avviarsi. Imprecazioni di tre lingue commentano grafici con picchi insensati. Riguardiamo tutta la configurazione, tutti i passi fatti, il carico di rete, i load balancer. Gli unici numeri fuori posto sono quelli di un nuovo, costosissimo SSD. Un disco a stato solido moderno potrebbe fornire un milione di operazioni per secondo; uno di 8 anni fa dovrebbe fornire 5000 operazioni per secondo. Il nostro non vuole darci più di 500 operazioni per secondo.
La nostra applicazione ha bisogno di minimo 2000 iops. Un carico sensato che non è mai stato un problema. Scendi sotto questa soglia e vari pezzi rallentano, dati non sono dove devono essere nel momento giusto, componenti non rispondono in tempo. A 500 iops stiamo guardando la moviola.
Corriamo ai ripari, spegniamo pezzi, disattiviamo cose inutili, cerchiamo di ridurre gli accessi a disco in modo che le componenti importanti riescano a muoversi alla velocità giusta. Non c'è speranza, il disco ha una latenza di 20ms, quattro volte un disco a piatti.
Sono quasi le otto quando decidiamo per la ritirata strategica: riportiamo i dati sul disco originario (pieno al 92%), riallineamo tutti gli ingranaggi, rioliamo tutto e di più. Il mondo torna a muoversi a velocità normale. Accanto all'orgogliosa icona dell'SSD, nel pannello di amministrazione, la bolletta sale. Lenta, lentissima come il volume stesso, ma inesorabile.
La nuvola ci ha dato un disco finto, la nuvola se lo riprenderà. Per poi darlo a qualcun'altro, magia dell'allocazione dinamica.