Comment construire une infrastructure d’application mobile évolutive ?
Vous cherchez à faire évoluer l’infrastructure d’une application mobile ? Voici un tutoriel approfondi détaillant des leçons de la vie réelle sur la façon de faire évoluer l’infrastructure d’une application mobile.
Contents
- 1 Qu’est-ce qu’une application mobile ?
- 2 Quelle est la définition d’une architecture applicative évolutive ?
- 3 À quoi ressemble l’infrastructure d’une application mobile ?
- 3.1 Plateformes de publication d’applications
- 3.2 SDK – Kit de développement logiciel
- 3.3 API – Interfaces de programmation d’applications
- 3.4 CDN – Content Delivery Network (réseau de diffusion de contenu)
- 3.5 Stockage d’objets
- 3.6 Équilibreurs de charge
- 3.7 Serveurs d’application
- 3.8 Serveurs de base de données
- 4 Comment faire évoluer une application mobile ?
- 5 Conclusion
- 6 FAQ
- 7 Qu’est-ce qu’une application mobile ?
- 8 À quoi ressemble l’infrastructure d’une application mobile ?
- 9 Comment créer une infrastructure mobile évolutive ?
Qu’est-ce qu’une application mobile ?
Une application mobile est une application qui fonctionne sur un appareil mobile comme les smartphones, les tablettes et les montres. Il existe plusieurs types d’applications mobiles, notamment les applications natives, les applications hybrides et les applications web.
- Les applications natives fonctionnent pour un système d’exploitation spécifique comme Android ou iOS ;
- Les applications web sont codées à l’aide de technologies telles que HTML5 et CSS ;
- Les applications hybrides fonctionnent comme des applications web mais sont encadrées dans un conteneur natif.
Poursuivez votre lecture pour en savoir plus sur l’architecture d’une infrastructure d’application mobile.
Quelle est la définition d’une architecture applicative évolutive ?
Construire des applications mobiles à grande échelle n’est pas facile, et de nombreuses variables sont essentielles pour définir une architecture évolutive.
Une application mobile de grande envergure et évolutive supportera très probablement des milliers, voire des millions d’utilisations et devra être performante, fiable et sécurisée.
Cela signifie qu’une architecture de premier ordre n’a pas de temps d’arrêt, pas de panne, des vitesses de chargement rapides et une sécurité de pointe.
Cet article examine ces facteurs afin de proposer une infrastructure dorsale évolutive pour les applications mobiles.
À quoi ressemble l’infrastructure d’une application mobile ?
Plusieurs éléments composent l’architecture d’une application mobile et voici l’infrastructure nécessaire pour les applications mobiles.
- Plateformes de publication d’applications
- SDK – Kit de développement logiciel
- API
- CDN – Content Delivery Network (réseau de diffusion de contenu)
- Stockage d’objets
- Équilibreurs de charge
- Serveurs d’application
- Serveurs de base de données
Poursuivez votre lecture pour en savoir plus sur l’architecture d’une application mobile évolutive et sur chacune des couches décrites ci-dessus.
Plateformes de publication d’applications
Il est possible de créer une application mobile en utilisant différentes technologies. Des langages de développement natifs iOS et Android comme Swift et Kotlin/Java aux frameworks de développement multiplateformes comme React Native ou Flutter.
Les technologies décrites ci-dessus permettent de créer le front-end d’une application mobile ou l’interface côté client. Les magasins d’applications comme Google Play et App Store fournissent l’écosystème nécessaire pour distribuer les applications mobiles aux utilisateurs finaux.
Les développeurs doivent soumettre leurs applications mobiles à ces plateformes de publication, attendre leur examen et ce n’est qu’après avoir franchi cette étape qu’ils pourront rendre l’application opérationnelle.
Google Play et l’App Store ont tous deux des directives de publication différentes, et il est essentiel de les lire d’abord pour éviter les problèmes qui pourraient empêcher la publication d’une application.
Pour éviter de passer par l’examen minutieux des magasins d’applications, une alternative consiste à développer une PWA – Progressive Web Applications – en utilisant des technologies telles que React, Angular et Ionic.
SDK – Kit de développement logiciel
Les kits de développement logiciel constituent une étape essentielle dans la mise en place d’une infrastructure d’applications mobiles évolutive. Un SDK consiste en un paquet installable contenant des outils tels que des API, des bibliothèques, un débogueur, de la documentation, etc.
Un kit de développement logiciel (SDK) pour applications mobiles comprendra très probablement des éléments permettant de relier l’interface entre l’application dorsale et l’application frontale.
Un exemple facile à comprendre est l’envoi d’une notification push du backend vers le frontend. Un SDK facilitera cette action et accélérera l’intégration des éléments fonctionnels.
API – Interfaces de programmation d’applications
Les API sont un élément essentiel du développement de l’architecture d’une application mobile. Les API sont des interfaces logicielles qui relient le front-end (côté client) au back-end (côté serveur) d’une application mobile.
Les avantages de l’utilisation d’une API dans la mise en œuvre d’une application mobile comprennent l’automatisation des tâches, la personnalisation des fonctions, la fourniture flexible d’informations et la distribution de nouveaux services.
CDN – Content Delivery Network (réseau de diffusion de contenu)
Un CDN est un groupe de serveurs géographiquement distribués qui travaillent ensemble pour fournir un contenu rapide. Ces serveurs sont situés plus près des utilisateurs finaux et permettent un transfert plus rapide des ressources pour charger le contenu internet (images, vidéos, etc.).
Parmi les autres avantages de la mise en œuvre du CDN, citons la réduction du temps de communication entre l’application mobile côté client et le côté serveur grâce à un routage optimal, la réduction des coûts de la bande passante et la sécurité (attaques DDoS, certificats, etc.).
Stockage d’objets
Cet élément de l’infrastructure de l’application mobile se connectera au CDN et englobera le stockage de fichiers, de vidéos, d’images, etc. Le CDN mettra le contenu en cache et accélérera le délai de livraison à l’endroit le plus proche de l’utilisateur final.
Équilibreurs de charge
La couche suivante dans la création d’une infrastructure d’application mobile est celle des équilibreurs de charge. Dans l’informatique en nuage, les équilibreurs de charge répartissent les tâches sur un ensemble de serveurs afin de rendre leur traitement global plus efficace.
Le CDN se connectera aux équilibreurs de charge, et le logiciel de l’équilibreur de charge distribuera efficacement les requêtes côté client, assurera une haute disponibilité et augmentera ou diminuera l’échelle en fonction de la demande.
Serveurs d’application
L’étape suivante dans la construction d’une architecture d’application mobile est celle des serveurs d’application. Cette partie de l’infrastructure gère la logique commerciale et se situe entre les serveurs de base de données et le CDN.
Serveurs de base de données
La dernière étape de la mise en place d’une infrastructure d’application mobile consiste à créer les serveurs de base de données. Un cluster de base de données comprend des instances très puissantes qui stockent et manipulent les données stockées.
Une infrastructure de base de données peut être redondante ou non. Les architectures redondantes fournissent au moins deux instances qui synchronisent les données en temps réel.
Comment faire évoluer une application mobile ?
Il y a principalement deux façons de construire une infrastructure d’application évolutive. La première consiste à utiliser des services gérés tels qu’un Mobile Backend as a Service, et la seconde à créer le backend à partir de zéro en utilisant un fournisseur d’Infrastructure as a Service.
L’utilisation d’un service BaaS comprend une infrastructure prête à l’emploi et évolutive, des blocs de construction prêts à l’emploi pour accélérer le développement du backend, et des SDK pour rationaliser l’intégration côté serveur et côté client. En général, la mise à l’échelle des applications est plus facile à réaliser en utilisant une plateforme backend.
Le développement d’un backend à partir de zéro offrira aux développeurs plus de flexibilité et de contrôle sur la plupart des éléments de l’infrastructure. En revanche, ils devront gérer le backend et faire évoluer l’infrastructure en fonction de la charge de travail.
Examinons plus en détail chacune de ces deux options.
BaaS – Backend as a Service
Il est extrêmement facile de faire évoluer le backend d’une application mobile à l’aide d’une plateforme BaaS, et tous les éléments sont en place pour atteindre cet objectif. L’activité principale d’une plateforme BaaS consiste à fournir à ses clients une architecture sécurisée, évolutive et sans tracas.
Certains fournisseurs de backend comme Back4App permettent aux utilisateurs de créer un backend en quelques minutes seulement. La première étape consiste à s’inscrire et à nommer la première application.
L’étape suivante est entièrement automatisée, et la plateforme fournira un modèle de données, des serveurs d’application, des politiques d’échelonnement, des sauvegardes et une sécurité en quelques minutes seulement.
L’écran suivant propose une interface utilisateur graphique (GUI) englobant le modèle de données, les fonctions sans serveur, les API et les paramètres d’infrastructure.
Le backend est prêt à l’emploi, dispose d’une évolutivité intégrée et tout ce que l’utilisateur doit faire est de connecter l’application frontale au backend via les SDK, de télécharger les données et de coder la logique commerciale.
Back4App propose de nombreux SDK prêts à l’emploi, notamment React Native, Flutter, Android, iOS, Javascript, Xamarin, etc.
Pour savoir avec plus de détails comment construire votre première application en utilisant Back4App, veuillez vous référer au tutoriel Créer votre première application avec Back4App.
Exemples concrets de mise à l’échelle d’une infrastructure d’applications mobiles
Voici deux exemples pratiques des avantages de l’utilisation d’un Backend as a Service pour faire évoluer l’infrastructure d’une application mobile.
- Broadcast
Le premier exemple que nous utiliserons est celui de la startup norvégienne Broadcast Oslo. Cette entreprise est un guide gratuit pour les festivals, les concerts et les clubs d’Oslo.
Broadcastoslo est une application mobile et distribue son application sur Google Play et App Store. Les utilisateurs téléchargent l’application et ont accès à tous les événements qui se dérouleront à Oslo dans les mois à venir.
L’application permet également aux utilisateurs d’accéder aux programmes des festivals en temps réel, et c’est là que les problèmes d’évolutivité de l’infrastructure commencent.
Le Musikkfest Oslo 2022 s’est déroulé le 4 juin et a rassemblé environ 20 000 participants. Imaginez donc à quel point l’infrastructure doit être évolutive pour permettre à des milliers d’utilisateurs d’accéder à une application et d’en extraire des données simultanément.
L’équipe technique de Broadcast a décidé d’utiliser Back4App pour résoudre ce problème, et les résultats ont été excellents ! Voici ce que Tim Harris, le PDG de Broadcast, a dit à propos de cette expérience.
Merci encore pour votre aide, cette journée a été très réussie pour nous, et il est si important que nous n’ayons pas eu de problèmes d’accès à l’application !
Tim Harris, PDG de Broadcast
- Fight List
Fight List a été téléchargé plus de 10 millions de fois, et c’est un jeu à succès créé par Two4Tea. Il s’agit d’un jeu de questions-réponses, distribué dans plus de sept langues, qui a atteint les premières places aux États-Unis et en France.
Le jeu comporte des défis d’échelle sophistiqués et nécessite que des milliers d’utilisateurs accèdent simultanément à l’application.
Two4Tea a choisi Back4app pour résoudre le problème d’infrastructure et a traité plus de 10k requêtes/seconde en pic d’utilisation. Voici ce que Nicolas Boulch, PDG de Two4Tea, a déclaré à propos de cette expérience.
C’est à ce moment que nous avons réalisé que Back4App était le bon choix parce qu’ils pouvaient analyser notre application spécifiquement et construire une solution sur mesure pour nous.
Nicolas Boulch, PDG de Two4Tea
Pour en savoir plus sur les défis de mise à l’échelle de Fight List, veuillez lire l’article Scaling a Game With Back4App (Mise à l’échelle d’un jeu avec Back4App).
Construire un backend personnalisé sur n’importe quel fournisseur de cloud majeur
La deuxième option pour construire une infrastructure d’application mobile évolutive consiste à construire le backend en utilisant des fournisseurs de cloud comme AWS, Google Cloud, Azure, Digital Ocean, etc.
Les avantages de cette configuration reposent principalement sur la flexibilité qu’elle procure, sur un meilleur contrôle de l’infrastructure dorsale et sur la visibilité de chaque étape du processus.
Les inconvénients reposent sur les efforts d’ingénierie pour construire et maintenir l’infrastructure dorsale, développer un code dorsal standard et surveiller les systèmes 24 heures sur 24.
AWS est le fournisseur de cloud le plus utilisé dans le monde. Utilisons ce fournisseur pour illustrer les étapes de la création d’un backend d’application mobile évolutif.
La première étape consiste à créer et à activer un compte auprès d’AWS. Veuillez suivre le tutoriel Comment créer et activer un nouveau compte AWS pour plus de détails sur la manière de procéder.
L’étape suivante consiste à définir les produits qui soutiendront la mise en œuvre du backend. Nous utiliserons les produits suivants dans cet exemple :
- Instances EC2
- EBS – Elastic Block Storage
- S3 – Système de stockage simple
- Équilibreurs de charge
- CDN – CloudFront
Examinons plus en détail chaque étape.
Création d’instances EC2
Une infrastructure dorsale évolutive nécessitera des machines virtuelles d’application et de base de données. La première étape consiste à définir le modèle d’instance à utiliser sur le cluster.
AWS propose plusieurs types d’instances optimisées pour de nombreux cas d’utilisation. La liste comprend des instances à usage général, à calcul optimisé, à mémoire optimisée, à calcul accéléré et à stockage optimisé.
Pour cet exemple, nous utiliserons une instance polyvalente. Commençons par une instance t4g.medium qui offre une architecture basée sur Arm ; elle est excellente pour les charges de travail en rafale et offre un prix horaire intéressant.
Vous trouverez ci-dessous les premières étapes à suivre :
- Se connecter à AWS
- Aller à EC2
- Instances
- Lancer une nouvelle instance
Cette étape doit définir le système d’exploitation, le type et la taille de l’instance, les paramètres du réseau, l’ajout de blocs de stockage à l’instance, les paramètres de sécurité, etc.
Pour plus d’informations sur la configuration d’une instance EC2, veuillez suivre le tutoriel Créer et lancer une instance EC2.
Dès que la grappe de serveurs est prête, l’étape suivante consiste à configurer les politiques de mise à l’échelle en fonction de la charge de travail.
Il existe deux façons de faire évoluer une grappe de serveurs : l’évolution horizontale et l’évolution verticale.
- Évolution horizontale – ajout d’instances supplémentaires au cluster pour faire face à de nouvelles charges de travail.
- Mise à l’échelle verticale – ajout de ressources (CPU/RAM) à une instance pour répondre à la nouvelle charge de travail, c’est-à-dire augmentation de la taille de l’instance.
D’une manière générale, les serveurs d’application utiliseront l’échelonnement horizontal comme mécanisme d’échelonnement privilégié. Une grappe de bases de données utilisera la mise à l’échelle verticale comme méthode préférée de mise à l’échelle.
La mise à l’échelle horizontale d’un cluster d’applications est, en général, un processus simple. La façon de procéder avec AWS est d’accéder au menu Auto Scaling et de lancer une nouvelle configuration.
La mise à l’échelle verticale de la base de données est un processus plus complexe, car il est impossible d’arrêter l’instance et d’en modifier la taille. De cette manière, la grappe de données serait confrontée à des temps d’arrêt.
La bonne méthode consiste à créer une nouvelle instance plus grande, à synchroniser les données et à transférer le traitement de la charge de travail à l’instance plus grande. Cela n’a rien de sorcier, mais l’automatisation de ce processus prend du temps.
Si la charge de travail de l’application augmente tellement que la mise à l’échelle verticale de la base de données n’est plus possible, la répartition de la charge de travail dans plusieurs instances sera la seule voie à suivre. Il s’agit d’une mise en œuvre compliquée qui ne doit être utilisée qu’en dernier recours.
Pour obtenir des informations détaillées sur la manière d’ajouter la mise à l’échelle automatique à EC2, veuillez suivre le tutoriel ” Get started with Amazon EC2 auto scaling” (Démarrer avec la mise à l’échelle automatique d’Amazon EC2).
EBS – Elastic Block Storage
Chaque instance aura besoin d’un volume EBS attaché. Les instances éphémères, dont le stockage est intégré au matériel, constituent une exception.
Il s’agit d’une étape facile à réaliser lors de la configuration initiale de la machine virtuelle. Le défi consiste à déterminer la taille correcte d’EBS afin d’éviter les coûts inutiles et de disposer d’une capacité suffisante pour stocker les données.
Il est également essentiel de choisir le bon type d’EBS. Il existe de nombreuses options EBS, y compris les disques SSD et les disques magnétiques. Le choix du type d’EBS adéquat est essentiel pour garantir un bon équilibre entre les performances et les coûts.
Pour plus d’informations sur la manière d’attacher un volume EBS à une machine virtuelle, veuillez vous reporter à la section Attacher un volume Amazon EBS à une instance.
S3 – Service de stockage simple
Une infrastructure dorsale robuste et évolutive nécessitera un stockage d’objets. Il est facile de le faire avec AWS, et S3 est le produit idéal pour atteindre cet objectif.
La première étape de la création d’un seau S3 consiste à définir la région dans laquelle les fichiers seront stockés. En règle générale, vous choisirez la même région que l’instance EC2.
Dans le cadre du processus de création, il est nécessaire de définir la propriété de l’objet, les règles d’accès public, la version du seau et les exigences en matière de cryptage.
Les seaux AWS S3 sont évolutifs par défaut, et les utilisateurs ne paieront que pour les ressources utilisées. Pour plus d’informations sur la création d’un seau S3, veuillez suivre le tutoriel Créer un seau S3.
Équilibreurs de charge
Une infrastructure évolutive nécessite une mise en œuvre correcte de l’équilibreur de charge. AWS propose plusieurs types d’équilibreurs de charge dans le cadre de ses produits.
Les équilibreurs de charge des applications acheminent les demandes vers les instances EC2 appropriées et surveillent l’état de ces instances.
Attacher un équilibreur de charge aux instances n’est pas un processus complexe et couvre les étapes suivantes :
- Aller sur le tableau de bord EC2
- Équilibrage de la charge
- Équilibreur de charge Creat
- Sélectionner le type d’équilibreur de charge
- Configurer l’équilibreur de charge en ce qui concerne le type d’adresse IP, les VPC, les zones de disponibilité et les services complémentaires.
Pour des informations détaillées sur la mise en place d’un équilibreur de charge, veuillez vous référer au tutoriel Premiers pas avec les équilibreurs de charge d’application.
CDN Cloudfront
Cloudfront est un réseau de diffusion de contenu intégré disponible sur AWS qui prend en charge environ 300 sites périphériques dans le monde entier. Le produit accélère la distribution de contenu statique et dynamique, renforce la sécurité et est facile à intégrer avec d’autres produits AWS.
Dans le cadre d’une architecture backend évolutive, Cloudfront se connectera aux buckets S3 et aux répartiteurs de charge.
Les utilisateurs peuvent connecter Cloudfront aux équilibreurs de charge via le tableau de bord EC2, en créant un équilibreur de charge, en ciblant des groupes et en configurant une distribution Cloudfront. Pour plus de détails, voir Configuration d’une distribution Cloudfront pour EC2.
La connexion de Cloudfront à un bucket S3 est également simple. La connexion se fait via le tableau de bord Cloudfront, en créant une distribution Cloudfront et en ajoutant le domaine d’origine. Vous pouvez lire l’article de blog Creating AWS CloudFront Distribution with S3 Origin pour plus d’informations.
Conclusion
Une application mobile fonctionne sur des appareils tels que les téléphones portables, les tablettes et les montres. Les applications les plus courantes sont les applications natives, hybrides et web.
Une infrastructure d’application mobile évolutive consiste en un système conçu pour éviter les temps d’arrêt et les pannes, et pour être extrêmement rapide et sûr.
Les éléments essentiels d’une infrastructure évolutive comprennent les plateformes de publication d’applications, les SDK, les API, les CDN, les équilibreurs de charge et les serveurs d’applications et de bases de données.
Les deux moyens les plus courants d’obtenir une infrastructure d’application mobile évolutive de premier ordre consistent à utiliser des solutions prêtes à l’emploi telles que le Backend as a Service ou à mettre en place un backend sur mesure sur des services en nuage tels qu’AWS.
Les solutions de backend en tant que service offrent une mise en œuvre plus rapide, des fonctions d’extension prêtes à l’emploi et des protocoles de sécurité prédéfinis. En revanche, un backend sur mesure offrira un environnement et un contrôle plus souples.
J’espère que vous avez apprécié la lecture de cet article et qu’il vous a aidé à mieux comprendre les fondements d’une bonne architecture d’application mobile. Si vous ne voulez pas avoir à vous soucier de la création, de la maintenance et de la mise à l’échelle d’un backend, n’hésitez pas à contacter Back4App pour en savoir plus sur la façon dont nous pouvons vous aider.
FAQ
Qu’est-ce qu’une application mobile ?
Une application mobile fonctionne sur des appareils tels que les téléphones portables, les tablettes et les montres connectées. Les implémentations les plus courantes sont les applications natives, hybrides et web.
À quoi ressemble l’infrastructure d’une application mobile ?
Les éléments essentiels d’une infrastructure évolutive incluent des plateformes de publication d’applications, des SDK, des API, des CDN, des équilibreurs de charge, ainsi que des serveurs d’application et de base de données.
Comment créer une infrastructure mobile évolutive ?
Les deux moyens les plus courants pour obtenir une infrastructure d’application mobile évolutive de premier ordre sont d’utiliser des solutions prêtes à l’emploi comme le Backend as a Service ou de configurer un backend personnalisé sur des services cloud comme AWS.