Que faire si le Black Friday est demain et que vos serveurs ne sont pas prêts

Pour ceux qui se sont lancés dans le marketing ou qui se sont lancés dans le courant, le «Black Friday» est un battage médiatique, des commandes folles et des foules de clients.

Il est bon de préparer l’infrastructure à l’afflux à l’avance, mais à qui pensons-nous de telles choses à l’avance? Mais parfois, la décision de participer est prise la veille.

Ainsi, la fête du consumérisme a commencé, les serveurs de la boutique en ligne commencent à clignoter joyeusement, le centre d'appels surchauffe et les services de livraison proposent la livraison quelque part en janvier.
Que faire, se détendre et regarder le fakap philosophiquement ou se battre courageusement?



J'ai accompagné l'infrastructure des serveurs des boutiques en ligne pendant le Black Friday, et je n'ai jamais été contacté à l'avance ni donné le temps de me préparer. Je partage mon expérience avec ceux qui recevront la même commande aujourd'hui.

(Vous avez de la chance si vous pouvez le faire correctement, c'est-à-dire mettre en place une surveillance en quelques mois, analyser le trafic, les goulots d'étranglement, l'architecture du projet, effectuer des tests de résistance, si nécessaire, reconstruire l'architecture avec les développeurs, connecter à l'avance des capacités de serveur supplémentaires. nous parlerons de la bonne approche une autre fois, ici sur les mesures d'incendie).

Nous mettons en place un suivi


Je pense que la surveillance est primordiale dans tous les cas. Il y aura toujours des problèmes, mais grâce aux programmes de surveillance, vous pouvez comprendre où se trouvent maintenant les goulots d'étranglement.

Si possible, j'utilise des solutions comme Zabbix / Prometheus / ELK (selon l'architecture), sinon, je connecte rapidement le SaaS comme okmeter.io. Même si la vente ne dure qu'une journée, vous ne pourrez pas regarder un tas d'indicateurs sur un moniteur comme un jour zoulou de suite.

Les excellents outils sont encore blackfire.io/newrelic.com pour le profilage, pinba.org pour l'analyse des pages de "ralentissement" en général.

blackfire / newrelic vous aidera à trier le problème sur une page particulière, pinba vous aidera à voir quelles pages sont chargées le plus souvent et s'exécutent le plus longtemps (tout cela est sorti de la boîte dans Bitrix, par exemple, mais essayez d'aller dans son panneau d'administration et d'y travailler lorsque le serveur et le site est déjà très mauvais).

Coupez l'excédent


Je désactive tout ce qui peut être désactivé: des modules inutiles sous condition pour le moment, toutes sortes de jolies choses, etc.

La vente est un processus simple, une grande remise sur un certain nombre de produits. Un visiteur aux yeux brûlants veut choisir un produit jusqu'à ce qu'il soit épuisé, passer une commande, recevoir une remise, effectuer un paiement.
S'abonner à la newsletter, s'inscrire sur le site, interroger sur la qualité de service - tout cela ne intéresse plus le client maintenant, ces modules peuvent être désactivés ou simplifiés. Je désactive tout sans quoi le site peut fonctionner tranquillement pendant quelques jours.

Un exemple de pratique: pendant le Black Friday, j'ai débogué sur un serveur en cours d'exécution sous beaucoup de trafic, et après 2 heures, il s'est avéré que le module de service de livraison est extrêmement lent, qui accède aux services externes et calcule automatiquement le coût de livraison pour chaque commande. Lorsque le trafic a augmenté des centaines de fois, ces services externes ont tout simplement cessé de fonctionner.

Vous pouvez simplement vous asseoir et réfléchir, et qu'est-ce qui pourrait tomber sur votre site / dans une application mobile / etc?

Laisser tomber


Je me prépare au fait que tout service tombera de toute façon. Dans ce cas, vous devez montrer au moins quelque chose aux visiteurs.

Par exemple, un module de service de livraison non fonctionnel ou un formulaire de paiement ne doivent pas bloquer la totalité de la commande, l'utilisateur peut revenir demain et finaliser sa commande.

Sur les pages des erreurs des années 50, je montre le mail ou le numéro de téléphone du service commercial.

