Como soportar o aumento das cargas do sistema: falamos de preparacións a gran escala para o Black Friday

Ola Habr!

En 2017, durante o Black Friday, a carga aumentou case unha vez e media e os nosos servidores estaban ao seu límite. Ao longo do ano, o número de clientes creceu significativamente e quedou claro que sen unha preparación preliminar coidadosa, a plataforma pode simplemente non soportar as cargas de 2018.

Fixémonos o obxectivo máis ambicioso posible: queriamos estar totalmente preparados para calquera, incluso os máis potentes, aumentos de actividade e comezamos a lanzar novas capacidades con antelación ao longo do ano.

O noso CTO Andrey Chizh (chizh_andrey) conta como nos preparamos para o Black Friday 2018, que medidas tomamos para evitar caídas e, por suposto, os resultados dunha preparación tan coidadosa.

Como soportar o aumento das cargas do sistema: falamos de preparacións a gran escala para o Black Friday

Hoxe quero falar dos preparativos para o Black Friday 2018. Por que agora, cando a maioría das grandes vendas están atrás? Comezamos a prepararse aproximadamente un ano antes de eventos a gran escala, e por proba e erro atopamos a solución óptima. Recomendamos que coides as estacións de calor con antelación e evites estafas que poidan aparecer no momento máis inoportuno.
O material será útil para todos os que queiran sacar o máximo beneficio de tales accións, porque O lado técnico do problema non é inferior ao de marketing aquí.

Características do tráfico en grandes vendas

Ao contrario da crenza popular, o Black Friday non é só un día ao ano, senón case toda unha semana: as primeiras ofertas de desconto chegan 7-8 días antes da venda. O tráfico do sitio web comeza a crecer sen problemas ao longo da semana, alcanza o seu pico o venres e descende bastante o sábado ata alcanzar os niveis habituais da tenda.

Como soportar o aumento das cargas do sistema: falamos de preparacións a gran escala para o Black Friday

É importante ter en conta isto: as tendas en liña fanse especialmente sensibles a calquera "desaceleración" do sistema. Ademais, a nosa liña de boletíns de correo electrónico tamén experimentou un aumento significativo no número de envíos.

É estratexicamente importante para nós pasar polo Black Friday sen accidentes, porque... A funcionalidade máis importante dos sitios web e boletíns de tendas depende do funcionamento da plataforma, a saber:

  • Seguimento e emisión de recomendacións de produtos,
  • Emisión de materiais relacionados (por exemplo, imaxes do deseño de bloques de recomendación, como frechas, logotipos, iconas e outros elementos visuais),
  • Proporcionar imaxes de produtos do tamaño necesario (para estes efectos temos "ImageResizer": un subsistema que descarga unha imaxe do servidor da tenda, comprime ata o tamaño necesario e, a través dos servidores de caché, produce imaxes do tamaño necesario para cada produto en cada bloque de recomendación).

De feito, durante o Black Friday 2019, a carga do servizo aumentou un 40%, é dicir. o número de eventos que o sistema Retail Rocket rastrexa e procesa nos sitios de tendas en liña aumentou de 5 a 8 mil solicitudes por segundo. Debido ao feito de que nos estabamos preparando para cargas máis graves, sobrevivimos facilmente a tal aumento.

Como soportar o aumento das cargas do sistema: falamos de preparacións a gran escala para o Black Friday

Formación xeral

O Black Friday é un momento moi ocupado para todo o comercio polo miúdo e o comercio electrónico en particular. O número de usuarios e a súa actividade neste momento está a crecer significativamente, polo que, coma sempre, preparámonos a fondo para este tempo tan ocupado. Engademos aquí o feito de que temos moitas tendas en liña conectadas non só en Rusia, senón tamén en Europa, onde a emoción é moito maior, e temos un nivel de paixón peor que a serie brasileira. Que hai que facer para estar totalmente preparado para o aumento de cargas?

Traballar con servidores

En primeiro lugar, era necesario descubrir o que precisabamos exactamente para aumentar a potencia do servidor. Xa en agosto, comezamos a pedir novos servidores específicamente para o Black Friday; en total, engadimos 10 máquinas adicionais. En novembro estaban totalmente en combate.

Ao mesmo tempo, algunhas das máquinas de compilación reinstaláronse para usalas como servidores de aplicacións. Inmediatamente preparámolos para empregar diferentes funcións: tanto para emitir recomendacións como para o servizo ImageResizer, para que, segundo o tipo de carga, cada unha delas puidese ser utilizada para un destes roles. En modo normal, os servidores Application e ImageResizer teñen funcións claramente definidas: os primeiros emiten recomendacións, os segundos proporcionan imaxes para cartas e bloques de recomendacións en sitios web de compras en liña. Como preparación para o Black Friday, decidiuse facer todos os servidores de dobre propósito co fin de equilibrar o tráfico entre eles dependendo do tipo de descarga.

