MEAN : le futur de LAMP ?

Le développement web a régulièrement évolué depuis quelques années. Les standards évoluent et une nouvelle révolution est en marche.

Les années 95-2000 : LAMP

LAMP réunit plusieurs technologies nées dans les années 95 :

  • Linux qui fait référence au système d’exploitation GNU/Linux
  • Apache : le serveur web
  • MySQL : la base de données relationnelle
  • PHP : le langage de programmation.

Ces 4 outils étaient à l’époque une petite révolution dans le monde du web.

Grâce à des outils gratuits (et libres), tout le monde pouvait créer une site web dynamique. C’est à dire un site dont le code HTML était généré par un script et dont les données étaient issu d’une base de données.

A cette époque, les machines virtuelles n’existaient pas encore. Du moins, pas comme on les connait aujourd’hui.

On était déjà contents d’avoir un environnement de programmation relativement rapide et facile à appréhender.

Côté client (ce qui est vu par le navigateur web), on faisait en sorte de structurer le code HTML, utiliser à fond le CSS et éviter au maximum le javascript qui était alors un langage très lent à l’exécution. En plus, il fallait faire attention à la compatibilité avec Internet Explorer, qui prenait certaines libertés.

MEAN : une approche nouvelle

Fin 2008, le web a connu un tournant majeur avec l’arrivée du navigateur web Chrome de Google et en particulier son moteur Javascript V8 qui était déjà relativement performant.

En quelques années, le Javascript est passé d’un langage très lent à l’un des plus rapides au monde. Une véritable révolution qui allait changer les choses.

En parallèle, les différents navigateurs se sont standardisés. Internet Explorer a bien évolué – même s’il est devenu obsolète avec l’arrivée de son successeur Edge.

Tous les navigateurs web ont commencé à avoir des performances très correctes, y compris les navigateurs mobiles.

Le Javascript s’est standardisé (ECMAScript / TypeScript / AtScript / Babel / Dart) et celui qui se distingue est TypeScript. Notamment grâce à son support par Microsoft et son intégration dans Angular 2 (et autres).

Tout ceci est représenté par l’ensemble MEAN (MongoDB Express Angular Node).

Node

Node est une plateforme logicielle utilisant le moteur Javascript V8 de Google. En gros, grâce à node, on peut exécuter du Javascript. Et, cerise sur le gâteau, Node intègre les capacités d’un serveur web rudimentaire.

L’avantage est qu’un serveur web très performant et utilisant peut de ressources peut être monté grâce à quelques lignes de code.

Un atout idéal à l’ère de la scalabilité, des technologies IoT et autres solutions utilisant des ressources minimales.

Angular

Angular : une première révolution apportée par le Javascript.

Dans sa version 1, Angular propose une architecture MVC (modèle vue contrôleur) côté client. En clair, le serveur web ne charge qu’une fois du HTML. Puis c’est le Javascript qui modifie la page pour charger à la volée le contenu. La charge côté serveur est donc amoindrie ce qui améliore les performances globales en laissant le navigateur faire le job.

En gros, Angular 1 a apporté les premières applications web clientes qui se détachent du serveur.

Dans sa version 2 (en version développement), qui est une réécriture complète en se basant sur l’expérience de Angular 1, on va encore plus loin.

Déjà, la standardisation est à l’ordre du jour avec l’utilisation de TypeScript. TypeScript permet d’utiliser un javascript « avancé » qui est compilé pour être compatible avec la majorité des navigateurs.

Egalement, l’approche MVC devient une approche MV, orientée composants. (à l’instar des Web Components)

Plus besoin de JQLite (JQuery allégé) : les navigateurs modernes intègrent la majorité des concepts apportés par cette version allégée de JQuery.

Pour la version 2, il va falloir attendre un peu car elle est encore en version Alpha et risque de passer en Beta uniquement début 2016. Mais c’est à surveiller quand même. En attendant, Angular 1 fait bien le job.

Ce qu’il faut retenir de Angular, c’est que le navigateur devient une puissance de calcul au coeur de la plateforme web tout en ayant des capacités de travail hors ligne et un détachement de l’aspect serveur, qui devient adapté à de multiples usages (services web).

MongoDB et le NoSQL

Le NoSQL (Not only SQL) est une approche récente qui veut que les bases de données relationnelles ne soient pas forcément indispensables pour le web et le Big Data. D’autant que l’idée est généralement de traiter de grandes quantités de données.

Le SQL était assez lourd à appréhender. Le NoSQL est certes moins structuré, mais bien plus performant sur la recherche dans de gros volumes de données et surtout plus souple.

C’est idéal pour des recherches utilisant la géolocalisation par exemple. Et bien d’autres usages que l’on retrouve dans les services web justement.

MongoDB a une force : V8, le fameux moteur javascript de Google, qui lui permet d’être performant tout en utilisant un langage connu de tous. Non seulement les données extraites sont directement exploitables en Javascript sans transformation pour dire. MongoDB stocke les données en BSON (Binary JSON). Ces données sont facilement transformable en JSON (JavaScript Object Notation) par nature. Le JSON est efficacement compressé grâce à l’algorithme GZip utilisé par les serveurs web. Et, bien entendu, les données JSON peuvent être directement exploitées par le Javascript côté client, à savoir par le navigateur web.

De plus, afin d’obtenir de meilleures performances, certaines fonctions Javascript peuvent être pré-compilées directement dans MongoDB.

Express

Node est puissant mais limité en termes de fonctionnalités.

Express est un framework qui apporte un ensemble d’outils permettant de concevoir une solution web structurée exploitant pleinement les performances et la souplesse de Node.

Seul, le framework Express reste relativement simpliste, ce qui peut être problématique lorsque l’on recherche une solution professionnelle efficace.

Pour cela, le framework LoopBack, construit au dessus du framework Express, permet d’apporter des services complémentaires. Il intègre aisément les API REST, la sécurité et plein d’autres fonctionnalités. Avec un support professionnel payant de qualité.

D’ailleurs, la société à l’origine de LoopBack a récemment été rachetée par IBM, ce qui est une bonne garantie pour l’avenir.

Faut-il abandonner tout le reste ?

si vous utilisez un bon framework (Ruby on Rails, Django, Symfony, Play) et que vous êtes content, ne changez pas tout. N’y perdez pas en productivité.

Pour ma part, j’utilise ces technologies sur des projets de taille modeste ou pour des usages ciblés. Je reste globalement fidèle à Ruby on Rails (RoR) qui reste à ce jour plus productif et plus fiable sur les gros projets. Mais la solution MEAN atténue chaque jour cette limite.

Ils m’arrivent également d’en faire un usage ponctuel, là où RoR a ses limites. Par exemple sur tout ce qui est temps réel via les WebSockets. Ou bien pour les sites statiques, où les enjeux sont moindres et où on n’a pas besoin de sortir l’artillerie lourde.

Ceci étant, pour un débutant, le gros avantage est qu’il peut tout faire avec un seul langage de programmation. Un atout non négligeable.

Les technologies autour de Node sont de plus en plus populaires et son adoption récente par la plateforme de blog WordPress au détriment du PHP en est un indicateur significatif.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s