Comment résister aux charges accrues sur le système : on parle de préparatifs à grande échelle pour le Black Friday

Hé Habr !

En 2017, lors du Black Friday, la charge a augmenté de près d'une fois et demie et nos serveurs étaient à leur limite. 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 minutieuse, la plateforme pourrait tout simplement ne pas résister aux charges de 2018.

Nous nous sommes fixé l'objectif le plus ambitieux possible : nous avons voulu être parfaitement préparés à toute poussée d'activité, même la plus puissante, et avons commencé à lancer de nouvelles capacités en amont tout au long de l'année.

Notre CTO Andrey 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 de cette préparation minutieuse.

Comment résister aux charges accrues sur le système : on parle de préparatifs à grande échelle pour le Black Friday

Aujourd'hui, je veux parler des préparatifs du Black Friday 2018. Pourquoi maintenant, alors que la plupart des grandes ventes sont derrière nous ? 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 d’anticiper les saisons chaudes et d’éviter les arnaques qui pourraient surgir au moment le plus inopportun.
Le matériel sera utile à tous ceux qui souhaitent tirer le maximum de profit de ces stocks, car L'aspect technique du problème n'est ici pas inférieur à l'aspect marketing.

Caractéristiques du trafic lors des grandes ventes

Contrairement à la croyance populaire, le Black Friday ne dure pas seulement un jour par an, mais presque une semaine entière : les premières offres de réduction arrivent 7 à 8 jours avant les soldes. Le trafic sur le site Web commence à croître progressivement tout au long de la semaine, atteint son apogée le vendredi et chute assez fortement le samedi pour revenir aux niveaux habituels du magasin.

Comment résister aux charges accrues sur le système : on parle de préparatifs à grande échelle pour le Black Friday

Il est important d’en tenir compte : les boutiques en ligne deviennent particulièrement sensibles à tout « ralentissement » du système. De plus, notre ligne de newsletter par courrier électronique a également connu une augmentation significative du nombre de soumissions.

