Comment developper un backend pour supporter des milliers voir des millions d'utilisateur?
Beaucoup de dev se lance dans la creation des site web et pense seulement au code, rien que du code et uniquement du code et parfois structure leur code de manière non optimale par naiveté ou moins de connaissances et se buttent à des problèmes d'architecture une fois qu'ils vont en production c'est à dire une fois qu'ils deploient leur code sur le server et à la dispositions des utilisateurs, tant que votre site est moins visité, il n'y aura pas de problème et vous pouvez meme etre dans un hebergement mutualisé et vous n'aurez aucun problème, mais si le site commence à etre massivement visité..bonjour les problèmes et si l'architecture a été mal pensé et le code mal écrit, et que votre app web a fait succès et chaque jours enregistre des milliers voir des millions de user... vous serrez peut etre emmené à le réecrire completement de zero.
Un site web est fait pour les utilisateurs qui doivent accedere à ce site à travers un navigateur qui lui sera chargé de faire des requetes HTTP au serveur web, ce classique, vous le connaissez dejà non? Seulement si un serveur web, reçoit contemporainement des millions de requetes HTTP à la fois, il va aller immediatement en crise si jamais il n'y a pas une architecture physique consequente et bien pensée, immaginez un instant le nombre de requetes par secondes qu'on bombarde sur facebook, google etc.. je dis par secondes pas par minutes ni moins par heure, le seul fait d'ouvrir votre profil facebook ce n'est pas une seule requete, mais des dizaines de requetes car il y a des requetes pour les images, les video, le html, le javascript etc... et multiplier cela par tous les utilisateurs de la terre qui a chaque seconde sont sur facebook et font des cliques à droite et clique à gauche.. vous pouvez immaginer la souffrance du serveur s'il y en avait seulement un seul donc une architecture pas consequente?
Pour supporter des dizaines et des milliers voir des millions de requetes à la fois, le site web en amont doit etre projecter dejà dès le debut pour etre deployer physiquement sur des machines scalables, scalable veut dire l'application web doit etre capable de pouvoir se multiplier en plusieurs applications qui servent plusieurs requetes, on parle de la d'une scalabilité verticale, dans le jargon technique c'est du load balancing en anglais, donc en cas de traffique HTTP elevé, on multiplie les instances de la machines serveur web de manière à rediriger les traffiques en entrée sur ces differentes machines. Mais aussi on peut faire une scalabilité horizontale qui consiste à augmenter la puissance de la machine en fonction du nombre de requete en entrée, par exemple augmenter la RAM del machine, augmenter le nombre de core du processeur/CPU etc.... ceci doit etre fait de manière automatique.
Si votre application à une architecture bien structurée par exemple à microservice, et si elle supporte les technologies à container comme docker couplé au orchestrateurs comme kubernetes, alors votre application sera scalable, et toutes les offres cloud comme Digital Ocean, AKS(Azure Kubernetes Service ou azure app service), google cloud service ou AWS amazon web service etc.. propose des solutions PAAS (Plateform as Service) ou on peut deployer sa solution dans les container docker et beneficier de cette scalabilité ainsi etre à mesure de recevoir des milliers et des millions de requetes HTTP sans probleme, mais attention, les offres cloud ne fonctionnent pas comme dans les hebergement mutualisés ou on partage le meme serveur avec les autres chez l'hebergeur et ou on paye un taux fixe par mois ou par an LoL, ici ça se passe comme l'abonnement de l'electricité ou du Gas ou de l'eau, donc de l'energie, on paye utiquement en fonction des resources utilisées, par exemple en fonction du trafique HTTP reçu.. quand il y a plein de trafique, kubernetes ou le cloud fait une scalabilité transparente pour vous et augmente ou multiplie les machines serveurs et vous payerez plus, quand il y a moins de trafique, il diminue les machines et vous payerez rien...
Donc avant de faire un site web, ne commencez pas toujours à coder coder sans rien comprendre, après l'analyse, il faut penser à l'architecture, une architecture eronnée dès le depart parfois peut entrainer de réecrire completement l'application si jamais elle connait de succès et a un traffique enorme.
Bon coding
@yvanol fotso, si nous sommes des millions, boir des milliards à ouvrire tous en semble au meme moment chacun sa page facebook comme nous le faison tous les jours et à chaque seconde, il y a des millions de requetes qui arrivent au meme moment au serveur web de facebook en backend, du coup si le backend n'est pas bien ecrit et organisé en microservice, facebook va planter à 100%.. la scalabilité horizontale permet en quelque sorte de multiplier les instances du serveur web, donc votre application par exemple facebook est fait de manière que par exemple si il y a 10 requetes consecutif fait en meme temps, les autres 10 successifs qui arrive seront servit par un autre serveur qui est cree à l'instant, les autres 10 successives declenche la meme procedure, creation d'un nouveau serveur ainsi de suite donc s'il y a 30 requetes, il y aura pas un seul serveur à servir mais 3 serveur contemporain, quand on retourne de nouveau a moins de 10 requetes, les deux autres serveurs sont detruit et il ne reste que un seul..donc il y a creation dynamique des serveurs et leur destructions quand il n'y a plus de requetes.. c'est ce que fait docker/kubernete, mais justement l'application dans ce cas facebook est iecrit de manière que les logiques metiers (buisness logic) soit fait de manière qu'on puisse comprendre immediatement quelle partie de l'application on peut multiplier quand il y a plusieurs requetes, si toi tu as fait ton en app en php tout melangé, ce serait difficile de le rendre scalable, car il faut faire la scalabilité seulemnt sur la partie la plus sollicité et non multiplié des instances du serveurs meme dans la partie qui n'est pas trop sollicité ce serait gatté les resources du serveur pour rien
05.02.2023, 13:38
Merci j'ai un soucis pourquoi vraiment faire du DPR sur une requête peut être comme consulter son profil de Facebook (l'exemple que vous avez pris) pourrait réduire la lourdeur de la requête Http ? 😀😀Donc la scalabilité horizontal repose l'augmentation des composants mémoire vive ... La création des instances serveur ici(S. Vertical) se fait comme en systèmes d'exploitation /programmation repose sur quoi ici les threads? Ou les fork ?
03.02.2023, 16:32
LarrySig Guest
24.05.2024, 18:18
Post: Comment fonctionnent Internement les guichets automatiques ?
Orvilledop Guest
22.05.2024, 00:57
Post: Comment fonctionnent Internement les guichets automatiques ?
Orvilledop Guest
15.05.2024, 16:04
Post: Comment fonctionnent Internement les guichets automatiques ?
Franck Guest
14.05.2024, 19:34
Post: Comment deployer un site web statique sur github?