Dietro le quinte

Black Friday: l'esperimento rischioso che ha evitato un disastro

Dominik Bärlocher
29.11.2017
Traduzione: Alessandra Ruggieri De Micheli

Venerdì scorso, Digitec Galaxus AG ha dichiarato lo stato di emergenza in tutta la Svizzera. Il problema principale: i server non riuscivano a reggere il massiccio traffico di utenti e richieste. In prima linea avevamo Enes Poyaz, software engineer. Ci ha raccontato del giorno in cui gli ingegneri hanno puntato tutto su una carta, senza essere troppo sicuri di cosa sarebbe successo.

17 secondi. Ecco quanto ci è voluto perché digitec.ch andasse offline la prima volta venerdì scorso, giornata nota a livello internazionale come Black Friday. Il motivo: troppe richieste da parte degli utenti. I server della nostra azienda sono crollati dopo 17 secondi dopo che tu e altri utenti avete iniziato a navigare sul sito. Perché eravate in troppi a voler approfittare delle nostre offerte speciali durante il Black Friday.

«In realtà pensavamo che i server avrebbero resistito più a lungo», dice Enes Poyraz, Junior Software Engineer.

L’ingegnere mi racconta del giorno in cui lui e il suo team hanno costretto un’intera azienda ad azzerare la produttività e in cui hanno evitato il disastro completo con un tentativo disperato.

Il Black Friday era iniziato da soli 17 secondi quando i nostri server hanno smesso di funzionare

Nel preciso instante in cui crollano i server la prima volta, Esen è lì. Perché gli ingegneri (tutti i team sono denominati in base ai film di James Bond) rimangono in stand-by, pronti a qualsiasi evenienza, ogni Black Friday; che si trovino nei nostri nuovi uffici della Förrlibuckstrasse, nell’ufficio di casa o da qualche parte con il loro portatile e Internet mobile. Aspettano che i server cedano e fanno quello che possono.

Ma, a mezzanotte, sono arrivati al limite. I poveri ingegneri, solitamente molto orgogliosi delle loro imprese, devono incassare un duro colpo: gli uomini e le donne per cui un downtime di pochi secondi è già troppo ci mettono ben due ore a riportare i server in vita. Ma i problemi non sono finiti: il sito continua ad andare offline, a intermittenza e solo per poco. L’unica cosa che funziona è il Livestream del Digital Marketing.

«Per i clienti la cosa non è particolarmente piacevole, ma gli ingegneri si aspettavano una cosa del genere», dice Enes. Scrolla le spalle. Certo, è una situazione che non piace a nessuno e gli ingegneri cercano di farla durare il meno possibile, ma è del tutto prevedibile se un’intera nazione si fionda su un sito web nello stesso momento.

La seconda ondata

Poi, la calma. Dopo le 2 di notte gli abitanti della Svizzera dormono sonni tranquilli, contenti di essersi assicurati qualche bella offerta. Più tardi, nel corso della giornata, vengo a sapere dal negozio di Zurigo che una persona è stata dedicata esclusivamente a stipulare gli abbonamenti per smartphone. Il giorno prima, infatti, avevamo il 50% di sconto su tutti gli smartphone per chiunque stipulasse un abbonamento ed era possibile farlo anche online.

Verso le 9 Raphael è di nuovo in ufficio, in uno stato che descrive come «sonnolento». I server reggono. O quasi.

«Il traffico è aumentato costantemente nel corso della mattinata», dice Enes, «e abbiamo capito che, se continua così, i server non reggeranno fino a fine giornata».

La mia tastiera rimane inutilizzata, ma faccio degli esperimenti con altro hardware offline

Ma è tutto invano: a mezzogiorno, il server collassa di nuovo. La cosa è meno grave rispetto alla sera prima: il sito va e viene nell’arco di pochi secondi, ma in modo ancora troppo instabile perché l’esperienza d’acquisto degli utenti sia piacevole.

Gli ingegneri si lasciano la situazione alle spalle per la pausa pranzo, poi si preparano a riportare il sito online.

Un esperimento azzardato risolve il disastro

Mentre Oliver e un team di ingegneri provenienti da tutti i reparti di servizi di ingegneria mettono il sito offline, Enes è impegnato a lavorare con altri due colleghi per mettere insieme un piano d’azione. Cosa fare, se scollegare i servizi interni non serve a niente?

Ai tre ingegneri tocca il compito di trovare una soluzione quando tutto il resto fallisce.

«Più fuori dagli schemi di così non si può», dice Enes. Si sente decisamente orgoglioso di aver fatto parte del team che ha trovato una soluzione; quest’uomo, normalmente tranquillo e pacato, improvvisamente parla a voce alta.

«Non ho ancora provato Redis», dice, «ma ho fatto qualche test per due giorni». Secondo i calcoli, non sarà in grado di gestire il sistema del più grande negozio online della Svizzera. Quando Enes guarda i suoi appunti di due settimane fa, sorride.