Il est stratégiquement important pour nous de traverser le Black Friday sans crash, car... Les fonctionnalités les plus importantes des sites Web et des newsletters des magasins dépendent du fonctionnement de la plateforme, à savoir :

  • Suivre et émettre des recommandations de produits,
  • Émission de documents connexes (par exemple, des images de la conception de blocs de recommandation, tels que des flèches, des logos, des icônes et d'autres éléments visuels),
  • Fournir des images de produits de la taille requise (à ces fins, nous avons « ImageResizer » - un sous-système qui télécharge une image depuis le serveur du magasin, la compresse à la taille requise et, via des serveurs de mise en cache, produit des images de la taille requise 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 suit et traite sur les sites des boutiques en ligne est passé de 5 8 à XNUMX XNUMX requêtes par seconde. Étant donné que nous nous préparions à des charges plus importantes, nous avons facilement survécu à une telle poussée.

Comment résister aux charges accrues sur le système : on parle de préparatifs à grande échelle pour le Black Friday

Préparation générale

Le Black Friday est une période chargée pour tous les détaillants et le commerce électronique en particulier. Le nombre d'utilisateurs et leur activité en ce moment augmentent considérablement, c'est pourquoi, comme toujours, nous nous sommes soigneusement préparés pour cette période chargée. Ajoutons ici le fait que nous avons de nombreuses boutiques en ligne connectées non seulement en Russie, mais aussi en Europe, où l'enthousiasme est beaucoup plus élevé, et nous obtenons un niveau de passion pire que la série brésilienne. Que faut-il faire pour être pleinement préparé à des charges accrues ?

Travailler avec des serveurs

Tout d’abord, il fallait déterminer exactement ce dont nous avions besoin pour augmenter la puissance du serveur. En août déjà, nous avons commencé à commander de nouveaux serveurs spécifiquement pour le Black Friday – au total, nous avons ajouté 10 machines supplémentaires. En novembre, ils étaient pleinement au combat.

Dans le même temps, certaines machines de build ont été réinstallées pour être utilisées comme serveurs d'applications. Nous les avons immédiatement préparés à utiliser différentes fonctions : à la fois pour l'émission de recommandations et pour le service ImageResizer, afin que, selon le type de chargement, 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 émettent des recommandations, les seconds fournissent des images pour les lettres et les blocs de recommandations sur les sites d'achats en ligne. En préparation du Black Friday, il a été décidé de réaliser tous les serveurs à double usage afin d'équilibrer le trafic entre eux en fonction du type de téléchargement.

Ensuite, nous avons ajouté deux grands 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 : pendant le processus de synchronisation des données, deux nouvelles machines ont occupé toute la largeur du canal réseau, et nous avons dû trouver de toute urgence comment effectuer le processus d'ajout rapidement et en toute sécurité pour le l'ensemble des infrastructures. Pour résoudre ce problème, nos administrateurs ont dû vaillamment sacrifier leurs week-ends.

Travailler avec des données

En plus des serveurs, nous avons décidé d'optimiser les fichiers pour alléger la charge et une grande étape pour nous a été la traduction des fichiers statiques. Tous les fichiers statiques qui étaient auparavant hébergés sur des serveurs ont été déplacés vers S3 + Cloudfront. Nous voulions le faire depuis longtemps, car la charge sur le serveur était proche des valeurs limites, et maintenant une belle opportunité s'est présentée.

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 panne d'ImageResizer, les images précédemment mises en cache soient récupérées à partir du CDN. Cela a également réduit la charge sur nos serveurs, car plus l'image est stockée longtemps, moins nous avons besoin de dépenser des ressources pour le redimensionner.

Et last but not least : 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 est portée sur la gestion des charges accrues.

Plans pour répondre aux situations difficiles

Quelle que soit la qualité de la préparation, les fakaps sont toujours possibles. Et nous avons développé 3 plans d’intervention pour d’éventuelles situations critiques :

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

Plan A : Réduire la charge. Aurait dû être activé si, en raison d'une augmentation de charge, nos serveurs dépassaient les délais de réponse acceptables. Dans ce cas, nous avons préparé des mécanismes pour réduire progressivement la charge en basculant une partie du trafic vers les serveurs Amazon, qui répondraient simplement à toutes les demandes par « 200 OK » et donneraient une réponse vide. Nous avons compris qu'il s'agissait 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ésactiver les services. Implique une dégradation partielle du service. Par exemple, réduire la vitesse de calcul des recommandations personnelles afin de décharger certaines bases de données et canaux de communication. En mode normal, les recommandations sont calculées en temps réel, créant une version différente de la boutique en ligne pour chaque visiteur, mais dans des conditions de charge accrue, la réduction de la vitesse permet aux autres services de base de continuer à fonctionner.

Plan C : en cas d'Armageddon. Si une panne complète du système survient, nous avons préparé un plan qui nous permettra d'être déconnectés en toute sécurité de nos clients. Les acheteurs du magasin cesseront tout simplement de voir les recommandations ; les performances de la boutique en ligne n'en souffriront en rien. Pour ce faire, nous devrons réinitialiser notre fichier d'intégration afin que les nouveaux utilisateurs cessent d'interagir avec le service. Autrement dit, nous désactiverions notre code de suivi principal, le service cesserait de collecter des données et de calculer des recommandations, et l'utilisateur verrait simplement une page sans blocs de recommandations. Pour tous ceux qui ont déjà reçu un fichier d'intégration, nous avons prévu la possibilité de basculer l'enregistrement DNS vers Amazon et le stub 200 OK.

Les résultats de

Nous avons géré la totalité de la charge même sans avoir besoin d'utiliser des machines de construction supplémentaires. Et grâce à une 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 massifs.
Comme en 2017, la charge sur le service a augmenté de 40 % et le nombre d'utilisateurs dans les boutiques en ligne a augmenté de 60 % lors du Black Friday. Toutes les difficultés et erreurs se sont produites pendant la période préparatoire, ce qui nous a épargné, ainsi qu'à nos clients, des situations imprévues.

Comment vivez-vous le Black Friday ? Comment se préparer aux charges critiques ?

Source: habr.com

Ajouter un commentaire