Les piles de logiciels : la structure du développement Web

Les piles de logiciels (Web stack en anglais) sont un ensemble de logiciels permettant de développer des sites et des applications Web. Le terme « stack » signifie en anglais « pile », dans la mesure où l’on utilise un empilement de logiciels pour le développement d’un projet, dont les composants individuels se complètent. Ces piles de logiciels présentent une structure minimaliste et sont composées de la manière suivante :

  • un système d’exploitation ;
  • un serveur Web ;
  • une base de données ;
  • un interpréteur de script.

En plus du matériel du serveur, cette pile de logiciels veille à ce que les informations nécessaires au projet Web soient retransmises au client (navigateur), qui retravaille les codes HTML, CSS et JavaScript. Etant donné que les composants individuels d’une pile de logiciels peuvent être combinés à l’envoi, il existe de nombreuses variations qui vous aideront à parvenir à des résultats très différents. La combinaison la plus populaire est l’ensemble de logiciels libres LAMP qui permet de construire des serveurs de sites Web. LAMP est l’acronyme de Linux, Apache, MySQL et PHP.

Les composants traditionnels d’une pile de logiciels

Les piles logicielles peuvent être renforcées par l’utilisation de frameworks, d’autres langages de script, d’un serveur Proxy ou de divers programmes d’analyse. Les Web stacks sont composés d’au moins quatre logiciels :

Système d’exploitation

Le système d’exploitation est l’interface centrale entre le matériel du serveur (processeur, mémoire vive, espace Web…) et les composants logiciels qui s’y ajoutent. C’est plus précisément le système d’exploitation qui a recours aux ressources matérielles pour que la fonctionnalité de chacune des applications, et notamment du serveur Web, puisse être assurée. Les systèmes d’exploitation compatibles avec les piles logicielles sont, à titre d’exemple, Linux, Windows, Unix ou Mac OS.

Serveur Web

Le serveur Web est un logiciel installé sur le système d’exploitation et dont les documents sont transférés au client. A l’aide du protocole de transmission HTTP, la demande du client est transmise au serveur Web. Si le document demandé contient des éléments statiques comme des données HTML ou des images, le serveur Web intègre cette demande de manière directe, en livrant les données en question au client. En ce qui concerne le contenu dynamique, il ne peut être transmis qu’à l’aide de bases de données et de modules de script. Parmi les solutions de serveur Web les plus répandues, on peut compter Apache, Microsoft IIS ainsi que NGINX.

Base de données

Les systèmes de bases de données sont très importants pour tout projet Web. Les quantités de données sont traitées et stockées sur le long terme afin que le serveur Web puisse y avoir recours au moment opportun. A l’aide d’extensions de serveur, les requêtes sont retransmises. Elles génèrent à partir du résultat de la requête un format adapté (comme HTML par exemple) et le retransmettent au serveur Web. Le choix de la base de données est étroitement corrélé à celui du logiciel du serveur Web et au langage de script, ainsi qu’au langage de programmation. Les plus répandus sont Oracle, MySQL et MongoDB.

L’interpréteur de script

Sans langage de script, le logiciel de serveur Web ne serait pas en mesure de créer des sites Web et des applications dynamiques. D’une part, les interpréteurs de scripts se trouvent côté client, c’est-à-dire qu’ils interrogent le navigateur. D’autre part, certains processus de calcul pour l’affichage des pages ont lieu via une écriture de scripts par le serveur. PHP est l’interpréteur de script le plus répandu parmi les piles logicielles. D’autres alternatives populaires sont ASP.NET, Java, Ruby, Perl ou encore Python.

Voici les solutions de piles de logiciels

Toute une série de piles de logiciels a été éprouvée pour le développement Web. Ces dernières années, les exigences ont sensiblement augmenté en matière de convivialité pour les utilisateurs, de stabilité, d’interactivité et d’évolutivité. Les applications Web deviennent plus complexes, et cela a mené à l’utilisation de piles de logiciels plus innovantes, avec de nouvelles combinaisons.

JavaScript joue un rôle très important, même côté serveur. Les piles de logiciels pour applications Web permettent par exemple de mettre en œuvre des projets performants sur la plateforme Node.js sur JavaScript grâce à une programmation simplifiée. Découvrez ci-dessous trois piles de logiciels fortement appréciées :

LAMP – le classique

LAMP est, comme évoqué précédemment, la pile de logiciels la plus populaire. C’est une des premières à être sortie et est la combinaison idéale pour tous vos projets Web. LAMP comprend :

  • Linux en tant que système d’exploitation
  • Apache en guise de serveur Web
  • Une base de données MySQL
  • L’interpréteur de script PHP

