Cómo soportar mayores cargas en el sistema: hablamos de preparativos a gran escala para el Black Friday

¡Hola, Habr!

En 2017, durante el Black Friday, la carga aumentó casi una vez y media y nuestros servidores estaban al límite. A lo largo del año, el número de clientes ha crecido significativamente y quedó claro que sin una preparación preliminar cuidadosa, es posible que la plataforma simplemente no resista las cargas de 2018.

Nos fijamos el objetivo más ambicioso posible: queríamos estar completamente preparados para cualquier aumento de actividad, incluso el más fuerte, y comenzamos a lanzar nuevas capacidades con antelación a lo largo del año.

Nuestro CTO Andrey Chizh (chizh_andrey) cuenta cómo nos preparamos para el Black Friday 2018, qué medidas tomamos para evitar caídas y, por supuesto, los resultados de tan cuidadosa preparación.

Cómo soportar mayores cargas en el sistema: hablamos de preparativos a gran escala para el Black Friday

Hoy quiero hablaros de los preparativos para el Black Friday 2018. ¿Por qué ahora, cuando la mayoría de las grandes rebajas han quedado atrás? Comenzamos a prepararnos aproximadamente un año antes de eventos a gran escala y, mediante prueba y error, encontramos la solución óptima. Te recomendamos cuidar con antelación las temporadas de calor y prevenir estafas que puedan surgir en el momento más inoportuno.
El material será útil para cualquiera que quiera sacar el máximo beneficio de dichas acciones, porque El aspecto técnico del problema no es inferior aquí al aspecto de marketing.

Características del tráfico en grandes ventas.

Contrariamente a la creencia popular, el Black Friday no es sólo un día al año, sino casi una semana entera: las primeras ofertas de descuento llegan 7-8 días antes de las rebajas. El tráfico del sitio web comienza a crecer suavemente a lo largo de la semana, alcanza su punto máximo el viernes y cae bastante el sábado hasta los niveles habituales de la tienda.

Cómo soportar mayores cargas en el sistema: hablamos de preparativos a gran escala para el Black Friday

Es importante tener esto en cuenta: las tiendas online se vuelven especialmente sensibles a cualquier "desaceleración" del sistema. Además, nuestra línea de boletines por correo electrónico también experimentó un aumento significativo en el número de envíos.

Es estratégicamente importante para nosotros pasar el Black Friday sin caídas, porque... La funcionalidad más importante de los sitios web y los boletines de las tiendas depende del funcionamiento de la plataforma, a saber:

  • Seguimiento y emisión de recomendaciones de productos.
  • Emisión de materiales relacionados (por ejemplo, imágenes del diseño de bloques de recomendación, como flechas, logotipos, íconos y otros elementos visuales),
  • Proporcionar imágenes de productos del tamaño requerido (para estos fines tenemos "ImageResizer", un subsistema que descarga una imagen del servidor de la tienda, la comprime al tamaño requerido y, a través de servidores de almacenamiento en caché, produce imágenes del tamaño requerido para cada producto en cada bloque de recomendaciones).

De hecho, durante el Black Friday 2019, la carga del servicio aumentó un 40%, es decir. La cantidad de eventos que el sistema Retail Rocket rastrea y procesa en los sitios de tiendas en línea ha aumentado de 5 a 8 mil solicitudes por segundo. Debido al hecho de que nos estábamos preparando para cargas más serias, sobrevivimos fácilmente a tal oleada.

Cómo soportar mayores cargas en el sistema: hablamos de preparativos a gran escala para el Black Friday

Entrenamiento general

El Black Friday es una época de mucha actividad para todo el comercio minorista y el comercio electrónico en particular. El número de usuarios y su actividad en este momento está creciendo significativamente, por lo que, como siempre, nos hemos preparado a fondo para este momento tan ocupado. Agreguemos aquí el hecho de que tenemos muchas tiendas en línea conectadas no solo en Rusia, sino también en Europa, donde la emoción es mucho mayor y obtenemos un nivel de pasión peor que el de las series brasileñas. ¿Qué se debe hacer para estar completamente preparado para cargas mayores?

Trabajar con servidores

Primero, era necesario descubrir qué necesitábamos exactamente para aumentar la potencia del servidor. Ya en agosto comenzamos a pedir nuevos servidores específicamente para el Black Friday; en total agregamos 10 máquinas adicionales. En noviembre estaban plenamente en combate.

Al mismo tiempo, algunas de las máquinas construidas se reinstalaron para usarlas como servidores de aplicaciones. Inmediatamente los preparamos para utilizar diferentes funciones: tanto para emitir recomendaciones como para el servicio ImageResizer, de modo que, dependiendo del tipo de carga, cada uno de ellos pudiera usarse para uno de estos roles. En el modo normal, los servidores Application e ImageResizer tienen funciones claramente definidas: el primero emite recomendaciones, el segundo proporciona imágenes para cartas y bloques de recomendaciones en sitios web de compras online. En preparación para el Black Friday, se decidió crear todos los servidores de doble propósito para equilibrar el tráfico entre ellos según el tipo de descarga.

