Come resistere ai maggiori carichi sul sistema: parliamo di preparativi su larga scala per il Black Friday

Ehi Habr!

Nel 2017, durante il Black Friday, il carico è aumentato di quasi una volta e mezza e i nostri server erano al limite. Nel corso dell'anno, il numero di clienti è cresciuto in modo significativo ed è diventato chiaro che senza un'attenta preparazione preliminare la piattaforma potrebbe semplicemente non resistere ai carichi del 2018.

Ci siamo posti l'obiettivo più ambizioso possibile: volevamo essere pienamente preparati per qualsiasi ondata di attività, anche la più potente, e abbiamo iniziato a lanciare nuove capacità in anticipo durante tutto l'anno.

Il nostro CTO Andrey Chizh (chizh_andrey) racconta come ci siamo preparati per il Black Friday 2018, quali misure abbiamo adottato per evitare cadute e, naturalmente, i risultati di una preparazione così attenta.

Come resistere ai maggiori carichi sul sistema: parliamo di preparativi su larga scala per il Black Friday

Oggi voglio parlare dei preparativi per il Black Friday 2018. Perché proprio adesso, quando la maggior parte delle vendite più importanti sono ormai alle spalle? Abbiamo iniziato a prepararci circa un anno prima degli eventi su larga scala e, attraverso tentativi ed errori, abbiamo trovato la soluzione ottimale. Ti consigliamo di occuparti in anticipo delle stagioni calde ed evitare truffe che potrebbero saltar fuori nel momento più inopportuno.
Il materiale sarà utile a tutti coloro che vogliono ottenere il massimo profitto da tali azioni, perché Il lato tecnico della questione qui non è inferiore al lato marketing.

Caratteristiche del traffico alle grandi vendite

Contrariamente a quanto si crede, il Black Friday non dura solo un giorno all'anno, ma quasi un'intera settimana: le prime offerte di sconto arrivano 7-8 giorni prima dei saldi. Il traffico del sito web inizia a crescere in modo graduale durante tutta la settimana, raggiunge il suo picco il venerdì e scende bruscamente il sabato fino ai livelli normali del negozio.

Come resistere ai maggiori carichi sul sistema: parliamo di preparativi su larga scala per il Black Friday

Questo è importante da considerare: i negozi online diventano particolarmente sensibili a eventuali “rallentamenti” del sistema. Inoltre, anche la nostra linea di newsletter via email ha registrato un aumento significativo nel numero di invii.

