Cet article fait partie de notre série Cloud Computing Foundations. Développez vos compétences en suivant notre cours de certification Introduction to Cloud Computing .
Ce concept vous est peut-être déjà familier. Vous vous souvenez du modèle client/serveur? Les serveurs web ne sont qu'une composante de ce modèle : le serveur.
À la base, un serveur web stocke et fournit des sites web et des applications web. Les serveurs web sont composés de matériel et de logiciels qui fonctionnent ensemble pour faciliter l'échange de données.
La composante matérielle d'un serveur web fait référence à l'ordinateur physique ou virtuel qui stocke les fichiers et les composants du site web. Cela va des documents HTML statiques, des fichiers texte, des images et des vidéos aux scripts dynamiques plus complexes. Par exemple, si vous visitez un site web dont la page d'accueil contient une vidéo, cette vidéo est stockée sur le matériel du serveur web.
Le composant logiciel d'un serveur web est chargé de contrôler la manière dont les utilisateurs peuvent accéder aux fichiers stockés sur le serveur. Pour ce faire, il gère les requêtes provenant des navigateurs web et d'autres appareils connectés à l'internet. Le logiciel installé sur le serveur web vous permet de visualiser les sites web dans votre navigateur web.
Commençons par examiner les composants qui font fonctionner les serveurs web.
Protocole de transfert de texte (HTTP)
Le protocole HTTP permet aux serveurs web de fournir des sites web et des applications web aux utilisateurs, afin qu'ils puissent accéder au contenu de l'internet et le visualiser.
Lorsque vous utilisez un navigateur web pour accéder à un site web, celui-ci envoie une requête au serveur web hébergeant ce site. Cette demande se présente sous la forme d'un message HTTP. Le serveur web reçoit et traite la demande, récupérant la ressource demandée à partir de ses composants matériels et logiciels.
Sur la droite de l'image ci-dessus, nous pouvons voir que le serveur web envoie un message à un navigateur web en utilisant le protocole HTTP. Pour demander un site web, il suffit de taper son URL dans la barre d'adresse du navigateur. Le navigateur associe ensuite cette URL à une adresse IP, qui représente l'emplacement physique du serveur où le site web est stocké. Si le serveur est trouvé à cette adresse IP, le logiciel du serveur web recevra la demande et renverra le site web que nous avons demandé. Ainsi, si nous tapons "www.example.com" dans le navigateur, le serveur web nous renverra le site web correspondant à "www.example.com".
Auto-hébergement ou fournisseur d'hébergement
Lorsqu'il s'agit d'héberger votre application web, vous avez le choix entre faire appel à un fournisseur d'hébergement ou installer votre propre serveur sur votre ordinateur personnel. Les particuliers ont souvent recours à l'auto-hébergement, mais pour les organisations qui fournissent des services essentiels, un fournisseur d'hébergement offre beaucoup plus de protection.
Un fournisseur d'hébergement vous permet de bénéficier de serveurs et de réseaux à haut débit. Un hébergeur a également la capacité de gérer de manière fiable les fluctuations de la consommation d'énergie et de se prémunir contre les pannes potentielles. Mais la principale raison pour laquelle nous faisons appel à des hébergeurs pour des services essentiels est de veiller à ce que des informations privées ne tombent pas dans le domaine public.
Logiciel de serveur web
Le logiciel de serveur web est le cœur de tout site web ou application web. Il nous permet de diffuser du contenu web aux utilisateurs sur l'internet. Lorsque nous mettons en place un site web et configurons nos serveurs, nous avons besoin d'un logiciel pour le faire fonctionner.
En termes de logiciels, deux solutions dominent le marché : Apache et NGINX. Nous passerons en revue ces deux solutions ici, mais il convient de noter qu'il existe d'autres options, notamment IIS et Lighttpd, chacune présentant des avantages et des défis uniques.
Apache
Apache est un logiciel de serveur web très répandu, idéal pour héberger des contenus dynamiques, tels que des sites de commerce électronique ou des forums. Il peut fonctionner sur plusieurs plateformes, notamment Windows, macOS et Linux. Il existe depuis 1995 environ et est l'un des serveurs web les plus anciens et les plus utilisés.
Apache est capable de gérer une variété de protocoles web, y compris HTTP, HTTPS et FTP, et peut fonctionner sur de nombreux systèmes d'exploitation différents, y compris Windows, Linux et macOS. Il est hautement personnalisable, avec divers modules qui peuvent ajouter des fonctionnalités supplémentaires telles que la prise en charge du contenu dynamique, l'authentification et la mise en cache. Il a été spécialement conçu pour traiter les contenus dynamiques au sein du serveur lui-même, indépendamment de tout autre composant du serveur.
Apache a un modèle "une connexion par processus". Le modèle "une connexion par processus" est une approche traditionnelle de la construction de serveurs web dans laquelle chaque connexion de client est gérée par un processus ou un fil de discussion distinct. Ce processus, ou thread, est chargé de gérer la connexion du client et de traiter ses demandes jusqu'à ce que la connexion soit fermée. Comme Apache utilise ce modèle, les performances du serveur se dégradent considérablement lorsque le nombre de demandes de connexion simultanées dépasse le nombre de processus.
L'une des principales caractéristiques de Apache est sa capacité à prendre en charge plusieurs hôtes virtuels sur un seul serveur, ce qui permet aux sites web de partager des ressources tout en conservant leurs configurations uniques. Apache est également très extensible, avec une grande communauté de développeurs qui créent et maintiennent des modules et des plugins supplémentaires pour étendre ses fonctionnalités.
NGINX
D'autre part, le moteur X (prononcé Engine X) est optimisé pour servir des contenus statiques comme les images et les vidéos, NGINX (prononcé Engine X) est optimisé pour servir des contenus statiques tels que des images et des vidéos et est apprécié pour sa capacité à gérer un grand nombre de connexions clients simultanées. NGINX est très apprécié pour sa capacité à améliorer la diffusion de contenu sur le web.
NGINX a été construit à l'aide d'un modèle asynchrone, piloté par les événements. Revenons un instant sur ces concepts.
Nous utilisons des modèles asynchrones lorsqu'un système doit traiter de nombreuses requêtes simultanées, comme dans les serveurs web, les communications réseau et la gestion de bases de données. En utilisant un modèle de programmation asynchrone, ces systèmes peuvent atteindre de meilleures performances et une meilleure évolutivité et réduire le risque de blocage et de gel.
Un modèle piloté par les événements est piloté par des événements dans le système plutôt que de suivre une séquence prédéterminée d'étapes.
Ainsi, un modèle asynchrone et événementiel permet à un système de gérer plusieurs tâches et événements ensemble sans bloquer le traitement d'autres tâches.
En raison de son architecture, NGINX ne peut pas traiter les contenus dynamiques, tels que PHP. Il doit le transmettre à un processeur externe pour qu'il soit exécuté. Pour cette raison, NGINX est plus adapté au contenu statique, au proxy inverse, à l'équilibrage de charge, au proxy de messagerie et à la mise en cache HTTP. NGINX est également recommandé pour les systèmes Linux.
Utilisation conjointe de NGINX et Apache
NGINX et Apache sont souvent utilisés ensemble. Nous pouvons ainsi tirer parti des atouts de chaque serveur tout en surmontant leurs limites.
L'une des méthodes les plus courantes pour intégrer Apache et NGINX consiste à placer NGINX devant Apache pour traiter toutes les demandes HTTP entrantes, comme le montre l'image ci-dessus. Cette configuration consiste à diriger toutes les demandes HTTP entrantes vers NGINX, qui relaie ensuite les demandes de contenu dynamique vers Apache tout en servant lui-même les demandes de contenu statique.
En plaçant NGINX devant Apache, nous tirons parti de la capacité de NGINXà gérer de grands volumes de demandes de connexion simultanées grâce à son modèle asynchrone et événementiel. Cela permet d'alléger la charge de travail de Apache en réduisant le nombre de threads et de processus ouverts nécessaires pour traiter les demandes, ce qui pourrait autrement dégrader les performances de Apache.
La configuration du proxy inverse offre également d'autres avantages, tels que l'équilibrage de la charge et l'amélioration de la sécurité. NGINX peut répartir les demandes sur plusieurs serveurs Apache , ce qui permet d'équilibrer la charge et d'éviter qu'un seul serveur ne soit submergé. En outre, NGINX peut faire office de tampon entre l'internet et le serveur web, offrant ainsi une protection supplémentaire contre les attaques.
Développez les compétences nécessaires pour réussir dans le domaine du cloud computing en suivant notre cours de certification Introduction to Cloud Computing .
Commentaires (1)
Crystal clear blog, loved the explanation!