Tous les composants de LAMP sont des logiciels open source et ont une licence dite libre (sinon les droits retourneraient aux auteurs). Ils peuvent être modifiés et développés continuellement par la communauté open source. De plus, ces logiciels sont gratuits. Ils ont, par exemple, été utilisés pour le développement de MediaWiki, logiciel de Wikipedia. La pile de logiciels de LAMP est tout à fait adaptée au développement de sites Web dynamiques. En tant qu’utilisateur, vous bénéficiez du support de la communauté, qui est très large, de tutoriaux très concis et de la possibilité d’utiliser PHP ou d’autres outils performants comme phpMyAdmin. 

Au vu des progrès techniques constants et du développement de nouveaux logiciels libres gratuits, il existe donc de plus en plus de variantes parmi les piles de logiciels de LAMP. Parmi elles, on remarque l’utilisation plus répandue des composants suivants :

  • WAMP (Windows en tant que système d’exploitation)
  • MAMP (Mac OS X en tant que système d’exploitation)
  • XAMPP (système d’exploitation au choix, couplé avec Perl et PHP en tant qu’interpréteur de script et un serveur FTP indépendant de toute plateforme)
  • LAPP (PostgreSQL en tant que base de données pour les projets d’entreprise)

Depuis que MariaDB (par les mêmes développeurs que MySQL) a été lancé, un nombre grandissant de projets ont été développés avec ce logiciel. C’est un système de bases de données très apprécié. Découvrez en plus dans l’article suivant.

WISA – la pile de logiciels de Microsoft

Contrairement au fonctionnement du serveur LAMP, pour lequel les composants individuels n’ont pas été développés pour être combinés, le Web stack WISA est une pile de logiciels dont les éléments ont été développés pour fonctionner ensemble. Microsoft a programmé chaque élément de WISA pour que les utilisateurs de ce pack logiciel puissent bénéficier d’un fonctionnement fluide. Cependant, la licence n’est pas libre, à l’inverse de la pile de logiciels LAMP. Mais les utilisateurs peuvent bénéficier du support technique de Microsoft. La composition de WISA est la suivante :

  • Le système d’exploitation Windows Server
  • Le logiciel de serveur Web Internet Information Services (IIS)
  • Le système relationnel de gestion de bases de données SQL Server
  • La bibliothèque de langages de programmation ASP.NET

Grâce à la bibliothèque ASP.NET, les projets Web basés sur Visual C# ou Visual Basic.NET peuvent être programmés à l’aide d’un compilateur qui exécute les différentes actions directement sur le système. WISA ne nécessite donc pas l’utilisation d’un interpréteur de script, ce qui entraîne une performance accrue. Cette pile de logiciels de Microsoft est donc une excellente solution pour les projets Web complexes et ambitieux.

MEAN – une pile de logiciels modernes pour les applications Web monopages

La pile de logiciels MEAN présente une approche différente aux autres Web stacks. Tout d’abord, il est important de savoir que son utilisation nécessite, au vu de ses composants, une maîtrise des langages de programmation pour les serveurs (PHP entre autres) et les clients (par exemple JavaScript). Les éléments de cette pile de logiciels moderne sont compatibles avec JavaScript. Les systèmes d’exploitation sont moins importants avec MEAN. Ses composants sont les suivants :

  • La base de données NoSQL MongoDB
  • Le framework d’applications Web côté client Express.js
  • Le framework en front-end côté client AngularJS
  • und die auf der JavaScript-Laufzeitumgebung aufbauende Plattform Node.js.

Les avantages de ce Web stack reposent sur un processus de développement simplifié à l’extrême et plus rapide, ainsi qu’un bon échelonnage de votre projet Web. Cette pile de logiciels est avant adaptée aux applications Web monopages orientées vers les utilisateurs et les applications mobiles (notamment grâce à la transmission des données et des documents en format JSON). Il existe des variations à MEAN, à l’image de MEEN (avec Ember.js en guise de framework en frontend). Ou encore MERN (avec React.js en guise de framework en frontend).

La plateforme Meteor de JavaScript offre un service en complément à la pile de logiciels MEAN.

Comment trouver la pile de logiciels adaptée à vos besoins ?

Le pack logiciel le plus adapté à vos besoins en matière de développement et de temps à investir dépend de votre projet Web et de son ampleur. Les piles de logiciels de JavaScript sont par exemple orientées en première ligne vers la réalisation d’applications Web monopages. Les Web stacks plus classiques, qui se basent sur PHP, Python ou Perl présentent quant-à-eux des avantages pour les projets multipages. Les langages de programmation et le degré de connaissances dans ce domaine jouent également un rôle prépondérant dans le choix de la pile de logiciels adaptée.

Vous obtiendrez de meilleurs résultats si vous optez pour un Web stack dont vous disposez des connaissances nécessaires en fonction des langages de programmation utilisés. Bien entendu, d’autres critères entrent en compte, comme la performance ou la stabilité offerte par la pile de logiciels. N’oubliez pas de veiller au fait que vous pourrez avoir recours à des composants alternatifs, comme nginx par exemple en guise de logiciel de serveur Web pour les projets qui génèrent beaucoup de trafic.