Para aquellos que están jugando con el marketing o simplemente están en la corriente, el Black Friday es exagerado, pedidos locos y multitudes de clientes.
Es bueno preparar de antemano la infraestructura para la afluencia, pero ¿a quién pensamos de antemano sobre estas cosas? Pero a veces, la decisión de participar se toma el día anterior.
Entonces, la fiesta del consumismo ha comenzado, los servidores de la tienda en línea comienzan a parpadear alegremente, el centro de llamadas se está sobrecalentando y los servicios de entrega ofrecen entregas en algún lugar en enero.
¿Qué hacer, relajarse y mirar al fakap filosóficamente o luchar valientemente?

Acompañé la infraestructura del servidor de las tiendas en línea durante el Black Friday, y nunca me contactaron por adelantado ni me dieron tiempo para prepararme. Comparto mi experiencia con aquellos que recibirán el mismo pedido hoy.
(Tiene suerte si puede hacerlo bien, es decir, configure el monitoreo durante varios meses, analice el tráfico, los cuellos de botella, la arquitectura del proyecto, realice pruebas de estrés, si es necesario, reconstruya la arquitectura junto con los desarrolladores, conecte las capacidades adicionales del servidor por adelantado. hablaremos sobre el enfoque correcto en otro momento, aquí sobre medidas de incendio).
Configuramos monitoreo
Creo que el monitoreo es primario en cualquier caso. Todavía habrá problemas, pero gracias a los horarios de monitoreo, puede comprender dónde están los cuellos de botella ahora.
Si es posible, uso soluciones como Zabbix / Prometheus / ELK (dependiendo de la arquitectura), si no, conecto rápidamente SaaS como okmeter.io. Incluso si la venta dura solo un día, no podrá ver un montón de indicadores en un monitor como un día zulú consecutivo.
Aún así, las mejores herramientas son blackfire.io/newrelic.com para la creación de perfiles, pinba.org para analizar las páginas de "desaceleración" en general.
blackfire / newrelic ayudará a resolver el problema en una página en particular, pinba lo ayudará a ver qué páginas se cargan con mayor frecuencia y se ejecutan más tiempo (por ejemplo, todo está listo para usar en Bitrix, pero intente ir a su panel de administración y trabajar allí cuando el servidor y el sitio ya es muy malo).
Cortar el exceso
Apago todo lo que se puede deshabilitar: módulos condicionalmente innecesarios en este momento, todo tipo de belleza, etc.
La venta es un proceso simple, un gran descuento en varios productos. Un visitante con ojos ardientes quiere elegir un producto hasta que se agote, hacer un pedido, obtener un descuento, hacer un pago.
Suscribiéndose al boletín, registrándose en el sitio, sondeando sobre la calidad del servicio: todo esto no le interesa al cliente ahora, estos módulos se pueden desactivar o simplificar. Apago todo sin lo cual el sitio puede funcionar en silencio durante un par de días.
Un caso de práctica: durante el Black Friday, depuré en un servidor en ejecución con mucho tráfico, y después de 2 horas resultó que el módulo de servicio de entrega es muy lento, que accede a servicios externos y calcula automáticamente el costo de entrega para cada pedido. Cuando el tráfico creció cientos de veces, estos servicios externos simplemente dejaron de funcionar.
Simplemente puede sentarse y pensar, y ¿qué podría caer en su sitio / en una aplicación móvil / etc.?
Dejando caer
Me estoy preparando para el hecho de que cualquier servicio caerá de todos modos. En este caso, debe mostrar a los visitantes al menos algo.
Por ejemplo, un módulo de servicio de entrega que no funciona o un formulario de pago no debe bloquear todo el pedido, el usuario puede regresar mañana y completar su pedido.
En las páginas de los errores de los años 50, muestro el correo o el número de teléfono del departamento de ventas.
error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/www/yourwebsite.com/htdocs/sale-contacts/; }
Levantar una copia del sitio
Si es posible tener una copia del sitio para probar los cambios, esto es muy bueno. No estoy hablando de un sistema de implementación establecido :)
Por cierto, los servicios en la nube de moda le permitirán hacer una copia rápida y fácil del servidor de batalla.
Estudio de caso: un sitio, cuya infraestructura ayudé a mantener durante el Black Friday, después de la optimización por parte de los desarrolladores (parcialmente en movimiento), agregando recursos, optimizando el software, comenzó a funcionar de manera más o menos tolerable con mucho tráfico, pero aún así mucho ralentizado al hacer pedidos. Los usuarios pensaron que no se estaban enviando pedidos, y por si acaso, presionaron el botón de pago varias veces. ¡Varias figuras presionaron el botón 300 veces! Gran prueba de estrés :) ¡Cientos de veces más visitantes, y unos 300 pedidos más! :)
Servicios CDN
Puede prescindir de CDN, pero si los servidores objetivamente no pueden hacer frente a la devolución de la cantidad correcta de estadísticas, es necesario.
Puede conectar rápidamente un CDN para CMS populares como
1C-Bitrix ,
Wordpress . Pero no puede configurar el CDN sobre la marcha, debe tener cuidado de antemano.
AntidDoS
También recomiendo conectar los servicios AntiDDoS y asegúrese de avanzar (de lo contrario, bajo una carga repentina, sin adaptarse al tráfico normal, pueden comenzar a bloquear visitantes legítimos).
Durante cierto período, esto se puede hacer de forma gratuita:
Agregar capacidades del servidor
Prevemos la posibilidad de agregar recursos. Será posible agregar recursos al servidor principal, crear un nuevo nodo para consultas paralelas, un nodo para mysql, etc. Si no es usted mismo, entonces un subcontratista contratado por el lado le agradecerá mucho por eso.
Es conveniente si su proveedor tiene la capacidad de alojar servidores físicos y en la nube (Selectel.ru, Servers.com).
Fuh, vamos
Lo más peligroso son los primeros minutos después de los boletines. El caché aún no se ha calentado, hay pocas estadísticas, aún no conoce las capacidades del sistema (si no ha realizado pruebas serias por adelantado).
Algunas configuraciones
Almacenamiento en caché en nginx
Haremos un caché de 500 MB durante 3 horas para todas las páginas, excepto las páginas de pedido.
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=blackfriday_cache:180m max_size=500m inactive=7d; # blackfriday_cache, 180 proxy_cache_key "$request_method$scheme$host$request_uri"; proxy_cache_use_stale error timeout invalid_header http_500; map $uri $cookie_nocache { # , ; 1 - , 0 - "/order" "1"; "/bitrix" "1"; default "0"; } location / { .... proxy_hide_header "Set-Cookie"; # proxy_ignore_headers "X-Accel-Expires"; proxy_ignore_headers "Expires"; proxy_ignore_headers "Cache-Control"; proxy_ignore_headers "Set-Cookie"; add_header X-Cache $upstream_cache_status; ... proxy_no_cache $cookie_nocache; # , map; 1 - proxy_cache blackfriday_cache; # proxy_cache_valid 180m; # 180 proxy_cache_valid 404 1m; # 404 - 1 .... proxy_pass http://backend; # } location @backend { .... # }
Materiales adicionales mucho, enlaces:
El canal de 100 mbit le permite dar 12 páginas con un peso de 1 MB por segundo, esto es 43 mil por hora; nginx puede dar ese volumen incluso en un servidor económico.
Distribuimos solicitudes en varios nodos (el sitio debe estar listo para funcionar con varios nodos web)
Vía Round-Robin DNS
(tenga cuidado aquí, este método ya no es compatible con muchos proveedores de DNS)
$ dig lifehacker.ru +short 136.243.37.180 136.243.37.178
Vía nginx aguas arriba
$ cat nginx.conf upstream backend { server backend1.yoursite.com; server backend2.yoursite.com; } server { server_name yoursite.com; location / { proxy_pass http://backend; } } location @backend { .... # }
Vía Cloudflare, Qrator, etc.
Tienen la capacidad de configurar múltiples backends directamente desde el panel, la actualización de la configuración suele ser instantánea.
Con calma
Sucede que es imposible garantizar un trabajo perfecto, pero lo principal para las empresas es que el sistema básicamente funciona. Deje que disminuya la velocidad, pero debería permitir a los usuarios hacer pedidos y no presionar sin parar F5. "Miserables, inhibitorios, que dividen los nervios de todos", miles de clientes lo usan al mismo tiempo, y hacen, hacen, hacen pedidos, y cada uno de ellos es valioso. Vi ejemplos en los que en un día la tienda hizo un cambio de seis meses, y el resultado valió la pena.
Ventas exitosas para usted :)