Despois engadimos dous servidores grandes para Kafka (Apache Kafka) e obtivemos un clúster de 5 máquinas potentes. Desafortunadamente, todo non saíu tan ben como nos gustaría: durante o proceso de sincronización de datos, dúas novas máquinas ocuparon todo o ancho da canle de rede e tivemos que descubrir con urxencia como levar a cabo o proceso de engadido de forma rápida e segura para o toda a infraestrutura. Para resolver este problema, os nosos administradores tiveron que sacrificar con valentía as súas fins de semana.

Traballando con datos

Ademais dos servidores, decidimos optimizar ficheiros para alixeirar a carga e un gran paso para nós foi a tradución de ficheiros estáticos. Todos os ficheiros estáticos que estaban aloxados anteriormente en servidores movéronse a S3 + Cloudfront. Levamos moito tempo querendo facelo, xa que a carga no servidor estaba preto dos valores límite, e agora xurdiu unha gran oportunidade.

Unha semana antes do Black Friday, aumentamos o tempo de almacenamento na caché de imaxes a 3 días, de xeito que se se fallase ImageResizer, as imaxes almacenadas na memoria caché anteriormente serían recuperadas do cdn. Tamén reduciu a carga dos nosos servidores, xa que canto máis tempo estea almacenada a imaxe, con menor frecuencia necesitaremos gastar recursos en redimensionar.

E, por último, pero non menos importante: 5 días antes do Black Friday, anunciouse unha moratoria sobre o despregamento de calquera nova funcionalidade, así como sobre calquera traballo coa infraestrutura: toda a atención está dirixida a facer fronte ao aumento das cargas.

Plans de resposta a situacións difíciles

Por moi de alta calidade que sexa a preparación, os fakaps sempre son posibles. E elaboramos 3 plans de resposta ante posibles situacións críticas:

  • redución de carga,
  • desactivando algúns servizos,
  • peche total do servizo.

Plan A: Reducir a carga. Debería estar activado se, debido a un aumento de carga, os nosos servidores foron máis aló dos tempos de resposta aceptables. Neste caso, preparamos mecanismos para reducir gradualmente a carga cambiando parte do tráfico aos servidores de Amazon, que simplemente responderían a todas as solicitudes con "200 OK" e darían unha resposta baleira. Entendemos que se trataba dunha degradación da calidade do servizo, pero é obvia a elección entre que o servizo non funciona en absoluto ou non mostra recomendacións para aproximadamente o 10% do tráfico.

Plan B: Desactivar servizos. Degradación parcial implícita do servizo. Por exemplo, reducindo a velocidade de cálculo de recomendacións persoais para descargar algunhas bases de datos e canles de comunicación. No modo normal, as recomendacións calcúlanse en tempo real, creando unha versión diferente da tenda en liña para cada visitante, pero en condicións de aumento da carga, a redución da velocidade permite que outros servizos fundamentais sigan funcionando.

Plan C: en caso de Armagedón. Se se produce un fallo completo do sistema, preparamos un plan que nos permitirá desconectarnos de forma segura dos nosos clientes. Os compradores da tenda simplemente deixarán de ver recomendacións; o rendemento da tenda en liña non se verá afectado de ningún xeito. Para iso, teriamos que restablecer o noso ficheiro de integración para que os novos usuarios deixasen de interactuar co servizo. É dicir, desactivaríamos o noso código de seguimento principal, o servizo deixaría de recoller datos e de calcular recomendacións e o usuario simplemente vería unha páxina sen bloques de recomendacións. Para todos aqueles que recibiron previamente un ficheiro de integración, ofrecémoslle a opción de cambiar o rexistro DNS a Amazon e o talón 200 OK.

Resultados de

Manexamos toda a carga mesmo sen necesidade de utilizar máquinas de construción adicionais. E grazas á preparación previa, non necesitamos ningún dos plans de resposta desenvolvidos. Pero todo o traballo realizado é unha experiencia inestimable que nos axudará a afrontar as afluencias de tráfico máis inesperadas e grandes.
Do mesmo xeito que en 2017, a carga do servizo aumentou un 40% e o número de usuarios nas tendas en liña aumentou un 60% o Black Friday. Todas as dificultades e erros ocorreron durante o período preparatorio, o que nos aforrou a nós e aos nosos clientes de situacións imprevistas.

Como levades o Black Friday? Como te preparas para cargas críticas?

Fonte: www.habr.com

Engadir un comentario