Per noi è strategicamente importante superare il Black Friday senza incidenti, perché... La funzionalità più importante dei siti web e delle newsletter dei negozi dipende dal funzionamento della piattaforma, vale a dire:

  • Monitoraggio ed emissione di consigli sui prodotti,
  • Emissione di materiali correlati (ad esempio, immagini della progettazione di blocchi di raccomandazioni, come frecce, loghi, icone e altri elementi visivi),
  • Fornire immagini di prodotti della dimensione richiesta (per questi scopi abbiamo "ImageResizer" - un sottosistema che scarica un'immagine dal server del negozio, la comprime alla dimensione richiesta e, tramite server di caching, produce immagini della dimensione richiesta per ciascun prodotto in ciascun blocco di raccomandazioni).

Durante il Black Friday 2019, infatti, il carico sul servizio è aumentato del 40%, ovvero il numero di eventi che il sistema Retail Rocket traccia ed elabora sui siti dei negozi online è passato da 5 a 8mila richieste al secondo. A causa del fatto che ci stavamo preparando per carichi più gravi, siamo sopravvissuti facilmente a un simile aumento.

Come resistere ai maggiori carichi sul sistema: parliamo di preparativi su larga scala per il Black Friday

Preparazione generale

Il Black Friday è un periodo impegnativo per tutti i negozi al dettaglio e in particolare per l’e-commerce. Il numero di utenti e la loro attività in questo momento stanno crescendo in modo significativo, quindi, come sempre, ci siamo preparati al meglio per questo periodo impegnativo. Aggiungiamo qui il fatto che abbiamo molti negozi online collegati non solo in Russia, ma anche in Europa, dove l'eccitazione è molto più alta e otteniamo un livello di passione peggiore rispetto alla serie brasiliana. Cosa è necessario fare per essere pienamente preparati per l’aumento dei carichi?

Lavorare con i server

Per prima cosa era necessario scoprire di cosa avevamo esattamente bisogno per aumentare la potenza del server. Già in agosto abbiamo iniziato a ordinare nuovi server appositamente per il Black Friday: in totale abbiamo aggiunto altre 10 macchine. A novembre erano completamente in combattimento.

Allo stesso tempo, alcune macchine di costruzione sono state reinstallate per essere utilizzate come server delle applicazioni. Li abbiamo subito predisposti per utilizzare diverse funzionalità: sia per l'emissione di raccomandazioni che per il servizio ImageResizer, in modo che, a seconda del tipo di carico, ognuno di essi potesse essere utilizzato per uno di questi ruoli. Nella modalità normale i server Application e ImageResizer hanno funzioni chiaramente definite: i primi forniscono raccomandazioni, i secondi forniscono immagini per lettere e blocchi di raccomandazioni sui siti di shopping online. In preparazione al Black Friday, si è deciso di realizzare tutti i server con duplice scopo in modo da bilanciare il traffico tra loro a seconda del tipo di download.

Quindi abbiamo aggiunto due server di grandi dimensioni per Kafka (Apache Kafka) e abbiamo ottenuto un cluster di 5 macchine potenti. Purtroppo tutto non è andato liscio come avremmo voluto: durante il processo di sincronizzazione dei dati, due nuove macchine hanno occupato l'intera larghezza del canale di rete, e abbiamo dovuto capire con urgenza come eseguire il processo di aggiunta in modo rapido e sicuro per il intera infrastruttura. Per risolvere questo problema, i nostri amministratori hanno dovuto sacrificare coraggiosamente i loro fine settimana.

Lavorare con i dati

Oltre ai server, abbiamo deciso di ottimizzare i file per alleggerire il carico e un grande passo per noi è stata la traduzione dei file statici. Tutti i file statici precedentemente ospitati sui server sono stati spostati su S3 + Cloudfront. Lo desideravamo da molto tempo, poiché il carico sul server era vicino ai valori limite, e ora si è presentata una grande opportunità.

Una settimana prima del Black Friday, abbiamo aumentato il tempo di memorizzazione nella cache delle immagini a 3 giorni, in modo che, in caso di arresto anomalo di ImageResizer, le immagini precedentemente memorizzate nella cache venissero recuperate dal CDN. Ha anche ridotto il carico sui nostri server, poiché più a lungo l'immagine viene archiviata, meno spesso avremo bisogno di spendere risorse per il ridimensionamento.

E ultimo ma non meno importante: 5 giorni prima del Black Friday è stata annunciata una moratoria sull'implementazione di qualsiasi nuova funzionalità, nonché su qualsiasi lavoro con l'infrastruttura: tutta l'attenzione è rivolta a far fronte all'aumento dei carichi.

Piani per rispondere a situazioni difficili

Non importa quanto sia alta la preparazione, i fakaps sono sempre possibili. E abbiamo sviluppato 3 piani di risposta per possibili situazioni critiche:

  • riduzione del carico,
  • disabilitare alcuni servizi,
  • chiusura completa del servizio.

Piano A: ridurre il carico. Avrebbe dovuto essere attivato se, a causa di un aumento del carico, i nostri server fossero andati oltre i tempi di risposta accettabili. In questo caso, abbiamo preparato meccanismi per ridurre gradualmente il carico spostando parte del traffico sui server Amazon, che risponderebbero semplicemente a tutte le richieste con “200 OK” e darebbero una risposta vuota. Abbiamo capito che si trattava di un degrado della qualità del servizio, ma la scelta tra il fatto che il servizio non funzioni affatto o non mostri raccomandazioni per circa il 10% del traffico è ovvia.

Piano B: disattivare i servizi. Degrado parziale implicito del servizio. Ad esempio, riducendo la velocità di calcolo delle raccomandazioni personali per scaricare alcuni database e canali di comunicazione. Nella modalità normale, i consigli vengono calcolati in tempo reale, creando una versione diversa del negozio online per ogni visitatore, ma in condizioni di carico maggiore, riducendo la velocità si consente ad altri servizi principali di continuare a funzionare.

Piano C: in caso di Armageddon. Se si verifica un guasto completo del sistema, abbiamo preparato un piano che ci consentirà di essere disconnessi in sicurezza dai nostri clienti. Gli acquirenti del negozio semplicemente smetteranno di vedere i consigli; le prestazioni del negozio online non ne risentiranno in alcun modo. Per fare ciò, dovremmo reimpostare il nostro file di integrazione in modo che i nuovi utenti smettano di interagire con il servizio. Cioè, disabiliteremmo il nostro codice di monitoraggio principale, il servizio smetterebbe di raccogliere dati e calcolare consigli e l'utente vedrebbe semplicemente una pagina senza blocchi di consigli. Per tutti coloro che hanno precedentemente ricevuto un file di integrazione, abbiamo previsto la possibilità di trasferire il record DNS su Amazon e lo stub da 200 OK.

Risultati di

Abbiamo gestito l'intero carico anche senza la necessità di utilizzare macchine di costruzione aggiuntive. E grazie alla preparazione anticipata non abbiamo avuto bisogno di nessuno dei piani di risposta sviluppati. Ma tutto il lavoro svolto è un'esperienza preziosa che ci aiuterà a far fronte ai flussi di traffico più inaspettati ed enormi.
Come nel 2017, durante il Black Friday il carico sul servizio è aumentato del 40% e il numero di utenti nei negozi online è aumentato del 60%. Tutte le difficoltà e gli errori si sono verificati durante il periodo preparatorio, salvando noi e i nostri clienti da situazioni impreviste.

Come stai affrontando il Black Friday? Come ci si prepara per i carichi critici?

Fonte: habr.com

Aggiungi un commento