VT2020-Ballerina-Fiche

Ballerina est un langage de programmation natif pour le cloud, proposant nativement des solutions d'intégration pour les micro-services.



Abstract
Ballerina is a new programming language that aims to ease the Integration phase of software development for developers. Indeed as application development evolves, it switches from a monolithic architecture to a serverless, micro-services-oriented one. This means that one program will have to communicate with many others in order to work and it can be extremely difficult, as each program can have its own specificities (protocol, ...). Ballerina thanks to its "integration first" philosophy can help answer this issue.

Présentation
Ballerina est un langage open-source créé par WSO2 en 2017. WSO2 est une entreprise spécialisée dans la création de solutions open-source pour l'intégration de micro-services. Le langage contrairement aux existants qui sont plus anciens, a placé au cœur de sa philosophie que les applications vont créer et communiquer avec des APIs. De ce fait, il va intégrer nativement des concepts propres aux micro-services tels que les endpoints, HTTP, les services, les ressources etc. Mais également :
 * Support de container : il est facile de créer automatiquement un Dockerfile, le packager dans une image et l'exécuter comme un container;
 * Fonctionnalités serverless : N'importe quelle fonction d'un programme Ballerina peut être transformé en endpoint, ainsi chaque fonction peut être vue comme un micro-service indépendant;
 * Sécurité : Ballerina possède des outils pour se prémunir contre les injections SQL, et d'autres attaques;
 * Documentation et tests : Docerina génère la documentation au format HTML, bien qu'elle puisse s'étendre à d'autres formats. Le framework de test automatisé de Testerina permet d'écrire des tests unitaires.

Micro-services
Une architecture dite en "micro-services" est une architecture logicielle que l'on peut opposer à une architecture dite "monolithique". Le principe réside en le fait de découper un programme en plusieurs petits blocs autonomes et indépendants appelés "services". Ce découpage a plusieurs avantages et notamment :
 * Une plus grande flexibilité comme chaque bloc est indépendant;
 * Une plus grande tolérance aux fautes, en effet si un service cesse de fonctionner le reste de l'application fonctionnera;
 * Une réduction de la complexité, chaque service servant à une tâche en particulier nous n'avons pas besoin d'y ajouter la complexité du reste de l'application.

Intégration
L'intégration est le fait de faire communiquer plusieurs micro-services entre eux. En effet contrairement à une architecture monolithique où tout est "interne" au programme, dans une architecture micro-services nous allons devoir communiquer avec des services externes. Il faut donc prévoir au préalable quel protocole utiliser et comment formater une requête. Mais également comment interpréter et formater le résultat.

Pourquoi Ballerina répond à un vrai problème
Au fur et à mesure de l'évolution de l'informatique, on peut remarquer une tendance des applications à se "désagréger" en un nombre de plus en plus conséquent de micro-services. Ce changement répond à une évolution de la demande à laquelle les applications doivent répondre et donc de leur échelle. Toutefois ce découpage amène plusieurs problématiques, en effet plus le découpage est "fin", plus il y a d'éléments à faire communiquer ensembles. De ce fait l'intégration devient étape critique du développement applicatif.

De plus, en fonction des services que l'on doit faire communiquer ensembles, on peut se heurter à différents problèmes : Différents protocoles de communications, différents format de données en réponse des APIs, etc. Ce qui fait qu'en général c'est une étape difficile pour les développeurs. Des solutions telles qu'ESB existent pour tenter de palier ce problème mais elles ne sont pas forcément simples à mettre en place. Ballerina au contraire se veut être une solution user-friendly au problème en proposant un langage simple et intégrant différents protocoles de communications et formats de réponse nativement. Par exemple, il supporte HTTP, HTTPS, HTTP2, Websockets, GRPC, TCP, UDP, JSON, XML.

Installation et Utilisation

 * Une démonstration du langage et un guide d'installation du langage sont disponibles ici.

Bibliographie et Références

 * Dzone, Why Ballerina is different from other programming languages
 * Hackernoon, Rethinking Programming: From Code to Cloud
 * Nordic Apic, Review of Ballerina
 * Official website

Veille Technologique 2020

 * Année : VT2020
 * Sujet : Ballerina
 * Slides : [[Media:VT2020-Ballerina-Presentation.pdf|Slides]]
 * Auteurs : User:Romain.Pasdeloup