Comment résister à des charges système accrues: parlez de préparations à grande échelle pour le Black Friday

Bonjour, Habr!

En 2017, lors du Black Friday, la charge a augmenté presque une fois et demie, et nos serveurs étaient à la limite des possibilités. Au cours de l'année, le nombre de clients a considérablement augmenté et il est devenu clair que sans une préparation préalable approfondie, la plate-forme pourrait tout simplement ne pas résister aux charges de 2018.

L'objectif a été fixé le plus ambitieux de tous: nous voulions être pleinement préparés à toute explosion d'activité, même la plus puissante, et avons commencé à retirer de nouvelles capacités à l'avance au cours de l'année.

Notre CTO Andrei Chizh ( chizh_andrey ) raconte comment nous nous sommes préparés pour le Black Friday 2018, quelles mesures nous avons prises pour éviter les chutes et, bien sûr, les résultats d'une préparation aussi minutieuse.



Aujourd'hui, je veux parler des préparatifs du Black Friday 2018. Pourquoi maintenant, alors que la plupart des principales ventes sont en retard? Nous avons commencé à nous préparer environ un an avant les événements à grande échelle et, par essais et erreurs, nous avons trouvé la solution optimale. Nous vous recommandons de prendre soin des saisons chaudes à l'avance et d'éviter les fakaps qui peuvent émerger au moment le plus inopportun.
Le matériel sera utile à tous ceux qui veulent tirer le profit maximum de ces stocks, comme l'aspect technique du problème n'est pas inférieur à l'aspect marketing.

Caractéristiques du trafic sur les grosses ventes


Contrairement à la croyance populaire, le Black Friday n'est pas un jour par an, mais presque toute une semaine: les premières offres de réduction arrivent 7 à 8 jours avant la vente. Le trafic sur le site Web commence à croître en douceur toute la semaine, atteint son pic vendredi et chute assez fortement samedi aux indicateurs des magasins réguliers.



Ceci est important à considérer: les boutiques en ligne deviennent particulièrement sensibles à tout «ralentissement» du système. En outre, notre newsletter par e-mail a également connu une augmentation significative du nombre d'envois.

Il est stratégiquement important pour nous de traverser le Black Friday sans chutes, car la fonctionnalité la plus importante des sites et des listes de diffusion des magasins dépend du fonctionnement de la plateforme, à savoir:

  • Suivi et émission de recommandations de produits,
  • La publication de documents connexes (par exemple, des blocs de conception d'images de recommandations, tels que des flèches, des logos, des icônes et d'autres éléments visuels),
  • Émission d'images de produits de la bonne taille (à ces fins, nous avons «ImageResizer» - un sous-système qui télécharge une image à partir du serveur du magasin, la comprime à la taille souhaitée et, via des serveurs de mise en cache, fournit des images de la bonne taille pour chaque produit dans chaque bloc de recommandation).

En effet, lors du Black Friday 2019, la charge sur le service a augmenté de 40%, soit le nombre d'événements que le système Retail Rocket surveille et traite sur les sites des magasins en ligne est passé de 5 à 8 000 demandes par seconde. Du fait que nous nous préparions à des charges plus graves, nous avons facilement connu une telle montée subite.



Préparation générale



Le Black Friday est une période chaude pour tous les détaillants et pour le commerce électronique en particulier. Le nombre d'utilisateurs et leur activité en ce moment augmentent parfois, nous avons donc, comme toujours, bien préparé pour cette période chargée. Nous ajoutons ici le fait que de nombreux magasins en ligne nous sont connectés, non seulement en Russie mais aussi en Europe, où le battage médiatique est beaucoup plus élevé, et nous obtenons un niveau de passions pire que la série brésilienne. Que faut-il faire pour être parfaitement préparé à des charges accrues?

Travailler avec des serveurs


Pour commencer, il a fallu savoir exactement ce qui nous manquait pour augmenter la capacité des serveurs. Déjà en août, nous avons commencé à commander de nouveaux serveurs spécifiquement pour le Black Friday - un total de 10 machines supplémentaires ont été ajoutées. En novembre, ils étaient déjà complètement au combat.

Dans le même temps, une partie des machines de génération a été réinstallée pour être utilisée comme serveurs d'applications. Nous les avons immédiatement préparés pour l'utilisation de différentes fonctions: à la fois pour émettre des recommandations et pour le service ImageResizer, afin que, selon le type de charge, chacun d'eux puisse être utilisé pour l'un de ces rôles. En mode normal, les serveurs Application et ImageResizer ont des fonctions clairement définies: les premiers participent à l'émission des recommandations, les seconds fournissent des images de lettres et des blocs de recommandations sur le site des boutiques en ligne. En préparation du Black Friday, il a été décidé de faire en sorte que tous les serveurs à double usage équilibrent le trafic entre eux en fonction du type de charge.

