Com suportar l'augment de les càrregues del sistema: parlem de preparacions a gran escala per al Black Friday

Hola Habr!

El 2017, durant el Black Friday, la càrrega va augmentar gairebé una vegada i mitja i els nostres servidors estaven al límit. Durant l'any, el nombre de clients ha crescut significativament i va quedar clar que sense una preparació preliminar acurada, la plataforma pot simplement no suportar les càrregues del 2018.

Ens vam marcar l'objectiu més ambiciós possible: volíem estar totalment preparats per a qualsevol augment d'activitat, fins i tot el més potent, i vam començar a posar en marxa noves capacitats amb antelació al llarg de l'any.

El nostre CTO Andrey Chizh (xizh_andrey) explica com ens vam preparar per al Black Friday 2018, quines mesures vam prendre per evitar caigudes i, per descomptat, els resultats d'una preparació tan acurada.

Com suportar l'augment de les càrregues del sistema: parlem de preparacions a gran escala per al Black Friday

Avui vull parlar dels preparatius per al Black Friday 2018. Per què ara, quan la majoria de les grans vendes queden enrere? Vam començar a preparar-nos aproximadament un any abans dels esdeveniments a gran escala, i mitjançant assaig i error vam trobar la solució òptima. Us recomanem que cuideu les estacions de calor amb antelació i eviteu les estafes que puguin aparèixer en el moment més inoportú.
El material serà útil per a tothom que vulgui treure el màxim benefici d'aquestes existències, perquè La part tècnica del problema no és inferior a la part de màrqueting aquí.

Característiques del trànsit a grans vendes

Contràriament a la creença popular, el Black Friday no és només un dia a l'any, sinó gairebé una setmana sencera: les primeres ofertes de descompte arriben 7-8 dies abans de la venda. El trànsit del lloc web comença a créixer sense problemes al llarg de la setmana, assoleix el seu punt màxim divendres i baixa força bruscament dissabte fins als nivells habituals de la botiga.

Com suportar l'augment de les càrregues del sistema: parlem de preparacions a gran escala per al Black Friday

Això és important tenir en compte: les botigues en línia es tornen especialment sensibles a qualsevol "alentiment" del sistema. A més, la nostra línia de butlletins de correu electrònic també va experimentar un augment significatiu en el nombre d'enviaments.

És estratègicament important per a nosaltres passar pel Black Friday sense accidents, perquè... La funcionalitat més important dels llocs web i butlletins de botigues depèn del funcionament de la plataforma, a saber:

  • Seguiment i emissió de recomanacions de productes,
  • Emissió de materials relacionats (per exemple, imatges del disseny de blocs de recomanacions, com ara fletxes, logotips, icones i altres elements visuals),
  • Proporcionar imatges de producte de la mida requerida (per a aquests propòsits tenim "ImageResizer": un subsistema que baixa una imatge del servidor de la botiga, la comprimeix a la mida requerida i, mitjançant servidors de memòria cau, produeix imatges de la mida requerida per a cada producte en cada bloc de recomanacions).

De fet, durant el Black Friday 2019, la càrrega del servei va augmentar un 40%, és a dir. el nombre d'esdeveniments que el sistema Retail Rocket rastreja i processa als llocs de botigues en línia ha augmentat de 5 a 8 mil sol·licituds per segon. A causa del fet que ens estàvem preparant per a càrregues més greus, vam sobreviure a un augment tan fàcil.

Com suportar l'augment de les càrregues del sistema: parlem de preparacions a gran escala per al Black Friday

Preparació general

El Black Friday és un moment ocupat per a tots els comerços minoristes i, en particular, el comerç electrònic. El nombre d'usuaris i la seva activitat en aquest moment està creixent significativament, així que, com sempre, ens hem preparat a fons per a aquesta època tan intensa. Afegim aquí el fet que tenim moltes botigues en línia connectades no només a Rússia, sinó també a Europa, on l'emoció és molt més alta, i tenim un nivell de passió pitjor que la sèrie brasilera. Què cal fer per estar totalment preparat per a l'augment de càrregues?

Treballar amb servidors

Primer, calia esbrinar què necessitàvem exactament per augmentar la potència del servidor. Ja a l'agost vam començar a demanar nous servidors específicament per al Black Friday; en total vam afegir 10 màquines addicionals. Al novembre estaven completament en combat.

Al mateix temps, es van reinstal·lar algunes de les màquines de compilació per utilitzar-les com a servidors d'aplicacions. Immediatament els vam preparar per utilitzar diferents funcions: tant per a l'emissió de recomanacions com per al servei ImageResizer, de manera que, segons el tipus de càrrega, cadascuna d'elles es pogués utilitzar per a un d'aquests rols. En mode normal, els servidors d'Aplicacions i ImageResizer tenen funcions clarament definides: els primers emeten recomanacions, els segons proporcionen imatges per a cartes i blocs de recomanacions als llocs web de compres en línia. En preparació del Black Friday, es va decidir fer tots els servidors de doble propòsit per tal d'equilibrar el trànsit entre ells en funció del tipus de descàrrega.

