MEAN vs LAMP pour votre prochain projet de programmation

La transition d'une curiosité de pointe à un bourreau de travail pratique n'est pas celle que font de nombreuses technologies. Les débutants précoces d'hier ne parviennent souvent pas à tenir leur promesse de la version 0.1. Ce n'est pas le cas pour les technologies qui composent la pile MEAN très acronyme.

Il y a seulement quelques années, MongoDB, Express.js, AngularJS et Node.js soulevaient les sourcils à eux seuls. Maintenant, ils ont grandi et se sont ligotés, et ensemble, ils font un travail sérieux, expulsant un petit nombre de développeurs du vaste camp LAMP. Mais comment ce truc nouveau MEAN se compare-t-il exactement à LAMP? Quand est-il préférable de choisir le LAMP bien testé et mature plutôt que cette collection novatrice de technologies JavaScript?

La réponse est lorsque la simplicité et la structure commune vous facilitent la vie. MongoDB offre une couche plus flexible et plus adaptée pour le stockage des données. Node.js fournit un meilleur lien pour exécuter votre serveur, tandis qu'Express vous aide à standardiser la façon dont vous créez vos sites Web. Sur le client, Angular fournit un moyen propre d'ajouter des fonctions interactives et des composants riches basés sur AJAX. Mettez-les tous ensemble et ils créent un mécanisme propre et cohérent pour déplacer les données de l'utilisateur vers la batterie de disques et inversement.

La vraie explication, cependant, est plus profonde. Nous vous proposons ici neuf raisons de donner une chance à MEAN avec votre prochain projet. Tout le monde n'a pas le temps ou le budget pour jeter et recoder l'ancien dans le cadre le plus récent et le plus branché, et vous ne devriez pas non plus jeter la fiabilité à toute épreuve des outils éprouvés au combat comme Apache, MySQL ou PHP. Mais pour les projets sur le terrain qui pourraient bénéficier de la flexibilité, de la simplicité et des performances, opter pour MOYENNE peut rendre votre vie meilleure que vous ne le pensez.

MongoDB est conçu pour le cloud

Si vos plans d'application Web incluent la réalisation de la promesse de quelques centimes par processeur du cloud, la pile MEAN offre une couche de base de données convaincante dans MongoDB. Cette base de données moderne est équipée d'un partitionnement automatique et d'une prise en charge complète des clusters, dès la sortie de la boîte. Branchez MongoDB et il se propage sur votre cluster de serveurs pour offrir une prise en charge du basculement et une réplication automatique. Compte tenu de la facilité avec laquelle les applications peuvent être développées, testées et hébergées dans le cloud, il y a peu de raisons de ne pas envisager MongoDB pour votre prochain projet.

La structure de MySQL est confinée 

Quiconque a développé ou maintenu une application basée sur LAMP pendant un certain temps sait que la force de MySQL en tant que base de données relationnelle peut parfois sembler un peu emprisonnante. Comme toutes les bases de données relationnelles, MySQL vous oblige à pousser vos données dans des tables. Ce n'est pas un problème si chaque entrée correspond exactement au même format, mais à quelle fréquence le monde est-il aussi généreux? Et si deux personnes partagent la même adresse mais pas le même compte? Que faire si vous voulez avoir trois lignes à l'adresse au lieu de deux? Qui n'a pas essayé de réparer une base de données relationnelle en regroupant trop de données dans une seule colonne? Ou bien vous finissez par ajouter encore une autre colonne, et la table se développe sans limites.

MongoDB, en revanche, offre une structure de document bien plus flexible. Vous souhaitez ajouter de nouvelles informations personnelles à vos profils d'utilisateurs? Ajoutez simplement le champ à votre formulaire, enroulez-le avec le reste des données dans un document JSON et placez-le dans votre collection MongoDB. C'est idéal pour les projets en flux et pour traiter des données qui peuvent finalement s'avérer difficiles à contraindre sous forme de tableau.

L'espace disque est bon marché

Parmi les grandes révélations des bases de données relationnelles figurait la commande JOIN. Avec JOIN, nous pourrions économiser de l'espace disque en supprimant les champs répétés tels que la ville, l'état et le code postal. En stockant ces données fréquemment consultées et répétées dans des tables séparées qui peuvent être incluses dans les résultats futurs via un JOIN, nous gardons notre base de données en ordre et nos disques minces.

Mais les JOINs peuvent être délicats pour certains et durs sur la RAM, et bien que ce soit toujours une bonne idée d'isoler et d'accéder aux données dans des tables séparées via des JOINs, il n'est plus nécessaire d'économiser de l'espace disque maintenant que les lecteurs de disque sont mesurés en plusieurs téraoctets. L'espace est si bon marché que certains concepteurs de bases de données finissent par dénormaliser leurs données car les JOIN sont trop lents. Une fois que vous faites cela, vous n'avez pas autant besoin d'une base de données relationnelle. Pourquoi ne pas utiliser MongoDB à la place?

Node.js simplifie la couche serveur

Naviguer dans les différentes couches de la pile LAMP peut être une danse difficile de nombreux chapeaux, une danse qui vous oblige à parcourir divers fichiers de configuration avec une syntaxe différente. MEAN simplifie cela grâce à l'utilisation de Node.js.

Vous souhaitez modifier la façon dont votre application achemine les demandes? Saupoudrez de JavaScript et laissez Node.js faire le reste. Vous souhaitez modifier la logique utilisée pour répondre aux requêtes? Utilisez également JavaScript. Si vous souhaitez réécrire des URL ou créer un mappage étrange, c'est également en JavaScript. La dépendance de la pile MEAN à Node.js a mis ce type de tuyauterie au même endroit, le tout dans un seul langage, le tout dans un seul tas de logique. Vous n'avez pas besoin de relire les pages de manuel pour PHP, Apache et tout ce que vous ajoutez à la pile. Alors que la génération LAMP a différents fichiers de configuration pour tout, Node.js évite complètement ce problème. Tout avoir dans une seule couche signifie moins de confusion et moins de risques de bugs étranges créés par des interactions étranges entre plusieurs couches.

MEAN rend le code isomorphe

La simplicité ne s'arrête pas à l'utilisation de JavaScript sur le serveur. En passant à MOYEN, vous pouvez également profiter du même JavaScript sur le client, laissant derrière vous la schizophrénie client / serveur de la pile LAMP. Si vous écrivez du code pour Node et décidez qu'il est mieux placé dans Angular, vous pouvez le déplacer facilement, et il est presque certain qu'il fonctionnera de la même manière. Cette flexibilité facilite considérablement la programmation d'applications basées sur MEAN. De plus, si vous recrutez un projet, vous n'avez pas besoin de rechercher un expert PHP et un expert JavaScript, ou un spécialiste front-end et back-end. Au lieu de cela, tout est JavaScript dans la pile.

JSON partout

Angular et MongoDB parlent tous deux JSON, tout comme Node.js et Express. Les données circulent parfaitement entre toutes les couches sans réécriture ni reformatage. Le format natif de MySQL pour répondre aux requêtes est bien le sien. Oui, PHP a déjà le code pour importer des données MySQL et faciliter leur traitement en PHP, mais cela n'aide pas la couche cliente. Cela peut être un peu mineur pour les vétérans chevronnés de LAMP car il existe tellement de bibliothèques bien testées qui convertissent facilement les données, mais tout cela semble un peu inefficace et déroutant. MEAN utilise le même format JSON pour les données partout, ce qui le rend plus simple et fait gagner du temps au reformatage lors de son passage à travers chaque couche. De plus, l'omniprésence de JSON à travers la pile MEAN facilite le travail avec des API externes: OBTENEZ, manipulez, présentez, POST et stockez le tout dans un seul format.

Node.js est ultra-rapide

Apache était génial, mais ces jours-ci, Node.js est souvent plus rapide. Un certain nombre de benchmarks montrent que Node.js offre de meilleures performances, tout en faisant beaucoup plus. C'est peut-être l'âge du code. Peut-être que l'architecture événementielle Node.js est plus rapide. Cela n'a pas d'importance. De nos jours, en particulier parmi les utilisateurs d'appareils mobiles impatients, il est important de réduire les performances de votre application, même en millisecondes, et Node.js peut le faire, tout en offrant un mécanisme complet de Turing pour la reprogrammer.

La profondeur compte

Les amateurs de PHP aiment s'accrocher aux grandes bibliothèques de code qui ont été construites pour les plates-formes dominantes comme WordPress ou Drupal. Ils ont de bonnes raisons d'être fiers, mais leurs avantages s'évaporent à mesure que Node.js se rattrape.

Le gestionnaire de packages Node.js, NPM, facilite encore plus le partage de code, et les référentiels publics ciblant Node.js se développent rapidement. Alors que la foule PHP peut mener en ce moment, l'avenir peut favoriser Node.js. De plus, les titulaires se révèlent souvent fragiles face à l'évolution des tendances. Chaque tentative de modernisation d'une plate-forme enracinée comme Drupal avec une nouvelle version signifie que de nombreux autres développeurs peuvent laisser leurs yeux se diriger vers les nouvelles plates-formes plus agiles construites autour de Node.js.

Angular est frais

Il n'est pas tout à fait juste de comparer le «A» de «MEAN» avec quoi que ce soit dans la pile LAMP car LAMP n'inclut pas d'analogue. Si vous voulez faire quelque chose du côté client, vous êtes seul. Bien sûr, il existe de nombreux bons frameworks basés sur PHP qui fonctionnent avec MySQL, mais chacun est un peu différent et évolue dans sa propre direction. WordPress, Joomla et Drupal, par exemple, proposent des stratégies différentes et il est difficile de basculer entre elles, sans parler de porter le code de l'une à l'autre. Onction d'un cadre client ajoute cohérence et stabilité.

Cela aide également qu'Angular ait été conçu par des personnes ayant 20 ans d'expérience dans la création d'applications Web. Ils savaient assez bien pour laisser le travail de conception au HTML et au CSS. Ils ont également compris comment ajouter un peu de JavaScript pour scanner le HTML. Les concepteurs d'Angular ont examiné ce que les humains font bien, puis ont adapté le JavaScript pour soutenir les humains. Le système de modèles et les couches logiques sont nettement plus propres que ce que nous avons vu auparavant, en partie parce que l'équipe a trouvé des moyens plus simples d'exploiter la puissance locale de JavaScript pour deviner ce que vous faites.

Mélanger et assortir

Bien sûr, si vous êtes vraiment pointilleux, il n'y a aucune raison pour que vous ne puissiez pas mélanger un peu. De nombreux développeurs utilisent MongoDB avec Apache et PHP, et d'autres préfèrent utiliser MySQL avec Node.js. Angular fonctionne très bien avec n'importe quel serveur, même un serveur exécutant PHP pour fournir des données depuis MySQL. Vous n'êtes pas obligé d'être esclave des acronymes.