Comment créer des applications web évolutives
Une application web évolutive est appelée ainsi parce qu’elle est capable de prendre en charge un plus grand nombre de requêtes de manière linéaire et plus gracieuse. Au fur et à mesure de l’ajout de matériel, le site web sera en mesure de traiter un grand nombre de demandes en une seule fois. Dire qu’un site web est évolutif signifie simplement qu’au fur et à mesure que le nombre d’utilisateurs augmente et que les demandes débordent, le site web sera capable de les traiter toutes aussi bien.
Exemple d’un site web populaire qui a été mis à l’échelle avec succès.
Si l’on considère la croissance de Facebook, il serait étonnant de constater à quel point elle s’est développée au fil des ans. Même si vous n’êtes pas un utilisateur régulier de Facebook, il est difficile d’ignorer l’impact que ce canal de médias sociaux a sur les entreprises et les commerces. Selon une statistique, il y a plus de 1,94 milliard d’utilisateurs actifs.
1,94 milliard d’utilisateurs actifs de Facebook en mars 2017
, enregistrant une augmentation de plus de 18% chaque année. Quant aux utilisateurs actifs quotidiens de téléphones mobiles, les chiffres sont stupéfiants : 1,15 milliard d’utilisateurs.
Facebook est écrit en PHP, et son succès massif réside dans sa capacité à s’adapter à un million d’utilisateurs, grâce à une architecture d’application énorme. L’architecture évite les goulets d’étranglement, ce qui la rend évolutive dans n’importe quel langage. La forme de la courbe (rapport entre le coût et l’utilisation) est ce qui détermine l’architecture de l’application. Lorsqu’une application est évolutive, la courbe sera plutôt diagonale, mais lorsqu’elle sera confrontée à des goulets d’étranglement, elle deviendra presque verticale.
Le langage, la base de données ou le compilateur utilisés jouent également un rôle important dans la forme de la courbe non linéaire. S’il y a un défaut de conception sous-jacent (plus qu’un détail de mise en œuvre), alors la courbe est essentielle pour grimper rapidement. L’architecture de Facebook, en constante évolution, est gérée par certains des meilleurs ingénieurs du secteur. Facebook possède sa propre version de PHP optimisé et a développé des logiciels totalement nouveaux comme Apache Cassandra.
Voici maintenant la question à un million de dollars : comment construire des applications web évolutives ?
Voici quelques options simples pour faire évoluer vos applications web :
1. Mise à l’échelle
Une fois que la charge sur les pneus dorsaux devient trop lourde à gérer, il n’est plus possible pour le site web de fonctionner. Une option faisable, mais probablement très coûteuse, serait d’augmenter les ressources sur une base par entité. Il faut également tenir compte d’autres dimensions comme la vitesse du réseau, les IOP, la capacité de stockage et la mémoire. La raison pour laquelle cela devient coûteux est qu’il n’offre pas d’élasticité intégrée, ce qui peut donc s’avérer coûteux lorsque la charge est faible.
Cependant, il est important de noter qu’une architecture à grande échelle a besoin d’un équilibreur de charge (demandes des utilisateurs finaux, frontière entre les réseaux externes et internationaux.) afin de pouvoir acheminer les connexions d’un type particulier et d’un groupe d’analyse (pour suivre la charge du système, créer de nouvelles instances de CPU et suivre l’inventaire des instances actives).
2. Mise en cache
Le besoin de mise à l’échelle a conduit à la demande et au déploiement de la mise à l’échelle à grande échelle. La mise en cache peut améliorer les performances et réduire la consommation de ressources. L’utilisation des ressources comprend le CPU, les frais S3, les frais de stockage des données, l’utilisation des API externes et la base de données. Pour savoir où la mise en cache peut être appliquée, effectuez une analyse des données pour vous aider à comprendre les distributions des requêtes et les tailles des données, y compris le rapport lecture-écriture.
3. Le type de partitions à effectuer
L’objectif de la mise à l’échelle est bien sûr d’augmenter la capacité. Cela peut se faire de deux manières – verticale ou horizontale. Dans le cas de la mise à l’échelle verticale, vous ajoutez davantage de ressources, par exemple des disques plus grands ou plus durs, à un seul serveur. L’opération de calcul est plus importante, avec une meilleure mémoire et un CPU plus rapide. Dans le cas d’une mise à l’échelle verticale, on prend une seule ressource et on augmente sa capacité de traitement. En cas de mise à l’échelle horizontale, vous pouvez ajouter d’autres nœuds. La façon la plus courante de procéder à une mise à l’échelle horizontale consiste à diviser les services en partitions ou shards. Ces « shards » seraient affectés à des fonctionnalités spécifiques (par exemple, la prise en compte des intérêts de différents types d’utilisateurs). L’avantage des shards est qu’ils peuvent fournir des magasins de capacité supplémentaire. Cependant, le problème est que votre conception initiale doit prévoir une mise à l’échelle horizontale, car l’ajouter ultérieurement pourrait être une tâche très difficile.
Choses à ne pas oublier lors de la mise à l’échelle des applications, notez ces points pendant la tâche.
1. Aucun compromis sur la disponibilité du site web
Le site web doit être accessible aux utilisateurs à tout moment. Imaginez que vous exploitez une boutique en ligne et que le serveur tombe en panne à chaque fois qu’il y a un pic de demandes. Le temps de fonctionnement du site web est donc très important. Faites évoluer votre application web pour qu’elle soit disponible en permanence, indépendamment des pannes et des interruptions du système.
2. Option de récupération
Les utilisateurs peuvent revenir pour consulter les mêmes données, ils doivent donc pouvoir accéder facilement aux saines. Sauf si, bien sûr, vous avez mis à jour les données. Vous pouvez gagner la confiance des utilisateurs s’ils savent qu’ils peuvent accéder aux données du site web à tout moment.
3. Performance
Le principal objectif de la mise à l’échelle de l’application est de garantir d’excellentes performances. Une réponse rapide avec une récupération instantanée suivie d’une faible latence est extrêmement importante.
4. Gérabilité
Après la mise à l’échelle du site, il est très important de vérifier la facilité de gestion du site afin qu’il soit facile à exploiter, à maintenir et à mettre à jour.
Conclusion
Il existe une idée fausse selon laquelle PHP n’est pas évolutif. Comment alors d’autres sites de grande envergure seraient-ils gérés par PHP ? L’évolutivité est davantage liée à l’architecture des applications qu’au langage. Le temps nécessaire au développement d’applications web évolutives dépend de la complexité de l’application et du cadre utilisé. Il existe deux couches de programmation différentes dans une application évolutive : le front-end et le back-end. Comme son nom l’indique, le frontal est ce avec quoi l’utilisateur interagit et l’interface peut être n’importe quoi, d’Android à iOS. Le back-end représente environ 80% du travail total, mais l’utilisateur n’est pas conscient de cette partie de son application web. La fonctionnalité joue un rôle majeur dans l’évolutivité. Un utilisateur peut vouloir charger des images, il faut donc tenir compte de l’évolutivité du stockage car il peut avoir besoin de les récupérer à tout moment. Pour améliorer les téléchargements et les demandes d’images, une faible latence est très importante.
Voici quelques lectures intéressantes sur ce sujet :
7 Étapes de la mise à l’échelle des applications web, Stratégies pour les architectes.
Comment créer des applications web évolutives ?
Construire des applications évolutives sur la plateforme google cloud.
Flickr.com/ klarititemplateshop.com/ Blogtrepreneur
A propos de l’auteur : Deepak est le directeur de PHPBabu et travaille également à la société mère YUHIRO Technologies Private Limited en tant que chef de bureau.