BLOGUE – Dans la première partie de ce billet, j’ai décrit le processus d’interaction classique entre un client et un serveur web. Voici maintenant quelles sont les possibilités et les fonctionnalités qu’offre un serveur à code source libre à l’organisation qui l’utilise.

Un aspect considérable d’Apache est sa modularité : il existe une quantité incroyable de modules qui peuvent être installés et activés afin de configurer et d’agrandir les fonctionnalités qui sont offertes par celui-ci. Parmi les plus importants, il y a des modules qui permettent d’interpréter des langages de script, des modules qui permettent de faire de la réécriture d’URL, de la redirection, de la sécurité, de l’analyse, etc.

Illustration de serveurs
(Image : Thinkstock)

Bien sûr, il faut comprendre qu’une implémentation simple est toujours désirée. Plus il y a de modules activés, plus la configuration du server devient complexe et plus l’application nécessite des ressources physiques ou virtuelles afin de remplir son rôle.

Toutes ces fonctionnalités à part, les serveurs web modernes – dont Apache – ont la capacité d’héberger un nombre pratiquement illimité de sites web différent sur une même adresse IP. Étant donné le problème de déplétion des adresses IPv4 (il existe 4,3 milliards d’adresses IPv4 et plus de 7 milliards d’appareils connectés à l’internet) cette facette des serveurs web joue un rôle très important dans le fonctionnement actuel d’Internet.

Les différences entre Apache et Ngix

Dans le monde des serveurs web à code source libre, les deux serveurs qui dominent sont Apache et Nginx. Bien que les deux offrent des fonctionnalités similaires, leurs performances varient selon le contexte dans lequel ils sont utilisés. Apache est robuste, fiable, extrêmement bien documenté et offre un grand nombre de modules. Bien que Nginx offre moins d’options et de possibilités qu’Apache, celui-ci est dextrement rapide et performant.

La différence de rapidité vient de l’architecture fondamentale de ces deux applications : Apache est un serveur fondé sur les processus, alors que Nginx est un serveur fondé sur les événements. Cela signifie qu’Apache doit se dupliquer lorsqu’il reçoit plusieurs requêtes simultanées afin de pouvoir les traiter en même temps.

En d’autres termes, si un serveur Apache reçoit 100 connections en même temps, l’application Apache va se dupliquer 100 fois – en 100 instances – pour répondre à tous les clients en même temps. Donc plus il y a de trafic sur le serveur, plus Apache va nécessiter des ressources (de la mémoire vive, par exemple) pour fonctionner correctement.

Dans le cas de Nginx, celui-ci peut servir plusieurs requêtes concurrentes avec la même instance sans se dupliquer. Bien que sur un serveur à trafic faible ou moyen les deux applications démontrent des performances semblables, c’est un énorme avantage sur les serveurs très achalandés, car il réduit la quantité de mémoire vive qui est nécessaire pour fonctionner. À titre d’exemple, afin de servir 10 000 connections simultanées, Apache nécessiterait plusieurs centaines de mégaoctets de RAM, alors que Nginx en utiliserait une dizaine.

Que choisir alors entre Ngnix et Apache?

  • Fabililité et robustesse, et profusion des modules : Apache
  • Rapidité et performance pour tenir une charge importante : Ngnix

Dans tous les cas, il faut savoir oser le logiciel libre, car au-dela des bénéfices financiers, le logiciel libre permet un paramétrage sur mesure des solutions et un soutien communautaire durable. Et si vous ne savez comment faire, faites appel à des spécialistes qui vous accompagneront.

Merci à Lucian Alexandre Mariuta pour sa contribution à la production de ce billet.