Les développeurs disposent déjà de nombreuses API et outils pour mette en place des architectures « Micro Services », des mini-fonctions réparties dans une structure distribuée. Ils peuvent maintenant exploiter le premier langage, Jolie, conçu spécifiquement pour cette forme d’organisation. C’est un début, encore « brut de fonderie », mais très intéressant.

Une initiative italienne

Le projet « Jolie » a été initié en 2006 à l’Université de Bologne, par Fabrizio Montesi, rejoint ensuite par Claudio Guidi, qui s’est inspiré des techniques de formalisation dans un environnement parallèle, ce que l’on appelle les « algèbres de processus », tels que CSP, CCS, ACP, PEPA, fusion calculus, etc, qui tendent tous à donner une représentation formelle, donc mathématique, aux architectures distribuées de services.

En fait, Jolie est un SOL (Service Oriented Language), un langage dont la finalité est non pas le code lui-même, qui peut être du Java, du JavaScript (et il y en aura d’autres), mais le service. L’unité de base du langage ne sera donc pas un bloc, une classe ou une fonction, mais un service.

On peut donc le considérer comme une couche posée sur le codage des micro-services. Mais il est lui-même un langage.

Une excellente idée

Ne vous méprenez-pas. Jolie n’est pas en son état actuel, un produit fini. C’est encore un projet de recherche, qui a besoin de soutien et d’extensions. Mais nous croyons que l’idée des 2 italiens est très bonne, parce qu’elle permet de donner un cadre formel non pas au codage, qui a tout ce qu’il faut pour cela, mais à l’organisation des micro-services. A leur architecture.

Avec Jolie, on dispose d’une sémantique qui permet de décrire une organisation distribuée, une sorte de super workflow, qui permet de coder ce qui est normalement du ressort d’un langage de modélisation, comme BPEL. C’est vraiment un SOL…

Jolie part d’une bibliothèque de micro-services développés en Java, dont il va organiser les communications et les interactions.

Il est d’abord totalement agnostique vis-à-vis des protocoles de communication et vous pourrez utiliser aussi bien SOAP si vous travaillez en XML, REST si vous êtes plutôt HTTP, voire même SODEP (Simple Operation Data Exchange), qui est un protocole spécifique Jolie.

Vous pourrez ensuite déployer vos services aussi bien sur une même machine, sous forme d’une application monolithique que sur les nœuds d’un cluster en mode distribué.

Le cœur de Jolie (il fallait vraiment être italien pour avoir choisi ce nom…) se trouve dans les techniques programmables d’association.

La finalité de Jolie est de formaliser par un langage l’organisation et le déploiement des micro-services. Il est en cela un véritable SOL (Service Oriented Language).

On pourra par exemple formaliser l’orchestration des services, leur enchaînement dans une application, un peu comme le fait BPEL en XML, sauf que là on est dans un véritable langage et que l’on n’a pas à fabriquer des fichiers XML d’orchestration, même si on peut générer les dits fichiers.

On pourra aussi agréger les services, qui seront ensuite exposés comme s’il n’y en avait qu’un. On pourra encore les rediriger, de manière à cacher sous une identification logique, les emplacements physiques des services, une sorte de proxy de services et enfin, on pourra les encapsuler (embedding) dans une application pour qu’ils puissent communiquer très rapidement, comme le ferait un serveur d’application.

Jolie présente encore d’autres avantages, une très bonne gestion des exceptions, adaptée au monde distribué, mais aussi le moyen de développer des applications Web très facilement en découplant totalement le traitement métier de l’interface utilisateur, le lien se faisant par un petit service Jolie, dénommé Leonardo évidemment.

Apprentissage

Il faut à notre avis s’intéresser à l’initiative de Montesi et Guidi, au moins pour des raisons pédagogiques. Histoire de mieux comprendre comment doivent fonctionner des systèmes parallèles et distribués. Jolie peut constituer une très bonne étape d’apprentissage, de compréhension, qui nous donnera de l’expérience, dans un domaine, celui des MSA, qui va en demander beaucoup.

Quant à faire de Jolie, une plate-forme de production, c’est encore un peu tôt.

Si vous voulez approfondir le langage, une documentation complète est disponible ici.