Qu'est-ce que la pile MEAN? Applications Web JavaScript

La pile MEAN, définie

La pile MEAN est une pile logicielle, c'est-à-dire un ensemble de couches technologiques qui composent une application moderne, entièrement construite en JavaScript. MEAN représente l'arrivée de JavaScript en tant que langage de «développement full-stack», exécutant tout dans une application du front-end au back-end. Chacune des initiales de MEAN représente un composant de la pile:

  • MongoDB: un serveur de base de données interrogé à l'aide de JSON (JavaScript Object Notation) et qui stocke les structures de données dans un format JSON binaire
  • Express: un framework JavaScript côté serveur
  • Angular: un framework JavaScript côté client
  • Node.js: un moteur d'exécution JavaScript

Une grande partie de l'attrait de MEAN est la cohérence qui vient du fait qu'il s'agit de JavaScript de bout en bout. La vie est plus simple pour les développeurs car chaque composant de l'application - des objets de la base de données au code côté client - est écrit dans le même langage. 

Cette cohérence contraste avec le méli-mélo de LAMP, la base de longue date des développeurs d'applications Web. Comme MEAN, LAMP est un acronyme pour les composants utilisés dans la pile: Linux, le serveur HTTP Apache, MySQL et PHP, Perl ou Python. Chaque pièce de la pile a peu de choses en commun avec toute autre pièce. 

Cela ne veut pas dire que la pile LAMP est inférieure. Il est encore largement utilisé et chaque élément de la pile bénéficie toujours d'une communauté de développement active. Mais la cohérence conceptuelle fournie par MEAN est une aubaine. Si vous utilisez le même langage et plusieurs des mêmes concepts de langage, à tous les niveaux de la pile, il devient plus facile pour un développeur de maîtriser la pile entière à la fois.

La plupart des piles MEAN comportent les quatre composants: la base de données, le frontal, le back-end et le moteur d'exécution. Cela ne signifie pas que la pile se compose uniquement de ces éléments, mais qu'ils forment le noyau.

MongoDB

Comme les autres systèmes de base de données NoSQL, MongoDB utilise une conception sans schéma. Les données sont stockées et récupérées sous forme de documents au format JSON, qui peuvent avoir n'importe quel nombre de champs imbriqués. Cette flexibilité rend MongoDB bien adapté au développement rapide d'applications face à des exigences en évolution rapide.

L'utilisation de MongoDB comporte un certain nombre de mises en garde. D'une part, MongoDB a la réputation d'être non sécurisé par défaut. Si vous le déployez dans un environnement de production, vous devez prendre des mesures pour le sécuriser. Et pour les développeurs issus de bases de données relationnelles, ou même d'autres systèmes NoSQL, vous devrez passer du temps à connaître MongoDB et son fonctionnement. Martin Heller a plongé profondément dans MongoDB 4 dans la revue de, où il parle des internes, des requêtes et des inconvénients de MongoDB.

Comme pour toute autre solution de base de données, vous aurez besoin d'un middleware quelconque pour communiquer entre MongoDB et les composants JavaScript. Un choix courant pour la pile MEAN est Mongoose. Mongoose fournit non seulement la connectivité, mais également la modélisation d'objets, la validation côté application et un certain nombre d'autres fonctions que vous ne voulez pas être dérangé par réinventer pour chaque nouveau projet.

Express.js 

Express est sans doute le framework d'application Web le plus utilisé pour Node.js. Express ne fournit qu'un petit ensemble de fonctionnalités essentielles - il s'agit essentiellement d'un serveur Web programmable minimal - mais peut être étendu via des plug-ins. Cette conception sans fioritures aide à garder Express léger et performant.

Rien ne dit qu'une application MEAN doit être servie directement aux utilisateurs via Express, bien que ce soit certainement un scénario courant. Une architecture alternative consiste à déployer un autre serveur Web, comme Nginx ou Apache, devant Express en tant que proxy inverse. Cela permet de décharger des fonctions telles que l'équilibrage de charge vers une ressource distincte.

Parce qu'Express est délibérément minimal, il n'a pas beaucoup de frais généraux conceptuels associés. Les didacticiels d'Expressjs.com peuvent vous emmener d'un aperçu rapide des bases à la connexion de bases de données et au-delà.

Angulaire

Angular (anciennement AngularJS) est utilisé pour créer le frontal d'une application MEAN. Angular utilise le JavaScript du navigateur pour formater les données fournies par le serveur dans des modèles HTML, de sorte qu'une grande partie du travail de rendu d'une page Web puisse être déchargée vers le client. De nombreuses applications Web d'une seule page sont créées à l'aide d'Angular sur le front-end.

Une mise en garde importante: les développeurs travaillent avec Angular en écrivant en TypeScript, un langage typé de type JavaScript qui se compile en JavaScript. Pour certaines personnes, c'est une violation de l'un des concepts cardinaux de la pile MEAN: JavaScript est utilisé partout et exclusivement. Cependant, TypeScript est un proche cousin de JavaScript, donc la transition entre les deux n'est pas aussi discordante qu'elle pourrait l'être avec d'autres langages.

Pour une plongée approfondie dans Angular, Martin Heller de vous a couvert. Dans son didacticiel Angular, il vous guidera à travers la création d'une application Web angulaire moderne.

Node.js 

