Une infra. web solide pour un frontend web
Cet article est basé sur la video de Cocadmin - Comment faire une infra prête pour la prod.
/!\ Attention, j'ai pu me tromper dans la compréhension et cet article peut contenir des erreurs.
Une infra de base
On constate un ralentissement du serveur web. On peut effectuer un scaling verticale en augmentant la puissance du serveur. Mais cela peut vite avoir un coût élevé.
On peut mettre en place un scaling horizontale, en ajoutant plusieurs serveurs web via un Load Balancer.
Ajouter un Load Balancer
Le load balancer peut via différents algorithme (ex: Round Robin) répartir au mieux la charge. Par exemple, si un serveur web est plus lent que d'autres, lui envoyer moins requêtes à traiter.
On détecte une autre problématique "Single Point of Failure", ici si le Load Balancer plante, le service n'est plus disponible.
Ajouter du DNS
Le DNS (Domain Name System) permet d'attribuer des IP aux Load Balancer, on peut ainsi répartir les requêtes utilisateurs sur divers Load Balancer.
Les applications disponibles sur les serveurs web sont dite stateless, elles ne dépendent pas l'une de l'autre.
Contrairement, à la DB qui elle est stateful, les données sont "synchronisées". Ce qui complexifie le scaling.
Le Sharding
Dans le cas de base de données No Sql, on peut ajouter plusieurs serveurs de base de données.
Pour des base de données SQL, on va utiliser une base de données principale (master) pour l'écriture. Et mettre en place, plusieurs serveurs de base de données en mode lecture seule.
C'est efficace, car en général, pour un service web, les requêtes d'écritures sont peux nombreuses comparées aux requêtes de lecture.