Table des matières
Qu'est-ce que l'évolutivité ?L'évolutivité est la propriété souhaitable d'un système, d'un réseau ou d'un processus, qui indique sa capacité à réagir et à s'adapter sans perte de qualité, ou à gérer la croissance continue des emplois de manière fluide, pour être prêt à grandir sans perdre en qualité dans les services offerts .
Vous pourriez dire quelle est la capacité de notre système à supporter une charge de travail plus importante avec des modifications ou des extensions raisonnables en termes de coût, de temps, de temps et de complexité.
Types d'évolutivité
En général, on peut parler de mise à l'échelle verticale et horizontale ou d'une combinaison des deux.
Mise à l'échelle verticale
Il consiste essentiellement à augmenter la capacité d'un ou plusieurs éléments spécifiques de notre architecture, par exemple en étendant la mémoire de notre serveur central, ou en remplaçant les CPU par d'autres plus rapides. En résumé, augmentez les capacités du serveur, chose très courante lorsque l'on utilise la virtualisation et on dit qu'à ce moment-là le serveur aura 30% de RAM disponible.
Mise à l'échelle horizontale
C'est celui que nous allons détailler dans le tuto, est basé sur l'augmentation du nombre de nœuds qui effectuent la même tâche, en utilisant différents types de planification, par exemple si nous avons un serveur Web saturé, nous en ajoutons un autre pour équilibrer la charge.
Types d'architecture web basés sur les niveaux.
Nous parlerons des architectures qui peuvent être appliquées avec les systèmes linux, en utilisant des outils open source nous passerons des plus basiques à des plus avancées offrant une évolutivité horizontale et une résistance aux pannes, toutes ces architectures peuvent être appliquées dans n'importe quel PaaS ou avec sa propre infrastructure.
1. Architecture à un niveau
C'est le plus basique de tous où il n'y a qu'un seul serveur avec Apache et MySQL auquel on peut accéder à distance. Il est très courant dans les pages avec peu de marge de visites ou d'environnements de test, il n'offre aucune marge de tolérance à l'échec et il est difficile de l'utiliser pour grandir horizontalement.
2. Architecture à deux niveaux
Cette fois, nous avons séparé la base de données du serveur Web offrant un peu de tolérance aux pannes. De cette façon, si la base de données tombe en panne, le serveur Web peut proposer du contenu de manière statique qui ne dépend pas de la base de données. Et en cas de défaillance du serveur Web, nous pouvons toujours accéder aux informations en soulevant à nouveau un nouveau serveur Web.La conception présente plusieurs défauts car elle n'est pas très évolutive.
3. Architecture à trois niveaux
Cette fois, nous commençons à utiliser un équilibreur de charge qui recevra toutes les demandes des utilisateurs. Cette fois, nous proposons une conception plus évolutive afin que si notre charge augmente, nous pouvons ajouter plus de serveurs Web et évoluer. Nous pouvons même appliquer l'autoscaling afin que les serveurs Web soient ajoutés automatiquement à un certain niveau de charge ou à une heure de pointe. Le problème avec cette conception est que nous pouvons saturer notre base de données.
4. Architecture à quatre niveaux
Maintenant, nous utilisons un équilibreur de charge et un memcached rendant le système plus évolutif. Avec cette conception, nous pouvons ajouter autant de bases de données et de serveurs Web que nécessaire en plus d'offrir une tolérance aux pannes. Nous pouvons diviser la charge entre les bases de données avec CASSANDRE offrant une implémentation multi-nœuds. Cette conception est beaucoup plus complexe, mais j'ajoute une tolérance aux pannes beaucoup plus grande et la possibilité de mettre à l'échelle tous ses niveaux.
5. Architecture à cinq niveaux
Le contenu d'une page Web peut être divisé en statique et dynamique. Par exemple, nous divisons la couche Web en un serveur Apache et un autre avec des applications JAVA exécutant Jetty ou JBoss. Apache fournit le contenu statique tandis que le serveur d'applications gère le contenu dynamique ou à la volée. Un exemple de ceci peut être la section FAQ d'un site Web d'assistance, car il s'agit simplement de contenu statique, il peut être géré par APACHE / NGINX.
AGRANDIR
6. Architecture à six niveaux
Nous pouvons être un peu plus élégants et ajouter un réseau de diffusion de contenu (CDN), ou ce que l'on appelle dans AWS CDN Amazon CloudFrontPar exemple, nous avons un site Web d'apprentissage en ligne et nos utilisateurs téléchargent les guides au format PDF ou des vidéos à partir de notre site Web. Nous pouvons économiser toute cette bande passante dédiée aux téléchargements, En la proposant depuis un CDN qui s'en occupe, Le reste du web peut tourner sur notre infrastructure.
AGRANDIR
ConclusionNous avons vu des architectures multi-tiers qui peuvent être appliquées, en fonction du trafic web. Il est conseillé de créer des architectures tournées vers l'avenir, capables d'évoluer et de maintenir la tolérance aux pannes, en évitant les effondrements sur le web dus au manque de ressources ou à la défaillance d'un nœud indispensable. En créant certaines de ces conceptions avec d'autres recommandations telles que les sauvegardes et les déploiements automatiques, nous pouvons offrir un site Web avec un temps de disponibilité tolérant aux pannes de 99,9.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif