Ballerina : un langage qui accélère le développement de microservices
La montée en puissance des microservices pousse les développeurs à considérer un outillage alternatif qui permet de prendre en compte nativement les caractéristiques de ces nouvelles architectures.
Les entreprises s'éloignent de plus en plus des applications monolithiques pour se tourner vers les microservices. De là, elles se frottent à une diversité des options de déploiement induite par cette nouvelle forme d’architecture – le serverless en est un exemple. Ce passage à de nouveaux modèles de déploiement pourrait également les inciter à considérer un nouveau langage : Ballerina.
Le langage Ballerina offre des fonctionnalités qui simplifient le processus de build et garantissent le support des microservices. Il s'agit d'un langage open source, natif pour le cloud, spécifiquement optimisé pour ces interactions structurées.
En intégrant très tôt les concepts fondamentaux de l'intégration de systèmes distribués, Ballerina propose un environnement sécurisé pour se mettre aux microservices tout en mettant l'accent sur les transactions distribuées, un messaging fiable, le traitement des flux et les workflows. Ballerina permet de se concentrer sur une logique métier de haut niveau, car les fonctionnalités du langage prennent en charge la complexité de la configuration.
L'importance de l'intégration
En général, les langages de programmation - comme Java, Python et autres - datent d'avant les containers, et même des services cloud et sont donc déconnectés nativement des microservices. Par conséquent, ces environnements nécessitent des API externes pour gérer différents langages et connecter les programmes. C’est pour cela que les développeurs créent régulièrement des pilotes ou des plugins « from scratch ». Ils doivent notamment se battre avec des méthodes complexes de programmation, comme les fonctions callback en JavaScript.
Lors de ces projets, les développeurs doivent donc configurer ces flux de messages. Cela s'ajoute également à leurs tâches principales qui consistent à découvrir les dépendances pour le build, déboguer, écrire du code standard et s'assurer que la logique est en place pour gérer le trafic entrant.
Les développeurs sont également confrontés à de nombreuses difficultés lorsqu'ils passent à un modèle natif dans le cloud. Ils utilisent généralement plusieurs langages spécifiques pour le code natif et doivent ensuite se tourner vers des langages plus généralistes, comme JavaScript ou Java.
Ballerina offre une expérience plus simple pour les microservices, le développement d'API, les scripts réseau et le développement d’application composite. Il associe l'agilité d'un langage de programmation avec la syntaxe des diagrammes de séquence d'intégration. Par conséquent, les développeurs déploient chaque programme Ballerina sous la forme d'un diagramme de séquence avec ses flux et ses endpoints, y compris les appels synchrones et asynchrones.
Concurrence dans les microservices
Dans le monde du développement, le terme concurrence met l'accent sur le modèle de programmation parallèle entre manager / worker. Des opérations concurrentes augmentent considérablement le nombre de transactions par seconde sur un hardware de base.
Dans le langage Ballerina, chaque instruction en concurrence a un worker comme élément d'exécution de base. Chacune d’entre elles comprend un ou plusieurs de ces workers. Dans ce modèle de simultanéité, certains workers se voient attribuer les tâches sortantes, tandis que d'autres s'occupent des opérations entrantes, éliminant ainsi tout blocage de thread.
Caractéristiques de programmation de la ballerine
- Support de container intégré : ceux qui utilisent Ballerina peuvent annoter le code, créer automatiquement un Dockerfile, le packager dans une image et l'exécuter comme un container. L'automatisation du compilateur réduit le temps nécessaire pour construire et tester les itérations.
- Fonctionnalités serverless : Les développeurs peuvent transformer n'importe quelle fonction du langage Ballerina en un endpoint, ce qui fait de chaque fonction un microservice autonome. Ballerina est supporté par de nombreuses plateformes serverless.
- Visibilité : Les développeurs peuvent exprimer la structure et la logique d'un programme graphiquement - des diagrammes de séquence pour représenter les endpoints et les actions. Configurer les clients finaux pour interpréter et afficher les données de visualisation.
- Sécurité : Ballerina offre une protection contre les injections SQL, la manipulation de path, la manipulation de fichiers par exemple. La fonctionnalité de vérification, Testerina, indique par exemple aux développeurs si des paramètres sensibles en matière de sécurité utilisent du code corrompu.
- 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 et de vérifier la viabilité du code source avec des prototypes de programmes réels.
Pour mieux supporter de multiples exécutions en parallèles, Ballerina inclut des commandes fork/joint. Cette capacité permet de diviser un job en plusieurs exécutions parallèles pour réunir ensuite toutes les réponses en une seule exécution. Les développeurs peuvent définir facilement des workers et leurs actions au sein d'une instruction fork/join.
Dans l'ensemble, le degré élevé d'intégration de Ballerina permet aux développeurs de se concentrer sur la façon de créer la logique métier plutôt que sur le debugging de détails techniques de moindre importance.