Try   HackMD

Empiler les technologies du Web

Plusieurs Stacks pour un même objectif : s'améliorer et apprendre

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

© Julien Noyer - All rights reserved for educational purposes only


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 chasse 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ériques.

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.

En savoir plus https://bit.ly/3cLfhAD


Stack LAMP

Premier empillement des technologies OpenSources pour le Web

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Définition de la Stack LAMP

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 dynamique 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 un magazine allemand. 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 désignent 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.

En savoir plus https://bit.ly/3CRy4ot

Dans quel cas déployer une Stack LAMP ?

De par 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ée 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.

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 initialement développé pour Macintosh, il est également possible de l'installer sous Windows
  • XAMP initialement développé pour Lunix, il est également possible de l'installer sous Windows ou Macintosh
  • WAMP 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.


Stack MEAN (ou Full Stack Javascript)

"Javascript à toutes les étapes de développement Front End et Back End

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Définition de la Stack MEAN

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.

En savoir plus https://bit.ly/3xjjBAD

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 de par 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 mobiles a é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.

Comment émuler une Stack MEAN ?

Dans la mesure où 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 environnement d’exécution JavaScript construit sur le moteur JavaScript V8 de Chrome.
  • NPM gestionnaire de paquets officiel de Node.js
  • AngularCLI interface d'invite de commande pour Angular

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


Stack MEAN (ou Full Stack Javascript)

Un langage historique promit à un bel avenir

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Définition de la Stack Python

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.

En savoir plus https://bit.ly/3cIT8mD

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 d'IOT et WOT dans la mesure où 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.

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 interface d'invite de commandes
  • Django cadritiel orienté application
  • Flask cadritiel orienté API

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


Stack No Code

Développer des applications sans langages de programmations

Définition de la No Code

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.

En savoir plus https://bit.ly/3DTo7Ik

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 où les promoteurs de ces solutions cherchent à 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étend "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 ont 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.

Comment émuler une Stack No Code ?

La réponse est simple : mise à part avec Wordpress, ç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 plateforme permettant de développer des sites "One Page"
  • GlideApp plateforme permettant de développer des application via Google SpreadSheet
  • Zapier plateforme permettant de mettre en place un système d'automatisation
  • Webflow plateforme permettant de développer des sites complets

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


Ressources

Index des liens vers les sujets traités dans ce document

  • MAMP initialement développé pour Macintosh il est également possible de l'installer sous Windows
  • XAMP initialement développé pour Lunix il est également possible de l'installer sous Windows ou Macintosh
  • WAMP initialement développé pour Windows il est également possible de l'installer sous Lunix ou Macintosh
  • NodeJS environnement d’exécution JavaScript construit sur le moteur JavaScript V8 de Chrome.
  • NPM gestionnaire de paquets officiel de Node.js
  • AngularCLI interface d'invite de commande pour Angular
  • Python interface d'invite de commandes
  • Django cadritiel orienté application
  • Flask cadritiel orienté API
  • Carrd.co plateforme permettant de développer des sites "One Page"
  • GlideApp plateforme permettant de développer des application via Google SpreadSheet
  • Zapier plateforme permettant de mettre en place un système d'automatisation
  • Webflow plateforme permettant de développer des sites complets