Difference between revisions of "VT2020-Ballerina-Fiche"

From air
Jump to navigation Jump to search
Line 1: Line 1:
 
'''Ballerina''' est un langage de programmation natif pour le cloud, proposant nativement des solutions d'intégration pour les micro-services.
 
'''Ballerina''' est un langage de programmation natif pour le cloud, proposant nativement des solutions d'intégration pour les micro-services.
   
[[File:Ballerina Logo.png|thumb|Logo du Langage Ballerina]]
+
[[File:Ballerina Logo.png|thumb|Logo du Langage Ballerina (Source : Site officiel Ballerina)]]
   
 
== Abstract ==
 
== 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.
+
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 ==
 
== Présentation ==
[[File:WSO2 Software Logo.png|thumb|right|Logo de WSO2]]
+
[[File:WSO2 Software Logo.png|thumb|right|Logo de WSO2 (Source : MediaWiki Commons)]]
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.
+
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. Ballerina contrairement aux langages existants tels que Java ou Javascript 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 : <ref name="lemagit">[https://www.lemagit.fr/conseil/Ballerina-un-langage-qui-accelere-le-developpement-de-microservices Le Mag IT]</ref>
 
Mais également : <ref name="lemagit">[https://www.lemagit.fr/conseil/Ballerina-un-langage-qui-accelere-le-developpement-de-microservices Le Mag IT]</ref>
* Support de container : il est facile de créer automatiquement un Dockerfile, le packager dans une image et l'exécuter comme un container;
+
* Le support de container : il est facile de créer automatiquement un Dockerfile, le packager dans une image et l'exécuter comme un container. Ce qui rend le déploiement dans le Cloud plus simple. Il est également compatible avec Kubernetes;
 
* 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;
 
* 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;
 
* Sécurité : Ballerina possède des outils pour se prémunir contre les injections SQL, et d'autres attaques;
Line 16: Line 16:
   
 
== Rappels ==
 
== Rappels ==
[[File:Architecture microservices.jpg|thumb|right|Architecture Monolithique vs. Micro-services]]
+
[[File:Architecture microservices.jpg|thumb|right|Architecture Monolithique vs. Micro-services (Source : Ausy.fr)]]
 
=== Micro-services ===
 
=== 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 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 '''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 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.
+
* 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 ===
 
=== 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.
+
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.
 
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 ==
 
== Pourquoi Ballerina répond à un vrai problème ==
  +
[[File:Everything is an endpoint.PNG|thumb|right|Plus les applications se décomposent, plus il y a de endpoints à connecter (Source : Paul Fremantle, CTO WSO2)]]
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.
+
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. Elles doivent s'adapter et être capable de changer leur échelle en toute flexibilité.
  +
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. L''''intégration en devient donc plus complexe''', ainsi qu'une '''é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 :
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. <ref> [https://hackernoon.com/first-glimpse-of-ballerina-language-language-of-integration-q31x31j Hackernoon, Ballerina Language of Integration]</ref>
 
  +
* Différents protocoles de communications;
  +
* Différents format de données en réponse des APIs;
  +
* Différentes plateformes,
  +
* etc.
 
Si bien, qu'en général c'est une étape difficile pour les développeurs. Des solutions telles que la méthode ESB (Enterprise Service Bus) 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 concret, 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. <ref> [https://hackernoon.com/first-glimpse-of-ballerina-language-language-of-integration-q31x31j Hackernoon, Ballerina Language of Integration]</ref>
  +
  +
== Marché ==
  +
Ballerina est un langage de programmation récent et est le premier à placer la problématique de l'intégration de micro-services et du déploiement cloud au cœur de sa conception. Il n'a pas vraiment de concurrent en terme de langage de programmation dans ce domaine.
  +
  +
Cependant, il existe en dehors Ballerina d'autres méthodes d'intégration tels que la méthode ESB. Mais elles ne sont pas vraiment comparables car ESB est une architecture à mettre en place sur un projet et l'intégration est encore à la charge des développeurs. Alors que Ballerina, simplifie le processus en intégrant les différents concept : Il n'y a plus qu'à les utiliser.
  +
  +
Ballerina ne semble pas encore très utilisé pour de gros projets, mais l'ensemble des ressources que j'ai pu consulter sont très optimistes sur son intérêt et sur son évolution. On peut donc imaginer dans quelques années une augmentation de son utilisation. Il y a, à l'heure actuelle plus de 200 projets ayant pour langage principal Ballerina sur Github. <ref>[https://github.com/search?l=&p=1&q=language%3ABallerina&ref=advsearch&type=Repositories Github]</ref>
   
 
== Installation et Utilisation ==
 
== Installation et Utilisation ==

Revision as of 22:47, 22 November 2020

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

Logo du Langage Ballerina (Source : Site officiel Ballerina)

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

Logo de WSO2 (Source : MediaWiki Commons)

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. Ballerina contrairement aux langages existants tels que Java ou Javascript 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 : <ref name="lemagit">Le Mag IT</ref>

  • Le support de container : il est facile de créer automatiquement un Dockerfile, le packager dans une image et l'exécuter comme un container. Ce qui rend le déploiement dans le Cloud plus simple. Il est également compatible avec Kubernetes;
  • 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.

Rappels

Architecture Monolithique vs. Micro-services (Source : Ausy.fr)

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

Plus les applications se décomposent, plus il y a de endpoints à connecter (Source : Paul Fremantle, CTO WSO2)

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. Elles doivent s'adapter et être capable de changer leur échelle en toute flexibilité. 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. L'intégration en devient donc plus complexe, ainsi qu'une é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;
  • Différentes plateformes,
  • etc.

Si bien, qu'en général c'est une étape difficile pour les développeurs. Des solutions telles que la méthode ESB (Enterprise Service Bus) 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 concret, 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. <ref> Hackernoon, Ballerina Language of Integration</ref>

Marché

Ballerina est un langage de programmation récent et est le premier à placer la problématique de l'intégration de micro-services et du déploiement cloud au cœur de sa conception. Il n'a pas vraiment de concurrent en terme de langage de programmation dans ce domaine.

Cependant, il existe en dehors Ballerina d'autres méthodes d'intégration tels que la méthode ESB. Mais elles ne sont pas vraiment comparables car ESB est une architecture à mettre en place sur un projet et l'intégration est encore à la charge des développeurs. Alors que Ballerina, simplifie le processus en intégrant les différents concept : Il n'y a plus qu'à les utiliser.

Ballerina ne semble pas encore très utilisé pour de gros projets, mais l'ensemble des ressources que j'ai pu consulter sont très optimistes sur son intérêt et sur son évolution. On peut donc imaginer dans quelques années une augmentation de son utilisation. Il y a, à l'heure actuelle plus de 200 projets ayant pour langage principal Ballerina sur Github. <ref>Github</ref>

Installation et Utilisation

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

Bibliographie et Références

<references />

Veille Technologique 2020