Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configuration d'un routeur cellulaire sans serveur pour une architecture basée sur les cellules
Créée par Mian Tariq (AWS) et Ioannis Lioupras (AWS)
Récapitulatif
En tant que point d'entrée du système global d'une application cellulaire, le routeur cellulaire est chargé d'affecter efficacement les utilisateurs aux cellules appropriées et de fournir les points de terminaison aux utilisateurs. Le routeur cellulaire gère des fonctions telles que le stockage des user-to-cell mappages, la surveillance de la capacité des cellules et la demande de nouvelles cellules en cas de besoin. Il est important de maintenir le fonctionnement du routeur cellulaire en cas d'interruption potentielle.
Dans ce modèle, le cadre de conception des routeurs cellulaires met l'accent sur la résilience, l'évolutivité et l'optimisation des performances globales. Le modèle utilise un routage statique, dans lequel les clients mettent en cache les points de terminaison lors de la connexion initiale et communiquent directement avec les cellules. Ce découplage améliore la résilience du système en garantissant le fonctionnement ininterrompu de l'application cellulaire en cas de défaillance d'un routeur cellulaire.
Ce modèle utilise un AWS CloudFormation modèle pour déployer l'architecture. Pour plus de détails sur ce que le modèle déploie, ou pour déployer la même configuration à l'aide du AWS Management Console, consultez la section Informations supplémentaires.
Important
La démonstration, le code et le AWS CloudFormation modèle présentés dans ce modèle sont uniquement destinés à des fins explicatives. Le matériel fourni est uniquement destiné à illustrer le modèle de conception et à faciliter la compréhension. La démo et le code ne sont pas prêts pour la production et ne doivent pas être utilisés pour des activités de production en direct. Toute tentative d'utilisation du code ou de la démo dans un environnement de production est fortement déconseillée et se fait à vos propres risques. Nous vous recommandons de consulter les professionnels appropriés et d'effectuer des tests approfondis avant d'implémenter ce modèle ou l'un de ses composants dans un environnement de production.
Conditions préalables et limitations
Prérequis
Un compte Amazon Web Services (AWS) actif
La dernière version de AWS Command Line Interface (AWS CLI)
Informations d'identification AWS avec les autorisations nécessaires pour créer la AWS CloudFormation pile, AWS Lambda les fonctions et les ressources associées
Versions du produit
Python 3.12
Architecture
Le schéma suivant montre une conception de haut niveau du routeur cellulaire.