Luego agregamos dos servidores grandes para Kafka (Apache Kafka) y obtuvimos un grupo de 5 máquinas potentes. Desafortunadamente, no todo salió tan bien como nos gustaría: durante el proceso de sincronización de datos, dos nuevas máquinas ocuparon todo el ancho del canal de red, y tuvimos que descubrir urgentemente cómo realizar el proceso de adición de forma rápida y segura para el toda la infraestructura. Para resolver este problema, nuestros administradores tuvieron que sacrificar valientemente sus fines de semana.

Trabajar con datos

Además de los servidores, decidimos optimizar los archivos para aligerar la carga y un gran paso para nosotros fue la traducción de archivos estáticos. Todos los archivos estáticos que anteriormente estaban alojados en servidores se trasladaron a S3 + Cloudfront. Llevábamos mucho tiempo queriendo hacer esto, ya que la carga en el servidor estaba cerca de los valores límite, y ahora ha surgido una gran oportunidad.

Una semana antes del Black Friday, aumentamos el tiempo de almacenamiento en caché de imágenes a 3 días, de modo que si ImageResizer fallaba, las imágenes previamente almacenadas en caché se recuperarían del cdn. También redujo la carga en nuestros servidores, ya que cuanto más tiempo se almacena la imagen, menos a menudo necesitamos gastar recursos para cambiar el tamaño.

Y por último, pero no menos importante: 5 días antes del Black Friday, se anunció una moratoria sobre el despliegue de cualquier funcionalidad nueva, así como sobre cualquier trabajo con la infraestructura; toda la atención está dirigida a hacer frente al aumento de cargas.

Planes para responder a situaciones difíciles.

No importa la calidad de la preparación, siempre es posible realizar falsificaciones. Y hemos desarrollado 3 planes de respuesta ante posibles situaciones críticas:

  • reducción de carga,
  • deshabilitar algunos servicios,
  • cierre completo del servicio.

Plan A: Reducir la carga. Debería haberse activado si, debido a un aumento en la carga, nuestros servidores excedieron los tiempos de respuesta aceptables. En este caso, hemos preparado mecanismos para reducir gradualmente la carga cambiando parte del tráfico a los servidores de Amazon, que simplemente responderían a todas las solicitudes con "200 OK" y darían una respuesta vacía. Entendimos que se trataba de una degradación de la calidad del servicio, pero la elección entre que el servicio no funcione en absoluto o no muestre recomendaciones para aproximadamente el 10% del tráfico es obvia.

Plan B: Desactivar servicios. Implica degradación parcial del servicio. Por ejemplo, reducir la velocidad de cálculo de recomendaciones personales para descargar algunas bases de datos y canales de comunicación. En modo normal, las recomendaciones se calculan en tiempo real, creando una versión diferente de la tienda en línea para cada visitante, pero en condiciones de mayor carga, reducir la velocidad permite que otros servicios principales sigan funcionando.

Plan C: en caso de Armagedón. Si ocurre una falla completa del sistema, hemos preparado un plan que nos permitirá desconectarnos de nuestros clientes de manera segura. Los compradores de la tienda simplemente dejarán de ver recomendaciones y el rendimiento de la tienda online no se verá afectado de ninguna manera. Para ello tendríamos que resetear nuestro archivo de integración para que los nuevos usuarios dejaran de interactuar con el servicio. Es decir, desactivaríamos nuestro código de seguimiento principal, el servicio dejaría de recopilar datos y calcular recomendaciones, y el usuario simplemente vería una página sin bloques de recomendaciones. Para todos aquellos que recibieron previamente un archivo de integración, brindamos la opción de cambiar el registro DNS a Amazon y el código auxiliar 200 OK.

resultados

Manejamos toda la carga incluso sin la necesidad de utilizar máquinas de construcción adicionales. Y gracias a la preparación previa, no necesitábamos ninguno de los planes de respuesta desarrollados. Pero todo el trabajo realizado es una experiencia invaluable que nos ayudará a hacer frente a las afluencias de tráfico más inesperadas y enormes.
Al igual que en 2017, la carga del servicio aumentó un 40% y el número de usuarios en las tiendas online aumentó un 60% el Black Friday. Todas las dificultades y errores ocurrieron durante el período preparatorio, lo que nos salvó a nosotros y a nuestros clientes de situaciones imprevistas.

¿Cómo estás afrontando el Black Friday? ¿Cómo se prepara para cargas críticas?

Fuente: habr.com

Añadir un comentario