Sicuramente ha alcuni campi di applicazione qua da noi
Appunti di Enes Poyraz

Chiediamo a Enes: «Pensi che andrà così?»

L'ingegnere dice di sì.

Redis prende le redini

Il problema si presenta con il go-live, che avviene nel modo più caotico possibile. Enes vuole lanciare Redis su un Managed Server di Microsoft in modo che i carichi non siano eccessivi internamente.

«Purtroppo, Redis lavora con la porta 6380, che da noi è chiusa», dice. Ne richiede con urgenza l'apertura, cosa che purtroppo non è possibile, dato che il server di Microsoft blocca proprio questa porta. Ma Enes ha imparato una cosa: ha sempre un piano B.

«Contemporaneamente, ho cercato di far lavorare Redis sul cloud di Google», aggiunge. Ma anche questo si rivela più difficile del previsto. Con l'aiuto di Michal Nebes, Senior Software Engineer, riesce ad avviare un Redis Cluster.

Intorno alle 16:00, la situazione è grave. Viene fatta una rapida revisione del codice. Secondo Boško Stupar, Senior Software Engineer, il codice funziona e misura troppi Round Trip dei dati, vale a dire il tempo necessario per inviare i dati al server e tornare al computer dell'utente.

  • Normale: da 50 a 500 millisecondi. Troppo lento
  • Redis, sistema di test locale: da 8 a 9 millisecondi
  • Redis, produttivo: da 16 a 19 millisecondi

Redis va online. In pratica, le vendite della sera sono state affidate a un sistema non testato, con la minima sicurezza.

Alcuni secondi di panico.

Redis legge le richieste e crea una cache.

Il carico sui server è notevolmente ridotto. Il negozio online si sta stabilizzando.

Il carico CPU di un server di archiviazione online. A sinistra ci sono i due picchi che mostrano un carico del 100% durante la notte e intorno a mezzogiorno

Gli ingegneri tirano un sospiro di sollievo.

Più tardi, su Facebook, Boško Stupar scrive:

Sopravvissuti al Black Friday. È stata la giornata più incredibile della mia carriera! Stressante, dura e gratificante. Per i nerd: abbiamo allestito un sistema di caching a due stadi con farm Redis centralizzata. Chirurgia a cuore aperto senza anestesia. PS: odio il Black Friday.
Boško Stupar

Dopo il tramonto, gli ingegneri si riuniscono intorno ad una birra al quinto piano della Pfingstweidstrasse, tenendo sempre un occhio puntato sul negozio. Non è proprio una festa selvaggia, ma almeno si rilassano un po’.

Intorno alle 18:55, Enes ha revocato lo stato di emergenza tramite WhatsApp:

«Redis è live»

I server funzionano normalmente, a carico normale. Nel frattempo, in negozio ci sono persone che aspettano in coda, sottoscrivono abbonamenti smartphone ed effettuano ordini. Adrian Maier, Store Manager, si trova all'ingresso della filiale di Zurigo e informa i clienti sui tempi di attesa. Venti minuti, quaranta minuti. È stanco, così come il personale dietro le casse.

Gli ingegneri ormai hanno finito di lavorare, ma i colleghi delle filiali sono gli ultimi a lasciare il negozio. Per il personale delle casse, la giornata termina alle 20.00. Niente più abbonamenti, consegne, domande.

Quo vadis, Redis?

Il sistema Redis rimane online durante il fine settimana e fino a lunedì sera per far fronte al Cyber Monday. Gli ingegneri sono soddisfatti e orgogliosi del loro operato: lunedì il negozio è ancora stabile. Bene: Redis ha prestato servizio per la prima volta e il cluster verrà rimosso dalla rete.

«In fin dei conti, stiamo parlando di un sistema che non è stato ancora completamente testato», dice Enes.

Gli ingegneri hanno un lungo elenco di domande da affrontare prima di poter aggiungere Redis alla rete permanentemente e senza preoccuparsi di causare qualche disastro. Di queste domande, tante somigliano a questa: «Redis, cos’è quella variabile $?»

Ora che la situazione è nuovamente sotto controllo, gli ingegneri possono concentrarsi su questi temi. Perché se il Black Friday ci ha insegnato una cosa, quella è il potenziale di Redis. Sarebbe un peccato non utilizzarlo.

A 477 persone piace questo articolo


User Avatar
User Avatar

Giornalista. Autore. Hacker. Sono un contastorie e mi piace scovare segreti, tabù, limiti e documentare il mondo, scrivendo nero su bianco. Non perché sappia farlo, ma perché non so fare altro.


Dietro le quinte

Novità sulle funzionalità del negozio, informazioni dal marketing o dalla logistica e molto altro ancora.

Visualizza tutti