Revenir au blog

Follow and Subscribe

Création de salles d’attente évolutives avec Fastly Compute

Brock Norvell

Architecte de solutions serverless senior, Fastly

Terri Allegretto

Responsable principal, marketing produit, plateforme développeur

Austin Spires

Senior Director of Developer Marketing

Imaginez que votre e-commerce organise une vente flash ou que votre plateforme libère des places pour un concert dans un stade. Des milliers d’utilisateurs inondent simultanément vos points de terminaison, menaçant de submerger vos serveurs d’origine et de créer une mauvaise expérience client qui conduit souvent des utilisateurs frustrés à voir des erreurs 404 ou des pages défectueuses.

Les salles d’attente sont une solution parfaite pour contrôler le flux de visiteurs vers votre site, maintenir la stabilité du site et optimiser l’expérience d’achat. Dans le cas de la vente de billets pour des événements très demandés, les salles d'attente permettent de faire patienter équitablement les clients et d'éviter les surventes. Ce blog fournira un aperçu d'un projet passionnant qui s'est concentré sur la création d'une application de salle d'attente sur Fastly Compute et comment vous pouvez l'utiliser pour votre propre cas d'utilisation.

Objectifs de notre projet de salle d'attente :

  • Gestion des files d'attente: L'application doit pouvoir gérer efficacement un grand nombre d'utilisateurs simultanés, en les plaçant dans une file d'attente virtuelle pour éviter la surcharge du serveur.

  • Mises à jour en temps réel: Les utilisateurs doivent pouvoir voir leur position dans la file d'attente et le temps d'attente estimé, qui doit être mis à jour automatiquement.

  • Paramètres configurables: Permettez d'ajuster facilement les paramètres de la file d'attente, comme les intervalles de rafraîchissement et les taux d'admission automatique des utilisateurs.

  • Mesures anti-fraude: Incluez des fonctionnalités de sécurité intégrées pour empêcher la manipulation des files d'attente et garantir un accès équitable.

  • Prise en charge de plusieurs files d'attente: Offrez la possibilité de gérer différents chemins ou événements avec des files d'attente distinctes.

Comment Fastly Compute permet de créer des salles d'attente évolutives

L'application de la salle d'attente utilise Fastly Compute en conjonction avec la base de données Redis d'Upstash. Upstash dispose d'une intégration API avec Fastly, et l'utilisation de ce type de base de données à état avec des opérations atomiques garantit que chaque opération qui y est écrite réussit dans l'ordre dans lequel elle a été reçue. Voici un aperçu général :

  1. Lorsqu'un utilisateur accède à un point d'accès protégé, l'application vérifie si une file d'attente est active pour ce chemin. Si l'utilisateur est actif, il reçoit un identifiant unique et est placé dans la file d'attente.

  2. "L'application utilise Redis pour la piste la position dans la file d'attente, sa longueur et le curseur (la prochaine position à être servie)."

  3. Les utilisateurs reçoivent un cookie contenant les informations relatives à leur file d'attente, qui se rafraîchit périodiquement pour maintenir leur position.

L'application peut admettre automatiquement les utilisateurs à un taux déterminé ou permettre l'admission manuelle par lots.

Figure 1 : Flux des requêtes des utilisateurs de la salle d’attente (voir les étapes ci-dessous)

  1. Un utilisateur fait une requête au site (qui est géré par Fastly).

  2. La requête est acheminée vers le service Fastly Compute. (C'est la logique principale de l'application qui s'exécute en périphérie. Il contient le code qui décide s'il faut mettre l'utilisateur en file d'attente ou l'admettre.

  3. La logique Compute vérifie si la salle d’attente est ACTIVE et si l’utilisateur possède un jeton valide (cookie).

  4. Si aucun jeton valide n'existe, Compute interagit avec Upstash Redis pour obtenir la longueur actuelle de la file d'attente, attribue à l'utilisateur une nouvelle position dans la file d'attente et émet un cookie de jeton.

  5. Si l'utilisateur n'est pas encore admis, Compute utilise un modèle de page stocké dans le Fastly KV Store pour servir immédiatement la page de la salle d'attente depuis la périphérie, garantissant que l'origine n'est jamais sollicitée.

  6. Si le jeton est valide et que l’utilisateur a atteint le début de la file d’attente (Jeton en direct ? = Oui), Compute transmet la requête au serveur d’origine.

Façons de personnaliser la salle d'attente :

  1. Alignez le modèle pour refléter votre marque: Personnalisez la page de la salle d'attente pour qu'elle corresponde à votre marque en utilisant le KV Store de Fastly.

  2. Geo-Targeting: configurez des files d'attente spécifiques à chaque pays pour les événements localisés.

  3. Plusieurs files d'attente: configurez différentes files d'attente pour diverses sections de votre site ou pour divers événements.

  4. Stratégies d'admission: Mettez en œuvre une logique personnalisée pour l'admission des utilisateurs depuis la file d'attente.

Créez votre salle d'attente Fastly Compute

Pour créer votre propre salle d’attente avec Fastly Compute :

  1. Configurez un service Fastly Compute

  2. Créez une base de données Upstash Redis

  3. Configurez le KV store de Fastly pour les paramètres de file d'attente et les modèles de page

  4. Implémentez la logique principale en utilisant JavaScript, Rust ou Go

  5. Testez minutieusement avec du trafic simulé

Protégez votre infrastructure et améliorez l’expérience utilisateur

En tirant parti de Fastly Compute et d'une base de données rapide et distribuée, vous pouvez créer des solutions robustes pour gérer des scénarios à fort trafic. Nous vous encourageons à explorer ce modèle et à l'adapter à vos cas d'utilisation spécifiques.

Que vous gériez des ventes de billets, des lancements de produits ou tout autre événement à forte demande, une salle d'attente bien mise en œuvre peut considérablement améliorer l'expérience utilisateur et protéger votre infrastructure. Bon codage, et faites-nous savoir quelles choses étonnantes vous créez avec Fastly Compute !