Ensuite, nous avons ajouté deux gros serveurs pour Kafka (Apache Kafka) et obtenu un cluster de 5 machines puissantes. Malheureusement, tout ne s'est pas déroulé aussi bien que nous le souhaiterions: dans le processus de synchronisation des données, deux nouvelles machines ont occupé toute la largeur du canal réseau, et nous avons dû trouver rapidement comment exécuter le processus d'ajout rapidement et en toute sécurité pour l'ensemble de l'infrastructure. Pour résoudre ce problème, nos administrateurs ont dû vaillamment sacrifier le week-end.

Travailler avec des données


En plus des serveurs, nous avons décidé d'optimiser les fichiers pour faciliter le chargement, et une grande étape pour nous a été la traduction des fichiers statiques. Tous les fichiers statiques qui étaient précédemment hébergés sur les serveurs ont été transférés vers S3 + Cloudfront. Ils voulaient le faire depuis longtemps, car la charge sur le serveur était proche des valeurs limites, et maintenant une excellente raison apparaissait.

Une semaine avant le Black Friday, nous avons augmenté le temps de mise en cache des images à 3 jours, de sorte qu'en cas de chute d'ImageResizer, les images précédemment mises en cache ont été obtenues à partir de cdn. Cela a également réduit la charge sur nos serveurs, car plus l'image est stockée longtemps, moins nous devons dépenser de ressources pour le redimensionnement.

Et enfin, et non des moindres: 5 jours avant le Black Friday, un moratoire a été annoncé sur le déploiement de toute nouvelle fonctionnalité, ainsi que sur tout travail avec l'infrastructure - toute l'attention a été portée à faire face à des charges accrues.

Plans d'intervention d'urgence


Quelle que soit la qualité de la préparation, la fakapy est toujours possible. Et nous avons développé 3 plans de réponse aux situations critiques possibles:

  • réduction de la charge
  • désactiver certains services,
  • arrêt complet du service.

Plan A: réduction de charge. Auraient dû être impliqués si, en raison d'une augmentation de la charge, nos serveurs dépassent les délais de réponse acceptables. Dans ce cas, nous avons préparé des mécanismes pour réduire progressivement la charge en transférant une partie du trafic vers les serveurs Amazon, ce qui donnerait simplement «200 OK» à toutes les demandes et donnerait une réponse vide. Nous avons compris qu'il s'agit d'une dégradation de la qualité du service, mais le choix entre le fait que le service ne fonctionne pas du tout ou n'affiche pas de recommandations pour environ 10% du trafic est évident.

Plan B: désactivation des services. Impliquait une dégradation partielle du service. Par exemple, réduire la vitesse de calcul des recommandations personnelles dans le but de décharger certaines bases de données et canaux de communication. En mode normal, les recommandations sont calculées en mode temps réel, créant une version de la boutique en ligne pour chaque visiteur, mais dans des conditions de charges accrues, une diminution de la vitesse permet aux autres services de base de continuer à fonctionner.

Plan C: pour Armageddon. En cas de défaillance complète du système, nous avons préparé un plan qui nous déconnectera en toute sécurité des clients. Les acheteurs cesseront simplement de voir les recommandations; les performances d'une boutique en ligne ne seront pas affectées. Pour ce faire, nous devions réinitialiser notre fichier d'intégration afin que les nouveaux utilisateurs cessent d'interagir avec le service. Autrement dit, nous désactiverions le travail de notre code de suivi principal, le service cesserait de collecter des données et calculerait des recommandations, et l'utilisateur verrait simplement une page sans blocs de recommandation. Pour tous ceux qui ont déjà reçu le fichier d'intégration, nous avons fourni l'option de basculer les enregistrements DNS vers Amazon et un stub 200 OK.

Résumé


Nous avons supporté toute la charge même sans avoir besoin d'utiliser des machines de construction supplémentaires. Et grâce à la préparation préalable, nous n'avons eu besoin d'aucun des plans d'intervention élaborés. Mais tout le travail accompli est une expérience inestimable qui nous aidera à faire face aux afflux de trafic les plus inattendus et les plus importants.
Comme en 2017, la charge sur le service a augmenté de 40% et le nombre d'utilisateurs dans les boutiques en ligne pour le Black Friday a augmenté de 60%. Toutes les difficultés et les erreurs se sont produites pendant la période préparatoire, ce qui nous a sauvés, nous et nos clients, de situations imprévues.

Que pensez-vous du Black Friday? Comment se préparer aux charges critiques?

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


All Articles