2024-07-19

Il blackout del 18/7/2024

Ormai l'hanno riportato tutti i mezzi di informazione: questa notte (per gli USA era ancora giovedì) moltissimi sistemi basati su Microsoft Azure sono andati in tilt, mostrando la famosa Blue Screen Of Death, chiamata così quando era molto diffusa, che poi sarebbe il corrispettivo nei sistemi Windows a "non so più cosa fare".

Ma prima di prendersela con Bill Gates (che tra l'altro non è nemmeno più in Microsoft), bisogna sapere che il responsabile è un software di sicurezza prodotto da Crowdstrike, tra l'altro azienda non nuova a questo tipo di problemi, anche se più circoscritti (il link è alla pagina di Wikipedia, dove ne vengono riportati alcuni).

Non voglio entrare nei possibili motivi a basso livello, che ovviamente non verremo mai a sapere, ma vorrei invece dire due parole come commento ad un'intervista riportata su un quotidiano nazionale ad un innovation manager di una ditta informatica italiana.

L'intervistato, alla domanda di come si possono evitare questi problemi, risponde dicendo che non bisogna rilasciare (cioè mettere sul mercato) una nuova versione del prodotto per tutti i clienti, ma lo si rilascia per un piccolo gruppo di clienti (a occhio direi i meno importanti...), poi ad un gruppo più grande, fino ad arrivare urbi et orbi.

Certo, oggi si fa così. Ma fatemi ritornare a qualche decennio fa, quando la necessità era fornire un servizio di qualità. Su una nuova versione, prima del rilascio, veniva effettuato un cosiddetto smoke test (corrispettivo meccanico di "vediamo se si rompe qualcosa"), poi si passava ai test del controllo di qualità (QA o QC, a seconda delle filosofie), tutti riportati in check-list da spuntare. Passaggio dagli sviluppatori per la correzione dei bugs; poi si riprende il ciclo di test e così via. Quando si smette? Quando il numero di nuovi bugs trovati è inferiore ad un numero (o percentuale delle linee di codice). A quel punto viene dato l'ok al mercato.

Non ho idea delle procedure di qualità in essere in Crowdstrike, ma essendo un fornitore di Microsoft sarà sicuramente certificata, cioè avrà un sistema di qualità approvato. Quindi questo bug così grande non doveva passare; qualcosa è stato saltato. Considerato che è stato rilasciato in tutto il mondo con così grande sicurezza, è probabile che andasse a correggere qualcosa di nascosto ma molto pericoloso. Mi immagino la riunione di rilascio:

  • (PM) allora, rilasciamo? Tutto a posto?
  • (QA) non sono sicuro, non abbiamo i risultati della sezione xx.y
  • (PM) su 30 sezioni ne manca una, allora rilasciamo
  • (QA) ma potrebbe essere importante, potrebbe bloccare il server...
  • (PM) esagerato, è mai successo? Cosa suggeriresti allora?
  • (QA) una settimana in più di test
  • (PM) assolutamente no, il cliente si aspetta il rilascio domani... e poi dobbiamo mettere a posto quello che sai...
  • (QA) ma questo sarebbe peggio...
  • (PM) se andasse male, ma sono sicuro che non sarà così
  • (QA) io questa responsabilità non me la prendo, è rischioso...
  • (PM) allora esci dalla stanza e vai dal CEO a dirgli che devi ritardare il rilascio: vedrai che risate che si farà! Lo sai quanto ci rimettiamo a non rilasciare domani?
  • (QA) ma se ho ragione, la cosa sarà brutta e tutti se la prenderanno con me
  • (PM) beh, alla fine sarebbe giusto: non sei stato nei tempi. Per un errore tuo non deve rimetterci tutta l'azienda
  • (QA) allora prenditela con lo sviluppo, che mi hanno dato il codice con 10 giorni di ritardo
  • (RD finora in silenzio) lasciatemi fuori, il mio l'ho fatto
  • (QA) se i tuoi facessero meno bachi, io lavorerei meglio e più velocemente
  • (PM mentre gli altri due litigano) ok, ora basta. Ho appena calcolato che se non rilasciamo questa notte dobbiamo pagare una multa di xxxx dollari. In più rischiamo che il baco della scorsa volta venga scoperto. Quindi si rilascia questa notte. Tu RD prepara la patch e mettila in distribuzione e tu QA mandami il rilascio su Slack. Facciamo fare qualche test anche a questi benedetti clienti. Bene, è bello lavorare con voi (esce dalla stanza canterellando sotto voce).
  • (QA) senti RD, fai stare in ufficio un paio dei tuoi: se succede qualcosa ci vuole qualcuno che sappia dove mettere le mani
  • (RD) tranquillo, se qualcosa non va, spediamo a tutti i clienti la procedura per disinstallare il nuovo e recuperare il vecchio
  • (QA) speriamo non succeda. In bocca al lupo.
  • (RD) amen (escono entrambi, nessuno dei due veramente convinto)
Le cose saranno state certamente diverse, ma il succo sarà stato proprio questo: abbiamo sforato i tempi, ma non dobbiamo rimetterci. Quindi facciamo fare i test ai clienti, costa di meno. Di solito.
Questa volta temo di no...

Nessun commento: