Désambiguïsation de Jamstack et MACH

illustrations illustrations illustrations illustrations illustrations illustrations illustrations

Publié le 4 août 2022 par Andrew Owen (4 minutes)

post-thumb

Au début de l’année, j’ai donné une conférence éclair sur l’API-first. Depuis, j’ai l’intention d’écrire un article sur le sujet, mais je voulais d’abord préparer le terrain. La semaine dernière, j’ai abordé les architectures pilotées par les événements. C’était beaucoup à digérer. L’article d’aujourd’hui est un aperçu rapide de ce que les noms cryptés de Jamstack et MACH représentent réellement.

Jamstack

Le J de Jamstack signifie JavaScript. Si vous essayez d’exécuter des applications modernes sur un ordinateur de 12 ans, vous constaterez que la plupart d’entre elles fonctionnent parfaitement. L’exception est le navigateur. Même avec une connexion filaire, de nombreuses pages web se chargent au ralenti. La raison en est double. Ces pages web sont devenues des applications à part entière, et elles sont écrites dans un langage interprété (JavaScript) qui nécessite beaucoup de puissance de traitement pour fonctionner à une vitesse acceptable.

Les programmeurs de langages classiques détestent JavaScript parce qu’il est basé sur des prototypes, dynamique et faiblement typé (entre autres griefs). C’est également le langage de programmation le plus demandé en 2022, selon plusieurs enquêtes indépendantes. JSLint peut vous aider à écrire un meilleur JavaScript et JSMin peut minifier votre code avant de le déployer. Ces outils ont été créés par Douglas Crockford. Je recommande ses livres “JavaScript: The Good Parts” aux programmeurs qui découvrent JavaScript pour la première fois, et “How JavaScript Works” aux programmeurs JavaScript expérimentés.

Le A de Jamstack signifie API, ce qui est l’abréviation de web API. Il existe une grande variété d’API web, mais actuellement, les API RESTful semblent être les plus populaires. REST est un acronyme pour REpresentational State Transfer, ce qui signifie concrètement l’utilisation de méthodes HTTP pour transmettre des paramètres au format JSON (JavaScript Object Notation). Sans surprise, JSON a également été créé par Crockford.

Le M de Jamstack signifie Markup (balisage): informations incluses dans un document électronique et distinctes de son contenu. Traditionnellement, le balisage signifie HTML et XML. Mais aujourd’hui, il est tout aussi probable que l’on parle de YAML (Yet Another Markup Language) ou de Markdown. Ces langages sont beaucoup plus simples, et donc plus faciles à lire pour les humains, que les autres langages de balisage.

Le Markdown est de plus en plus utilisé pour la documentation des logiciels, mais vous le trouverez également dans les générateurs de sites statiques (SSG) tels que Hugo et Gatsby. Les SSG combinent Markdown et des modèles pour faciliter la création d’un site web avec un minimum d’efforts. Ils s’intègrent à des fournisseurs de systèmes de gestion de contenu (CMS) sans tête tels que Forestry et à des solutions de déploiement automatisé telles que Netlify qui se connectent à des référentiels de sources dans le nuage tels que GitHub.

Ce sont les technologies que j’ai utilisées pour créer ce site web. Vous pouvez en prendre connaissance dans cet article. Cela couvre l’aspect présentation web. Mais ce n’est qu’une composante d’une solution logicielle. L’ancienne méthode consistait à créer un logiciel monolithique que les clients hébergeaient sur leur propre matériel, avec des intervalles de plusieurs mois, voire de plusieurs années, entre les mises à jour. À certains égards, la nouvelle façon de faire est simplement un retour à l’informatique distribuée.

L’alliance MACH

Nommée d’après l’acronyme qu’elle a créé, la MACH Alliance existe pour promouvoir une façon particulière de faire les choses. MACH signifie Microservices, API-first, Cloud-native, Headless. J’ai abordé les microservices dans l’article de la semaine dernière sur les architectures pilotées par les événements (qui vont un peu plus loin que MACH). Comme indiqué dans l’introduction, je traiterai la semaine prochaine de l’API-first, mais les API en question sont typiquement celles que j’ai décrites en relation avec Jamstack.

Cloud-native signifie que les solutions logicielles sont hébergées par des fournisseurs de cloud tels qu’Amazon, Google et Microsoft plutôt que sur des serveurs sur site. Headless signifie que le contenu est séparé de la présentation.

Une note sur Node.js

Lorsque j’ai publié cet article, je n’ai pas abordé la question des moteurs JavaScript. Bien que JavaScript soit techniquement un langage interprété, dans la pratique, les moteurs JavaScript modernes tels que le V8 Engine de Google utilisent la compilation juste à temps (JIT). Ce développement a conduit Ryan Dahl à créer Node.js pour exécuter du code JavaScript en dehors du navigateur (pour les outils de ligne de commande et les scripts côté serveur). Node.js possède une architecture pilotée par les événements (que vous pouvez découvrir dans l’article en lien). Isaac Schlueter a créé un gestionnaire de paquets (npm). Les applications Node.js sont souvent associées à des bases de données qui prennent en charge JSON, telles que MongoDB. Je m’en tiendrai là pour l’instant, mais il se peut que je revienne plus en détail sur Node.js dans un prochain article.

Image: Original par Benson Kua.