Le diagramme décrit le flux de travail suivant :
L'utilisateur contacte Amazon API Gateway, qui sert de façade aux points de terminaison de l'API du routeur cellulaire.
Amazon Cognito gère l'authentification et l'autorisation.
Le AWS Step Functions flux de travail comprend les éléments suivants :
Orchestrateur ‒
Orchestrator
Utilisations AWS Step Functions pour créer un flux de travail ou une machine à états. Le flux de travail est déclenché par l'API du routeur cellulaire.Orchestrator
Exécute les fonctions Lambda en fonction du chemin de la ressource.Dispatcher ‒ La fonction
Dispatcher
Lambda identifie et affecte une cellule statique par nouvel utilisateur enregistré. La fonction recherche la cellule comportant le moins d'utilisateurs, l'affecte à l'utilisateur et renvoie les points de terminaison.Mappeur ‒ L'
Mapper
opération gère les user-to-cell mappages au sein de laRoutingDB
base de données Amazon DynamoDB créée par le modèle. AWS CloudFormation Lorsqu'elle est déclenchée, laMapper
fonction fournit aux utilisateurs déjà assignés leurs points de terminaison.Scaler ‒ La
Scaler
fonction assure le suivi de l'occupation des cellules et de la capacité disponible. En cas de besoin, laScaler
fonction peut envoyer une demande via Amazon Simple Queue Service (Amazon SQS) à la couche Provision and Deploy pour demander de nouvelles cellules.Validateur ‒ La
Validator
fonction valide les extrémités des cellules et détecte tout problème potentiel.
RoutingDB
Stocke les informations et les attributs des cellules (points de terminaison de l'API Région AWS, état, métriques).Lorsque la capacité disponible des cellules dépasse un seuil, le routeur cellulaire demande des services de provisionnement et de déploiement via Amazon SQS pour créer de nouvelles cellules.
Lorsque de nouvelles cellules sont créées, elles sont mises RoutingDB
à jour à partir de la couche Provision and Deploy. Toutefois, ce processus dépasse le cadre de ce modèle. Pour une vue d'ensemble des prémisses de conception de l'architecture basée sur les cellules et des détails sur la conception du routeur cellulaire utilisée dans ce modèle, consultez la section Informations supplémentaires.
Outils
Services AWS
Amazon API Gateway vous aide à créer, publier, gérer, surveiller et sécuriser REST, HTTP, et ce, WebSocket APIs à n'importe quelle échelle.
AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, de bout Comptes AWS en bout Régions AWS.
Amazon Cognito fournit des fonctionnalités d'authentification, d'autorisation et de gestion des utilisateurs pour les applications Web et mobiles.
Amazon DynamoDB est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
Amazon Simple Queue Service (Amazon SQS) fournit une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de dissocier les systèmes et composants logiciels distribués.
AWS Step Functionsest un service d'orchestration sans serveur qui vous aide à combiner des fonctions Lambda et d'autres fonctions pour créer des applications critiques Services AWS pour l'entreprise.
Autres outils
Python
est un langage de programmation informatique polyvalent.
Référentiel de code
Le code de ce modèle est disponible dans le référentiel GitHub Serverless-Cell-Router
Bonnes pratiques
Pour connaître les meilleures pratiques en matière de création d'architectures basées sur des cellules, consultez le guide AWS Well-Architected suivant :
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Clonez le référentiel d'exemples de code. | Pour cloner le Serverless-Cell-Router GitHub dépôt sur votre ordinateur, utilisez la commande suivante :
| Developer |
Configurez des informations d'identification AWS CLI temporaires. | Configurez le AWS CLI avec des informations d'identification pour votre Compte AWS. Cette procédure pas à pas utilise les informations d'identification temporaires fournies par la ligne de commande ou l'option d'accès programmatique d' AWS IAM Identity Center. Cela définit les variables | Developer |
Créez un compartiment S3. | Créez un compartiment S3 qui sera utilisé pour stocker et accéder aux fonctions Serverless-Cell-Router Lambda à déployer par le AWS CloudFormation modèle. Pour créer le compartiment S3, utilisez la commande suivante :
| Developer |
Créez des fichiers .zip. | Créez un fichier .zip pour chaque fonction Lambda située dans le
| Developer |
Copiez les fichiers .zip dans le compartiment S3. | Pour copier tous les fichiers .zip de la fonction Lambda dans le compartiment S3, utilisez les commandes suivantes :
| Developer |
Tâche | Description | Compétences requises |
---|---|---|
Déployez le AWS CloudFormation modèle. | Pour déployer le AWS CloudFormation modèle, exécutez la AWS CLI commande suivante :
| Developer |
Vérifiez les progrès. | Connectez-vous au AWS Management Console, ouvrez la AWS CloudFormation console sur https://console.aws.amazon.com/cloudformation/et vérifiez la progression du développement de la pile. Lorsque le statut est défini | Developer |
Tâche | Description | Compétences requises |
---|---|---|
Attribuez des cellules à l'utilisateur. | Pour lancer le
La réponse de la
| Developer |
Récupérez les cellules des utilisateurs. | Pour exécuter la
| Developer |
Tâche | Description | Compétences requises |
---|---|---|
Nettoyez les ressources. | Pour éviter d'encourir des frais supplémentaires sur votre compte, procédez comme suit :
| Développeur d’applications |
Ressources connexes
Références
Vidéo
Physalia : architecture basée sur les cellules pour améliorer la disponibilité sur Amazon EBS
https://www.youtube-nocookie.com/embed/6 Tu sais ? RZMFic contrôles = 0
Informations supplémentaires
Locaux de conception d'une architecture basée sur les cellules
Bien que ce modèle se concentre sur le routeur cellulaire, il est important de comprendre l'environnement dans son ensemble. L'environnement est structuré en trois couches distinctes :
La couche de routage, ou couche mince, qui contient le routeur cellulaire
La couche cellulaire, composée de différentes cellules
La couche de mise à disposition et de déploiement, qui approvisionne les cellules et déploie l'application
Chaque couche conserve ses fonctionnalités même en cas de détérioration affectant les autres couches. Comptes AWS servent de limite d'isolation des défauts.
Le schéma suivant montre les couches à un niveau élevé. La couche Cell et la couche Provision and Deploy ne sont pas concernées par ce modèle.

Pour plus d'informations sur l'architecture basée sur les cellules, voir Réduction de la portée de l'impact grâce à l'architecture basée sur les cellules : routage des cellules.
Modèle de conception du routeur cellulaire
Le routeur cellulaire est un composant partagé entre les cellules. Pour atténuer les impacts potentiels, il est important que la couche de routage utilise une conception simpliste et évolutive horizontalement aussi fine que possible. En tant que point d'entrée du système, la couche de routage comprend uniquement les composants nécessaires pour affecter efficacement les utilisateurs aux cellules appropriées. Les composants de cette couche ne participent pas à la gestion ou à la création de cellules.
Ce modèle utilise un routage statique, ce qui signifie que le client met en cache les points de terminaison lors de la connexion initiale et établit ensuite une communication directe avec la cellule. Des interactions périodiques entre le client et le routeur cellulaire sont initiées pour confirmer l'état actuel ou récupérer des mises à jour. Ce découplage intentionnel permet aux utilisateurs existants de fonctionner sans interruption en cas d'indisponibilité du routeur cellulaire, tout en garantissant la continuité des fonctionnalités et de la résilience au sein du système.
Dans ce modèle, le routeur cellulaire prend en charge les fonctionnalités suivantes :
Extraction des données cellulaires de la base de données de cellules dans la couche Provision and Deploy et stockage ou mise à jour de la base de données locale.
Affectation d'une cellule à chaque nouvel utilisateur enregistré de l'application à l'aide de l'algorithme d'attribution de cellule.
user-to-cellsStockage du mappage dans la base de données locale.
Vérification de la capacité des cellules lors de l'affectation des utilisateurs et activation d'un événement pour le distributeur automatique dans la couche Provision and Deploy afin de créer des cellules.
Utilisation de l'algorithme des critères de création de cellules pour fournir cette fonctionnalité.
Répondre aux demandes des utilisateurs nouvellement enregistrés en fournissant URLs les cellules statiques. Ils URLs seront mis en cache sur le client avec une durée de vie (TTL).
Répondre aux demandes d'utilisateurs existantes concernant une URL non valide en fournissant une URL nouvelle ou mise à jour.
Pour mieux comprendre le routeur cellulaire de démonstration configuré par le AWS CloudFormation modèle, passez en revue les composants et les étapes suivants :
Configurez et configurez le groupe d'utilisateurs Amazon Cognito.
Configurez et configurez l'API API Gateway pour le routeur cellulaire.
Créez une table DynamoDB.
Créez et configurez une file d'attente SQS.
Implémentez le
Orchestrator
.Implémentez les fonctions Lambda :
Dispatcher
,,Scaler
,Mapper
.Validator
Évaluez et vérifiez.
Le présupposé est que la couche Provision and Deploy est déjà établie. Les détails de sa mise en œuvre dépassent le cadre de cet artefact.
Ces composants étant définis et configurés par un AWS CloudFormation modèle, les étapes suivantes sont présentées de manière descriptive et détaillée. L'hypothèse est que vous possédez les AWS compétences requises pour effectuer l'installation et la configuration.
1. Configuration et configuration du groupe d'utilisateurs Amazon Cognito
Connectez-vous à la AWS Management Console console Amazon Cognito et ouvrez-la à l'adresse. https://console.aws.amazon.com/cognito/ Configurez et configurez un groupe d'utilisateurs Amazon Cognito nomméCellRouterPool
, avec intégration d'applications, interface utilisateur hébergée et autorisations nécessaires.
2. Installation et configuration de l'API API Gateway pour le routeur cellulaire
Ouvrez la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway/. Configurez et configurez une API nommée CellRouter
à l'aide d'un autorisateur Amazon Cognito intégré au groupe d'utilisateurs Amazon Cognito. CellRouterPool
Implémentez les éléments suivants :
CellRouter
Ressources d'API, y comprisPOST
les méthodesIntégration au flux de travail Step Functions implémenté à l'étape 5
Autorisation via l'autorisateur Amazon Cognito
Mappages de demandes et de réponses d'intégration
Attribution des autorisations nécessaires
3. Création d'une table DynamoDB
Ouvrez la console DynamoDB https://console.aws.amazon.com/dynamodb/à l'adresse et créez une table DynamoDB standard appelée avec la configuration suivante : tbl_router
Clé de partition ‒
marketId
Clé de tri ‒
cellId
Mode capacité ‒ Provisionné
Point-in-time restauration (PITR) ‒ Désactivé
Dans l'onglet Indexes, créez un index secondaire global appelémarketId-currentCapacity-index
. La fonction Scaler
Lambda utilisera l'index pour effectuer des recherches efficaces dans la cellule ayant le plus petit nombre d'utilisateurs assignés.
Créez la structure du tableau avec les attributs suivants :
marketId
‒ L'EuropecellId
‒ cellule-0002currentCapacity
‒ 2endPoint_1
‒ <your endpoint for the first Region>endPoint_2
‒ <your endpoint for the second Region>IsHealthy
‒ VraimaxCapacity
‒ 10regionCode_1
‒eu-north-1
regionCode_2
‒eu-central-1
userIds
‒ <your email address>
4. Création et configuration d'une file d'attente SQS
Ouvrez la console Amazon SQS à https://console.aws.amazon.com/sqs/l'adresse et créez une file d'attente SQS standard appelée CellProvisioning
configurée avec le chiffrement par clé Amazon SQS.
5. Implémenter l'orchestrateur
Développez un flux de travail Step Functions qui servira Orchestrator
de fil au routeur. Le flux de travail est appelable via l'API du routeur cellulaire. Le flux de travail exécute les fonctions Lambda désignées en fonction du chemin de ressource. Intégrez la fonction step à l'API API Gateway du routeur CellRouter
cellulaire et configurez les autorisations nécessaires pour appeler les fonctions Lambda.
Le schéma suivant montre le flux de travail. L'état du choix invoque l'une des fonctions Lambda. Si la fonction Lambda est réussie, le flux de travail se termine. Si la fonction Lambda échoue, l'état d'échec est appelé.

6. Implémenter les fonctions Lambda
Dispatcher
Implémentez les Validator
fonctions Mapper
Scaler
,, et. Lorsque vous configurez et configurez chaque fonction dans la démonstration, définissez un rôle pour la fonction et attribuez les autorisations nécessaires pour effectuer les opérations requises sur la table DynamoDBtbl_router
. Intégrez également chaque fonction dans le flux de travailOrchestrator
.
Fonction Dispatcher
La Dispatcher
fonction est chargée d'identifier et d'attribuer une seule cellule statique à chaque nouvel utilisateur enregistré. Lorsqu'un nouvel utilisateur s'enregistre auprès de l'application globale, la demande est envoyée à la Dispatcher
fonction. La fonction traite la demande en utilisant des critères d'évaluation prédéfinis tels que les suivants :
Région ‒ Sélectionnez la cellule du marché où se trouve l'utilisateur. Par exemple, si l'utilisateur accède à l'application globale depuis l'Europe, sélectionnez une cellule qui utilise Régions AWS en Europe.
Proximité ou latence ‒ Sélectionnez la cellule la plus proche de l'utilisateur Par exemple, si l'utilisateur accède à l'application depuis les Pays-Bas, la fonction considère une cellule qui utilise Francfort et l'Irlande. La décision concernant la cellule la plus proche est basée sur des métriques telles que le temps de latence entre l'emplacement de l'utilisateur et les régions de la cellule. Pour cet exemple de modèle, les informations sont alimentées de manière statique à partir de la couche Provision and Deploy.
Santé ‒ La
Dispatcher
fonction vérifie si la cellule sélectionnée est saine en fonction de l'état de cellule indiqué (Healthy = vrai ou faux).Capacité ‒ La distribution des utilisateurs est basée sur le nombre minimal d'utilisateurs dans une logique de cellule, de sorte que l'utilisateur est affecté à la cellule qui compte le moins d'utilisateurs.
Note
Ces critères sont présentés uniquement pour expliquer cet exemple de modèle. Pour une implémentation réelle d'un routeur cellulaire, vous pouvez définir des critères plus précis et utiliser des critères basés sur des cas.
Orchestrator
Invoque la fonction Dispatcher pour affecter les utilisateurs aux cellules. Dans cette fonction de démonstration, la valeur de marché est un paramètre statique défini commeeurope
.
La Dispatcher
fonction détermine si une cellule est déjà attribuée à l'utilisateur. Si la cellule est déjà affectée, la Dispatcher
fonction renvoie les extrémités de la cellule. Si aucune cellule n'est attribuée à l'utilisateur, la fonction recherche la cellule qui compte le moins d'utilisateurs, l'affecte à l'utilisateur et renvoie les points de terminaison. L'efficacité de la requête de recherche de cellules est optimisée en utilisant l'index secondaire global.
Fonction de mappage
La Mapper
fonction supervise le stockage et la maintenance des user-to-cell mappages dans la base de données. Une cellule singulière est attribuée à chaque utilisateur enregistré. Chaque cellule possède deux cellules distinctes URLs, une pour chaque région AWS. Servant de points de terminaison d'API hébergés sur API Gateway, URLs ils fonctionnent comme des points entrants vers l'application globale.
Lorsque la Mapper
fonction reçoit une demande de l'application cliente, elle exécute une requête sur la tbl_router
table DynamoDB pour récupérer user-to-cell le mappage associé à l'identifiant e-mail fourni. Si elle trouve une cellule assignée, la Mapper
fonction fournit rapidement les deux cellules URLs. La Mapper
fonction surveille également activement les modifications apportées à la cellule URLs et lance des notifications ou des mises à jour des paramètres utilisateur.
Fonction Scaler
La Scaler
fonction gère la capacité résiduelle de la cellule. Pour chaque nouvelle demande d'enregistrement d'utilisateur, la Scaler
fonction évalue la capacité disponible de la cellule que la Dispatcher
fonction a attribuée à l'utilisateur. Si la cellule a atteint sa limite prédéterminée conformément aux critères d'évaluation spécifiés, la fonction lance une demande via une file d'attente Amazon SQS vers la couche Provision and Deploy, sollicitant le provisionnement et le déploiement de nouvelles cellules. La mise à l'échelle des cellules peut être exécutée en fonction d'un ensemble de critères d'évaluation tels que les suivants :
Nombre maximum d'utilisateurs ‒ Chaque cellule peut avoir un nombre maximum de 500 utilisateurs.
Capacité tampon ‒ La capacité tampon de chaque cellule est de 20 %, ce qui signifie que chaque cellule peut être affectée à 400 utilisateurs à tout moment. Les 20 % de capacité tampon restants sont réservés aux futurs cas d'utilisation et à la gestion de scénarios inattendus (par exemple, lorsque les services de création et de provisionnement de cellules ne sont pas disponibles).
Création de cellules ‒ Dès qu'une cellule existante atteint 70 % de sa capacité, une demande est déclenchée pour créer une cellule supplémentaire.
Note
Ces critères sont présentés uniquement pour expliquer cet exemple de modèle. Pour une implémentation réelle d'un routeur cellulaire, vous pouvez définir des critères plus précis et utiliser des critères basés sur des cas.
Le Scaler
code de démonstration est exécuté Orchestrator
après avoir attribué Dispatcher
avec succès une cellule à l'utilisateur nouvellement enregistré. Sur réception de l'identifiant de cellule duDispatcher
, évalue si la cellule désignée a une capacité suffisante pour accueillir des utilisateurs supplémentaires, sur la base de critères d'évaluation prédéfinis. Scaler
Si la capacité de la cellule est insuffisante, la Scaler
fonction envoie un message au service Amazon SQS. Ce message est récupéré par le service dans la couche Provision and Deploy, ce qui lance le provisionnement d'une nouvelle cellule.
Fonction de validation
La Validator
fonction identifie et résout les problèmes relatifs à l'accès aux cellules. Lorsqu'un utilisateur se connecte à l'application globale, l'application extrait les cellules des paramètres URLs du profil utilisateur et achemine les demandes des utilisateurs vers l'une des deux régions attribuées dans la cellule. S' URLs ils sont inaccessibles, l'application peut envoyer une demande d'URL de validation au routeur cellulaire. Le routeur cellulaire Orchestrator
invoque le. Validator
Validator
Lance le processus de validation. La validation peut inclure, entre autres, les vérifications suivantes :
Référencement croisé entre la cellule URLs de la demande et la cellule URLs stockée dans la base de données pour identifier et traiter les mises à jour potentielles
Exécution d'un bilan de santé approfondi (par exemple, une
HTTP GET
demande adressée au point de terminaison de la cellule)
En conclusion, la Validator
fonction fournit des réponses aux demandes des applications clientes, en fournissant le statut de validation ainsi que les étapes de correction requises.
Validator
Il est conçu pour améliorer l'expérience utilisateur. Imaginons un scénario dans lequel certains utilisateurs rencontrent des difficultés pour accéder à l'application globale en raison d'un incident qui rend les cellules temporairement indisponibles. Au lieu de présenter des erreurs génériques, la Validator
fonction peut fournir des étapes de correction instructives. Ces étapes peuvent inclure les actions suivantes :
Informez les utilisateurs de l'incident.
Indiquez le temps d'attente approximatif avant la disponibilité du service.
Indiquez le numéro de téléphone du service d'assistance pour obtenir des informations supplémentaires.
Le code de démonstration de la Validator
fonction vérifie que la cellule fournie par l'utilisateur URLs dans la demande correspond aux enregistrements stockés dans la tbl_router
table. La Validator
fonction vérifie également si les cellules sont saines.