error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/www/yourwebsite.com/htdocs/sale-contacts/; } 

Monter une copie du site


S'il est possible d'avoir une copie du site pour tester les changements, c'est très bien. Je ne parle pas d'un système de déploiement établi :)

Soit dit en passant, les services cloud à la mode vous permettront de faire rapidement et facilement une copie du serveur de combat.

Étude de cas: un site, dont j'ai aidé à maintenir l'infrastructure pendant le Black Friday, après optimisation par les développeurs (partiellement en déplacement), ajout de ressources, optimisation des logiciels, a commencé à fonctionner plus ou moins bien avec un trafic important, mais toujours beaucoup ralenti lors de la commande. Les utilisateurs pensaient que les commandes n'étaient pas envoyées et, au cas où, ils auraient appuyé plusieurs fois sur le bouton de paiement. Plusieurs personnages ont appuyé sur le bouton 300 fois! Excellent test de résistance :) Des centaines de fois plus de visiteurs et quelque 300 commandes de plus! :)

Services CDN


Vous pouvez vous passer de CDN, mais si les serveurs ne peuvent objectivement pas faire face au retour de la bonne quantité de statique, c'est nécessaire.

Vous pouvez rapidement connecter un CDN pour les CMS populaires tels que 1C-Bitrix , Wordpress . Mais vous ne pouvez pas configurer le CDN sur la route, vous devez faire attention à l'avance.

AntidDoS


Je recommande fortement de connecter les services AntiDDoS et assurez-vous d'avancer (sinon, sous une charge soudaine, sans s'adapter au trafic normal, ils peuvent commencer à bloquer les visiteurs légitimes).

Pendant une certaine période, cela peut être fait gratuitement:


Ajouter des capacités de serveur


Nous prévoyons la possibilité d'ajouter des ressources. Il sera possible d'ajouter des ressources au serveur principal, de créer un nouveau nœud pour paralléliser les requêtes, un nœud pour mysql, etc. Si ce n'est pas vous-même, un sous-traitant embauché sur le côté vous en remerciera beaucoup.
C'est pratique si votre fournisseur a la capacité d'héberger des serveurs physiques et cloud (Selectel.ru, Servers.com).

Fuh, allons-y


La chose la plus dangereuse est les premières minutes après les newsletters. Le cache n'est pas encore réchauffé, il y a peu de statistiques, vous ne connaissez toujours pas les capacités du système (si vous n'avez pas effectué de tests sérieux à l'avance).

Quelques configs


Mise en cache dans Nginx


Nous allons créer un cache de 500 Mo pendant 3 heures pour toutes les pages à l'exception des pages de commande.

 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 { .... #   } 

Beaucoup de matériel supplémentaire, liens:


Le canal 100 mbit vous permet de donner 12 pages pesant 1 Mo par seconde, c'est 43 mille par heure; nginx est capable de fournir un tel volume même sur un serveur peu coûteux.

Nous distribuons les demandes sur plusieurs nœuds (le site doit être prêt à fonctionner avec plusieurs nœuds Web)



Via DNS Round-Robin


(attention ici, cette méthode n'est plus correctement prise en charge par de nombreux fournisseurs DNS)

 $ dig lifehacker.ru +short 136.243.37.180 136.243.37.178 


Via les amont nginx


 $ 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 { .... #   } 


Via Cloudflare, Qrator, etc.

Ils ont la possibilité de définir plusieurs backends directement à partir du panneau, la mise à jour de la configuration est généralement instantanée.

Calmement


Il arrive qu'il soit impossible d'assurer un travail parfait, mais l'essentiel pour les entreprises est que le système fonctionne essentiellement. Laissez-le ralentir, mais cela devrait permettre aux utilisateurs de passer des commandes, et ne pas appuyer sans cesse sur F5. «Misérable, inhibiteur, fracture angoissante», des milliers de clients l'utilisent en même temps, et ils font, font, passent des commandes, et chacun d'eux est précieux. J'ai vu des exemples où en un jour le magasin a fait un revirement de six mois, et le résultat valait tous les nerfs.

Des ventes réussies pour vous :)

Source: https://habr.com/ru/post/fr430710/


All Articles