---
# System prepended metadata

title: WebStack - Empiler les technologies pour développer le Web
tags: [' server', ' vps', support]

---

---
title: WebStack - Empiler les technologies pour développer le Web
tags: support, vps, server
robots: noindex, nofollow
author: Julien Noyer
---

# WebStack : Empiler les technologies pour développer le Web

![](https://i.imgur.com/qJp5IXg.png)

## Introduction

Depuis la création du Web par Tim Berners-Lee en 1989, les technologies n'ont fait qu'évoluer pour offrir toujours plus de solution technique pour développer des sites Internet ou des applications. Loin de considérer qu'une technologie en chance une autre, il est important de mesurer chacune d'entre-elles pour avoir une analyse plus juste des enjeux inhérent au développement d'outils numérique. L'objectif de ce support et de proposer un tour d'horizon précis des opportunités qui sont offertes pour optimiser l'investissement et le temps à passer pour prendre en main des outils spécifiques qui répondent des besoins précis.


---

<br><br><br>

# Stack LAMP : historiquement le premier empillement, toujours le plus utilisé

![](https://i.imgur.com/71YABu8.png)

LAMP est un acronyme désignant un ensemble de logiciels et langages libres permettant de construire des serveurs de sites web, l'acronyme original se réfère aux notions suivantes : 

- **Linux** assure l'attribution des ressources aux autres composants (Rôle d'un Système d'exploitation ou OS pour Operating System) ;
- **Apache** est le serveur web « frontal » : il est « devant » tous les autres et répond directement aux requêtes du client web (navigateur) ;
- **MySQL** et son fork **MariaDB** sont des systèmes de gestion de bases de données (SGBD). Ils permettent de stocker et d'organiser des données ;
- **PHP** permet la génération de pages web dynamiques et la communication avec le serveur MySQL/MariaDB.

Même si les auteurs de chacun de ces logiciels et langages ne se sont pas coordonnés pour construire des plates-formes LAMP, cette combinaison s'est popularisée du fait du faible coût de l'ensemble et de la présence de tous ces composants dans la plupart des distributions GNU/Linux. Cet acronyme a été inventé par Michael Kunze qui l'a utilisé pour la première fois en 1998 dans le magazine allemand c't. L'article en question voulait démontrer qu'un ensemble de logiciels libres pouvait concurrencer les offres commerciales disponibles

De même que Python ou Perl peuvent remplacer PHP puisqu'ils commencent par la même lettre, certaines combinaisons utilisent le P pour PostgreSQL (qui remplace MySQL/MariaDB) et font désigner les composants mod_perl ou mod_python par le M. D'autres acronymes sont apparus pour nommer des plateformes de serveurs internet :

- **LAMA** Linux Apache MySQL/MariaDB ASP,
- **WAMP** Windows Apache MySQL/MariaDB PHP,
- **MAMP** Macintosh Apache MySQL/MariaDB PHP,
- **SAMP** Solaris Apache MySQL/MariaDB PHP,
- **LAPP** Linux Apache PostgreSQL PHP,
- **WASP** Windows Apache SQLServer PHP,
- **HAMP3** Hurd Apache MySQL/MariaDB PHP.
- **AMP** de manière plus générale, l'acronyme *AMP (star-AMP) signifie AMP sur n'importe quelle plate-forme (LAMP, WAMP, MAMP, XAMP...)
- **LEMP** Linux Nginx MySQL/MariaDB PHP.

*Source Wikipedia*

<br><br>

## Dans quel cas déployer une Stack LAMP ?

De part son aspect historique et Open Source, l'empilement LAMP est une valeur sûre pour mettre en place des projets de différentes envergures, mais le fait d'utiliser un langage comme PHP induit une logique de développement dit "synchrone" dans la mesure un une page PHP génère une page HTML qui est ensuite affichée dans le navigateur a moins d'associer au PHP le Javascript. Une très grande quantité de site Internet à forte affluence est développé avec l'empilement LAMP, Facebook ou Wikipédia pour ne citer qu'eux sont basés sur ces technologies, car la robustesse d'un serveur Apache offre des performances qui permettent avec PHP de gérer un important volume des requêtes SQL. 

Cette solidité induit néanmoins des problématiques de portabilité ou de monter en charge, car la configuration de l'empilement LAMP s'avère relativement spécifique à l'environnement de travail alors que d'autres solutions tout aussi robustes se mettent en place et s'adaptent plus facilement dans des écosystèmes différents.


<br><br>

## Comment émuler une Stack LAMP ?

Il n'est pas nécessaire de travailler en ligne sur un serveur distant pour développer avec l'empilement LAMP, selon votre système d'exploitation, vous pouvez l'émuler avec un logiciel spécifique afin de mettre en place un serveur local sur votre machine : 

- [**MAMP**](https://www.mamp.info/en/downloads/) initialement développé pour Macintosh il est également possible de l'installer sous Windows
- [**XAMP**](https://www.apachefriends.org/fr/index.html) initialement développé pour Lunix il est également possible de l'installer sous Windows ou Macintosh
- [**WAMP**](https://www.wampserver.com) initialement développé pour Windows il est également possible de l'installer sous Lunix ou Macintosh

> L'utilisation de MAMP permet de définir de manière simplifier la racine du serveur local.

---

<br><br><br>

# Stack MEAN : du Javascript à toutes les sauces

![](https://i.imgur.com/LuFW56E.png)

MEAN (MongoDB, Express.js, AngularJS (or Angular), and Node.js) is a free and open-source JavaScript software stack for building dynamic web sites and web applications.

Because all components of the MEAN stack support programs that are written in JavaScript, MEAN applications can be written in one language for both server-side and client-side execution environments.

Though often compared directly to other popular web development stacks such as the LAMP stack, the components of the MEAN stack are higher-level including a web application presentation layer and not including an operating system layer.

The acronym MEAN was coined by Valeri Karpov. He introduced the term in a 2013 blog post and the logo concept, initially created by Austin Anderson for the original MEAN stack LinkedIn group, is an assembly of the first letter of each component of the MEAN acronym.

- **MongoDB** NoSQL database program that uses JSON-like BSON (binary JSON) documents with schema. The role of the database in the MEAN stack is very commonly filled by MongoDB because its use of JSON-like documents for interacting with data as opposed to the row/column model allows it to integrate well with the other (JavaScript-based) components of the stack.
- **Express.js** modular web application framework package for Node.js. Whilst Express is capable of acting as an internet-facing web server, even supporting SSL/TLS out of the box, it is often used in conjunction with a reverse proxy such as NGINX or Apache for performance reasons.
- **Angular** Typically data is fetched using Ajax techniques and rendered in the browser on the client-side by a client-side application framework, however as the stack is commonly entirely JavaScript-based, in some implementations of the stack, server-side rendering where the rendering of the initial page can be offloaded to a server is used so that the initial data can be prefetched before it is loaded in the user's browser.
- **Node.js** application runtime that the MEAN stack runs on. The use of Node.js which is said to represent a "JavaScript Everywhere" paradigm is integral to the MEAN stack which relies on that concept.

*Source Wikipedia*

<br><br>

## Dans quel cas déployer une Stack MEAN ?

L'empilement MEAN et, comme LAMP, basé sur des technologies Open Source, mais présente un intérêt très avantageux dans la mesure ou MEAN est basé sur un seul langage : le Javascript. Cotés serveur, il est toujours nécessaire d'utiliser LINUX pour configurer l'empilement, mais départ sa légèreté, en terme de poids de fichier comme en terme d'exécution, l'empilement MEAN prend de plus en plus de place dans le marché. MEAN à d'une certaine manière permit de démocratiser le développement d'application Web en offrant une courbe d'apprentissage plus courte tout en apportant des solutions robustes et transportables facilement d'un écosystème à un autre. 

Le développement d'applications mobile à également grandement évolué grâce à MEAN car il est à présent possible de travailler avec des logiques de développement Web et de compiler le code produit pour permettre son exécution sur différents systèmes d'exploitation. L'utilisation poussée de Javascript présente également un intérêt écologique et donc économique, car l'empilement MEAN induit la notion de développement dit "asynchrone" avec la mise en place d'API pour gérer et structurer les informations et en déportant la puissance de calcul sur le client par étapes, ce qui réduit les besoins en puissance de calcul cotés serveur.


<br><br>

## Comment émuler une Stack MEAN ?

Dans la mesure ou l'empilement, MEAN est basé sur le langage Javascript, il ne faut disposer que de très peu d'outils qui sont disponibles sur tous les systèmes d'exploitation. Il n'est d'ailleurs nécessaire d'utiliser qu'un seul outil et comme pour l'empilement LAMP, certains outils additionnels aident à développer des applications MEAN : 

- [**NodeJS**](https://nodejs.org/en/) environnement d’exécution JavaScript construit sur le moteur JavaScript V8 de Chrome.
- [**NPM**](https://cli.angular.io) gestionnaire de paquets officiel de Node.js
- [**AngularCLI**](https://cli.angular.io) interface d'invite de commande pour Angular

> La partie FrontEnd n'est pas nécessairement développée avec Angular mais avec n'importe qu'elle cadritiel ou même en langages natifs

---

<br><br><br>

# Stack Python : un langage historique qui à un bel avenir devant lui

![](https://i.imgur.com/hgbuRF0.png)

Python est un langage de programmation interprété, multi-paradigme et multiplateformes. Il favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.

Le langage Python est placé sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plates-formes informatiques, des smartphones aux ordinateurs centraux, de Windows à Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et peut aussi être traduit en Java ou .NET. Il est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser. Il est également apprécié par certains pédagogues qui y trouvent un langage où la syntaxe, clairement séparée des mécanismes de bas niveau, permet une initiation aisée aux concepts de base de la programmation.

Python est un langage de programmation qui peut s'utiliser dans de nombreux contextes et s'adapter à tout type d'utilisation grâce à des bibliothèques spécialisées. Il est cependant particulièrement utilisé comme langage de script pour automatiser des tâches simples mais fastidieuses, comme un script qui récupérerait la météo sur Internet ou qui s'intégrerait dans un logiciel de conception assistée par ordinateur afin d'automatiser certains enchaînements d'actions répétitives (voir la section Adoption). On l'utilise également comme langage de développement de prototype lorsqu'on a besoin d'une application fonctionnelle avant de l'optimiser avec un langage de plus bas niveau. Il est particulièrement répandu dans le monde scientifique, et possède de nombreuses bibliothèques optimisées destinées au calcul numérique.

*Source Wikipedia*

<br><br>

## Dans quel cas déployer une Stack Python ?

L'envergure de Python est tellement large que nous serions tentés de dire qu'il peut être déployé dans tous les domaines, mais il est nécessaire de comprendre pourquoi ce langage est en train de surpasser tous les autres. Comme pour l'empilement MEAN, le fait de baser le développement d'application sur un seul langage présente un avantage certain, mais Python assure également une très grande robustesse d'exécution cotés serveur et des possibilités de déploiement énormes. 

Si Python est en train de prendre une place majeure dans l'univers du développement d'application, c'est qu'il est possible à la fois de développer des API de grande qualité, mais aussi de travailler sur des logiques de IOT et WOT dans la mesure ou Python s'adapte parfaitement sur des supports de faible puissance. Il faut considérer Python comme un langage BackEnd qui s'associe aux langages FrontEnd pour développer des interfaces dynamiques, il est par conséquent possible d'associer des logiques d'intelligence artificielle ou de BigData a des clients FrontEnd afin de déporter certains calcule pour limiter le poids des serveurs.


<br><br>

## Comment émuler une Stack Python ?

Comme pour l'empilement MEAN il n'est pas nécessaire d'installer énormément de chose pour développer en Python, mais certains outils permettent de structurer le développement : 

- [**Python**](https://www.python.org/downloads/) interface d'invite de commandes
- [**Django**](https://www.djangoproject.com) cadritiel orienté application
- [**Flask**](https://flask.palletsprojects.com/en/1.1.x/) cadritiel orienté API

> Un des grands avantages de Python est sa communauté de développeurs qui est très active

---

<br><br><br>

# Stack No Code : développer des applications sans langages de programmation

![](https://i.imgur.com/6tOcqvR.png)

No-code development platform (NCDPs) allows programmers and non-programmers to create application software through graphical user interfaces and configuration instead of traditional computer programming. No-code development platforms are closely related to low-code development platforms as both are designed to expedite the application development process. These platforms have both increased in popularity as companies deal with the parallel trends of an increasingly mobile workforce and a limited supply of competent software developers.

Platforms vary widely in their functionality, integrations, and market niche. Some applications may focus solely on a specific business function such as data capture or workflow while others may seek to integrate entire enterprise resource planning tools into a mobile form factor.

NCDPs are used to meet the needs of companies that are seeking to digitize processes through cloud-based mobile applications. No-code tools are often designed with line of business users in mind as opposed to traditional IT. This shift in focus is meant to help accelerate the development cycle by bypassing traditional IT development constraints of time, money, and scarce software development human capital resources to allow teams to align their business strategy with a rapid development process. NCDPs also often leverage enterprise-scale APIs and web service catalogs, open data sets, and tested and proven template galleries, to help integrate existing business systems while adding a practical layer of user functionality.

The transition from traditional enterprise software to a lean development methodology is also changing the role of traditional IT leaders and departments. Whereas IT once provided not only approval of new technology but procurement and development of new tools, IT's role is now increasingly one of governance over line-of-business who develop niche tools for their work stream.

The potential benefits of utilizing a NCDP include:

- **Access** By 2018, it has been estimated that over than half of all B2E (business-to-employee) mobile apps would be created by enterprise business analysts using codeless tools. This ongoing shift is increasing the number of potential app creators from individuals with coding skills to anyone with internet access and functional business acumen.
- **Agility** NCDPs typically provide some degree of templated user-interface and user experience functionality for common needs such as forms, workflows, and data display allowing creators to expedite parts of the app creation process.
- **Richness** NCDPs which at one point were limited to more basic application functions increasingly provide a level of feature-richness and integrations that allows users to design, develop, and deploy apps that meet specific business needs.

*Source Wikipedia*

<br><br>

## Dans quel cas déployer une Stack No Code ?

Les logiques No Code amènent des possibilités nouvelles qui, pour des profils de développeuses et développeurs Web, présente l'avantage de pouvoir très rapidement prototyper une application ou un site Web. La promotion qui est actuellement faite du No Code va dans un sens relativement accès sur le marketing dans la mesure ou les promoteurs de ces solutions cherche à démontrer que l'avenir n'est pas à la programmation, mais au No Code. 

Les logiques de développement Web ont évolué d'année en année et il ne faut jamais voir d'un mauvais œil l'arrivé de solution qui prétendent "disrupter" le marché du développement. Les CMS et Wordpress en premier lieu n'ont pas supprimé le métier de développeuse ou de développeur alors que 90% des sites Web peuvent être développés avec Wordpress. Les CMS on contribué à vulgariser le développement de site Web, ce qui a permis à des profils dont ce n'est pas le métier d'appendre des logiques fondamentales, il en va de même pour les nouveaux outils No Code qui doivent être perçus comme des nouveaux outils clef en main qui permettront à l'avenir de valoriser des compétences plus précises et stables.


<br><br>

## Comment émuler une Stack No Code ?

La réponse est simple : ça n'est pas possible. Contrairement aux autres empilements, le No Code n'est absolument pas Open Source et dépend d'application en ligne - pas développés en No Code - qui proposent des offres tarifaires variées qui sont pour le moment relativement peu onéreux, mais qui n'ont pas pour objectif de le rester. 

Partant de ce constat, il n'est absolument pas possible de passer d'une plateforme No Code à une autre, car chacune de ces plateformes cherche pour le moment à gagner des parts de marché.

- [**Carrd.co**](https://carrd.co) plateforme permettant de développer des sites "One Page"
- [**GlideApp**](https://www.glideapps.com) plateforme permettant de développer des application via Google SpreadSheet
- [**Zapier**](https://zapier.com/) plateforme permettant de mettre en place un système d'automatisation
- [**Webflow**](https://webflow.com/) plateforme permettant de développer des sites complets

> Il ne faut pas perdre trop de temps à apprendre à utiliser ces plateformes dans la mesure ou il n'est pas possible de récupérer le code réalisé

---

<br><br><br>

# Ressources

![](https://i.imgur.com/a1EHP6W.png)

## Liens utiles

La liste ci-dessous contient les liens utiles cité dans ce document.

- [**MAMP**](https://www.mamp.info/en/downloads/) initialement développé pour Macintosh il est également possible de l'installer sous Windows
- [**XAMP**](https://www.apachefriends.org/fr/index.html) initialement développé pour Lunix il est également possible de l'installer sous Windows ou Macintosh
- [**WAMP**](https://www.wampserver.com) initialement développé pour Windows il est également possible de l'installer sous Lunix ou Macintosh
- [**NodeJS**](https://nodejs.org/en/) environnement d’exécution JavaScript construit sur le moteur JavaScript V8 de Chrome.
- [**NPM**](https://cli.angular.io) gestionnaire de paquets officiel de Node.js
- [**AngularCLI**](https://cli.angular.io) interface d'invite de commande pour Angular
- [**Python**](https://www.python.org/downloads/) interface d'invite de commandes
- [**Django**](https://www.djangoproject.com) cadritiel orienté application
- [**Flask**](https://flask.palletsprojects.com/en/1.1.x/) cadritiel orienté API
- [**Carrd.co**](https://carrd.co) plateforme permettant de développer des sites "One Page"
- [**GlideApp**](https://www.glideapps.com) plateforme permettant de développer des application via Google SpreadSheet
- [**Zapier**](https://zapier.com/) plateforme permettant de mettre en place un système d'automatisation
- [**Webflow**](https://webflow.com/) plateforme permettant de développer des sites complets