A continuació, vam afegir dos servidors grans per a Kafka (Apache Kafka) i vam obtenir un clúster de 5 màquines potents. Malauradament, tot no va anar tan bé com voldríem: durant el procés de sincronització de dades, dues màquines noves van ocupar tota l'amplada del canal de xarxa i vam haver d'esbrinar urgentment com dur a terme el procés d'afegit de manera ràpida i segura per al tota la infraestructura. Per resoldre aquest problema, els nostres administradors van haver de sacrificar de valent els seus caps de setmana.

Treballant amb dades

A més dels servidors, vam decidir optimitzar els fitxers per alleugerir la càrrega i un gran pas per a nosaltres va ser la traducció de fitxers estàtics. Tots els fitxers estàtics que anteriorment estaven allotjats als servidors es van traslladar a S3 + Cloudfront. Feia temps que volíem fer-ho, ja que la càrrega del servidor s'acostava als valors límit, i ara ha sorgit una gran oportunitat.

Una setmana abans del Black Friday, vam augmentar el temps d'emmagatzematge a la memòria cau d'imatges a 3 dies, de manera que si ImageResizer s'estavellava, les imatges guardades a la memòria cau prèviament es recuperarien del cdn. També va reduir la càrrega dels nostres servidors, ja que com més temps s'emmagatzema la imatge, menys sovint hem de gastar recursos en canviar la mida.

I, finalment, però no menys important: 5 dies abans del Black Friday, es va anunciar una moratòria sobre el desplegament de qualsevol nova funcionalitat, així com sobre qualsevol treball amb la infraestructura: tota l'atenció està dirigida a fer front a l'augment de les càrregues.

Plans de resposta a situacions difícils

Per molt de qualitat que sigui la preparació, els fakaps sempre són possibles. I hem desenvolupat 3 plans de resposta per a possibles situacions crítiques:

  • reducció de càrrega,
  • desactivar alguns serveis,
  • tancament total del servei.

Pla A: Reduir la càrrega. S'hauria d'haver activat si, a causa d'un augment de càrrega, els nostres servidors van anar més enllà dels temps de resposta acceptables. En aquest cas, hem preparat mecanismes per reduir gradualment la càrrega canviant part del trànsit als servidors d'Amazon, que simplement respondrien a totes les peticions amb "200 OK" i donarien una resposta buida. Vam entendre que es tractava d'una degradació de la qualitat del servei, però l'elecció entre el fet que el servei no funciona gens o no mostra recomanacions per a aproximadament el 10% del trànsit és evident.

Pla B: Inhabilitar serveis. Degradació parcial implícita del servei. Per exemple, reduir la velocitat de càlcul de recomanacions personals per tal de descarregar algunes bases de dades i canals de comunicació. En mode normal, les recomanacions es calculen en temps real, creant una versió diferent de la botiga en línia per a cada visitant, però en condicions d'augment de càrrega, reduir la velocitat permet que altres serveis bàsics continuïn funcionant.

Pla C: en cas d'Armageddon. Si es produeix una fallada completa del sistema, hem preparat un pla que ens permetrà desconnectar de manera segura dels nostres clients. Els compradors de la botiga simplement deixaran de veure recomanacions; el rendiment de la botiga en línia no patirà de cap manera. Per fer-ho, hauríem de restablir el nostre fitxer d'integració perquè els nous usuaris deixin d'interaccionar amb el servei. És a dir, desactivaríem el nostre codi de seguiment principal, el servei deixaria de recopilar dades i calcular recomanacions i l'usuari simplement veuria una pàgina sense blocs de recomanacions. Per a tots aquells que han rebut prèviament un fitxer d'integració, hem proporcionat l'opció de canviar el registre DNS a Amazon i el taló 200 OK.

Resultats de

Hem manejat tota la càrrega fins i tot sense necessitat d'utilitzar màquines de construcció addicionals. I gràcies a la preparació prèvia, no vam necessitar cap dels plans de resposta desenvolupats. Però tota la feina feta és una experiència inestimable que ens ajudarà a fer front a les afluències de trànsit més inesperades i enormes.
Com el 2017, la càrrega del servei va augmentar un 40%, i el nombre d'usuaris a les botigues en línia va augmentar un 60% el Black Friday. Totes les dificultats i errors es van produir durant el període preparatori, cosa que ens va salvar a nosaltres i als nostres clients de situacions imprevistes.

Com porteu el Black Friday? Com et prepares per a càrregues crítiques?

Font: www.habr.com

Afegeix comentari