Enfin, et non des moindres, il y a Node.js, le moteur d'exécution JavaScript qui alimente le côté serveur de l'application Web MEAN. Node est basé sur le moteur JavaScript V8 de Google, le même moteur JavaScript qui s'exécute dans le navigateur Web Chrome. Node est multiplateforme, fonctionne à la fois sur des serveurs et des clients et présente certains avantages en termes de performances par rapport aux serveurs Web traditionnels tels qu'Apache. 

Node.js adopte une approche différente pour traiter les requêtes Web que les serveurs Web traditionnels. Dans l'approche traditionnelle, le serveur engendre un nouveau thread d'exécution ou même forge un nouveau processus pour gérer la demande. La génération de threads est plus efficace que les processus de fork, mais les deux impliquent beaucoup de frais généraux. Un grand nombre de threads peut amener un système fortement chargé à consacrer des cycles précieux à la planification des threads et au changement de contexte, ajoutant une latence et imposant des limites d'évolutivité et de débit. 

Node.js est beaucoup plus efficace. Node exécute une boucle d'événements à thread unique enregistrée auprès du système pour gérer les connexions, et chaque nouvelle connexion déclenche une fonction de rappel JavaScript. La fonction de rappel peut gérer les demandes avec des appels d'E / S non bloquants et, si nécessaire, peut générer des threads à partir d'un pool pour exécuter des opérations de blocage ou gourmandes en CPU et pour équilibrer la charge sur les cœurs de processeur.

Node.js nécessite moins de mémoire pour gérer plus de connexions que la plupart des architectures concurrentes qui évoluent avec des threads, notamment Apache HTTP Server, ASP.NET, Ruby on Rails et les serveurs d'applications Java. Ainsi, Node est devenu un choix extrêmement populaire pour la création de serveurs Web, d'API REST et d'applications en temps réel telles que des applications de chat et des jeux. S'il y a un composant qui définit la pile MEAN, c'est Node.js. 

Pour une introduction à Node.js, voir l'explication de Martin Heller. Pour commencer à développer avec Node, consultez son didacticiel Node.js. 

Avantages et bénéfices de la pile MEAN 

Ces quatre composants fonctionnant en tandem ne sont pas la solution à tous les problèmes, mais ils ont définitivement trouvé une niche dans le développement contemporain. IBM décompose les domaines où la pile MEAN correspond à la facture. Parce qu'elle est évolutive et peut gérer un grand nombre d'utilisateurs simultanément, la pile MEAN est un choix particulièrement judicieux pour les applications cloud natives. Le frontal angulaire est également un excellent choix pour les applications d'une seule page. Les exemples comprennent:

  • Applications de suivi des dépenses
  • Sites d'agrégation d'actualités
  • Applications de cartographie et de localisation

MEAN contre MERN

L'acronyme «MERN» est parfois utilisé pour décrire les piles MEAN qui utilisent React.js à la place de Angular. React est un framework, pas une bibliothèque à part entière comme Angular, et il y a des avantages et des inconvénients à permuter React dans une pile basée sur JavaScript. En bref, React est plus facile à apprendre, et la plupart des développeurs peuvent écrire et tester du code React plus rapidement qu'ils ne peuvent écrire et tester une application Angular à part entière. React produit également de meilleurs frontaux mobiles. D'un autre côté, le code angulaire est plus stable, plus propre et plus performant. En général, Angular est le choix pour le développement de classe entreprise.

Mais le fait même que ce choix vous soit offert démontre que MEAN n'est pas une camisole de force limitée pour les développeurs. Non seulement vous pouvez échanger différents composants pour l'une des quatre couches canoniques; vous pouvez également ajouter des composants complémentaires. Par exemple, des systèmes de mise en cache comme Redis ou Memcached pourraient être utilisés dans Express pour accélérer les réponses aux demandes.

Développeurs MEAN stack

Avoir les compétences pour être un développeur MEAN stack implique essentiellement de devenir un développeur full-stack, avec un accent sur l'ensemble particulier d'outils JavaScript dont nous avons discuté ici. Cependant, la popularité de MEAN stack signifie que de nombreuses offres d'emploi seront destinées aux développeurs full-stack avec des compétences spécifiques à MEAN. Guru99 décompose les conditions préalables pour décrocher l'un de ces emplois. Au-delà de la familiarité avec les composants de base de la pile MEAN, un développeur de pile MEAN doit avoir une bonne compréhension de:

  • Processus front-end et back-end
  • HTML et CSS
  • Modèles de programmation et directives de conception d'architecture
  • Développement Web, intégration continue et technologies cloud
  • Architecture de base de données
  • Le cycle de vie du développement logiciel (SDLC) et ce que c'est que de développer dans un environnement agile

Quel est le salaire d'un développeur MEAN stack? Bien qu'il y ait toujours une gamme basée sur l'expérience et l'employeur, c'est certainement un domaine lucratif. En décembre 2019, Neuvoo.com indique que le salaire médian auquel un développeur MEAN stack peut s'attendre est d'environ 125000 dollars par an. Indeed.com rassemble les développeurs MEAN stack avec les développeurs full-stack plus généralement et fixe le salaire annuel typique à environ 112000 USD.

Didacticiels MEAN stack

Êtes-vous à l'aise avec les bases techniques et prêt à plonger et à apprendre la pile MEAN? Il existe un certain nombre de tutoriels gratuits qui peuvent vous aider à démarrer. Le site Angular Templates propose un didacticiel particulièrement complet qui vous guide tout au long du processus de création d'un site Web simple à l'aide de la pile MEAN. TutorialsPoint a un bon guide pour créer une application Web d'une seule page avec la pile MEAN. Profitez de vous salir les mains et bonne chance!