De IT-wereld rondom integratie is enorm aan het veranderen. Soap, XML, API’s, microservices, REST/SJON… Om dit te ondersteunen introduceert WSO2 Ballerina. Maar wat is de potentie van deze nieuwe programmeertaal voor algemeen gebruik?
Toen ik destijds als programmeur aan de slag ging, was dat met Cobol. We codeerden een programma op basis van een specificatie, veelal voorzien van een (flow) diagram. Voor ingewikkelde programma’s stelden we dat flow diagram ook zelf op. Sindsdien is ons vakgebied ingrijpend veranderd. Programmeurs werden ontwikkelaars, die niet langer louter programmacode schreven. Geholpen door steeds meer avanceerdere ontwikkelhulpmiddelen zoals IDE’s en Case tools ontwierpen ze ook gegevensmodellen, databases, bouwden schermdefinities en -functionaliteit, naast het bouwen van programmatuur zoals voorheen.
Zelf ben ik inmiddels een zogenaamde middleware ontwikkelaar en bouw ik services waarmee meer of minder complexe orchestratie- en integratieprocessen worden gerealiseerd. Kenmerk daarbij is dat deze services geschikt zijn om in een zeer heterogeen IT landschap gebruikt te worden om delen van dat landschap te verbinden. Hierbij maak ik gebruik van specifieke middleware software zoals de SOA Suite en OSB van Oracle, ondersteund door zijn eigen JDeveloper IDE. En, in een open source omgeving, bijvoorbeeld van WSO2’s Enterprise Integrator en API Manager, eveneens ondersteund met een eigen IDE Studio Developer. Belangrijk bij de tools van deze en andere leveranciers is, dat naast het schrijven van code, er steeds meer sprake is van configuratie en declaratie (low-code of no-code).
En nu introduceert WSO2 Ballerina. Het is een nieuwe programmeertaal voor algemeen gebruik, maar wel specifiek toegespitst op en geoptimaliseerd voor orchestratie- en integratiedoeleinden. Deze taal kent zowel een tekstuele als grafische ontwikkelmogelijkheid. Grafische ontwikkeling gebeurt met het maken van flow diagrammen. En daarmee lijkt op een opmerkelijke manier de cirkel weer rond. Nu rijst direct de vraag waarom WSO2 Ballerina ontwikkelt. Wat voegt Ballerina toe aan hun huidige, reeds krachtige ontwikkelstack?
De IT-wereld rondom integratie is enorm aan het veranderen. Met Soap en XML is een standaardisatie in gang gezet waarmee onderdelen (services) binnen een divers IT-landschap gekoppeld kunnen worden. De opkomst van API’s en microservices, in combinatie met REST/JSON, heeft geleid tot een enorme groei aan SaaS services. Dat maakt het voor een organisatie mogelijk, aangevuld met eigen, zelf ontwikkelde services, business processen samen te stellen die de organisatie optimaal ondersteunen. Op die manier zouden we snel business processen kunnen samenstellen en opnieuw samenstellen; op een werkelijk ‘agile’ manier kunnen inspelen op veranderingen.
WSO2 wil dat optimaal gaan ondersteunen met Ballerina. De reden om niet zozeer de ESB te gebruiken ligt in het feit dat we momenteel met microservices en containerisatie naar een serverless architectuur gaan. Een volledige ESB stack is uiteraard prima in een container te deployen, maar met microservices ontstaat wellicht de behoefte containers per service maken en dan is het niet wenselijk om daar een zware onderliggende software stack in implementeren. Daarnaast willen we juist bij het ‘agile’ ontwikkelen software/services meer en meer volgens CI/CD principes ontwikkelen. Een dergelijke werkwijze is in de visie van WSO2 veel beter te ondersteunen met code dan met configuratie.
Met Ballerina wil WSO2 een eigen taal ontwikkelen, die het beste van bekende, veel gebruikte talen als Java, NodeJS en Python combineert. De eisen die aan de nieuwe taal gesteld worden, zijn onder meer een goede ondersteuning van (een combinatie) van JSON, XML en SQL gegevensstructuren. En daarnaast een optimale ondersteuning van asynchrone processen met daarbij een goede ingebouwde fout- en retry-afhandeling. Ballerina heeft daarom de volgende kenmerken:
- Het is een event-driven, parallelle programmeertaal, bedoeld voor netwerk applicaties en asynchrone verwerking;
- Die een veelvoud aan zgn. Type Systems ondersteunt
- Een uitgebreide set connectors kent, met daarin uiteraard de gebruikelijke ondersteuning voor failover, load balancing, circuit braking, time out etc.;
- Transacties ondersteunt, zoals bijvoorbeeld XA voor databases
- Beveiliging verzorgt, zoals autorisatie, authenticatie enz.;
- Op een grafische zowel als tekstuele manier te gebruiken is, waarbij wijzigingen gedaan in beide modi volledig uitwisselbaar zijn;
- Services oplevert die eenvoudig in een lichtgewicht container gedeployd kunnen worden;
- Waarbij de container een service bevat met alles wat de service nodig heeft, maar ook niet meer dan dat.
Ballerina zal gebruikt worden om de API Manager v3 Gateway te bouwen. En Ballerina zal binnen Enterprise Integrator 7 ESB en DSS gaan vervangen. WSO2 heeft beloofd in een migratietool gaan voorzien.
Het is duidelijk dat WSO2 een enorme koerswijziging inzet. Ballerina kent momenteel een unieke opzet vergeleken met de tools van concurrerende leveranciers. Het feit dat Ballerina nadrukkelijk bedoeld is om gedeployd te worden in lichtgewicht containers en sterk gericht is op de orchestratie van microservices en asynchrone verwerking is een sterk punt. Net als de standaard ingebouwde retry en foutafhandeling. Zelf ben ik zeer gecharmeerd van de grafische ondersteuning die Ballerina tijdens het bouwen van een service biedt. Dat vergroot de ontwikkelsnelheid en het geeft inzicht in de globale procesflow van de service. Wat dan weer de onderhoudbaarheid bevordert en de communicatie met bijvoorbeeld business analisten en functioneel ontwerpers vergemakkelijkt.
Maar er zijn ook een aantal kanttekeningen. Ballerina is een volledig nieuw product en wordt van de grond af aan opgebouwd. Het is niet bekend hoeveel tijd WSO2 nodig heeft om Ballerina voldoende volwassenheid te laten bereiken. Omdat het in de toekomst ESB en DSS binnen Enterprise Integrator gaat vervangen, staat de huidige klantenkring een grote migratie te wachten. De vraag is in hoeverre die overgang met de voorziene migratietooling ondersteund kan worden. En in hoeverre hun huidige klanten WSO2 in deze koerswijziging willen en kunnen volgen.
Resumerend kunnen we stellen dat de potentie van Ballerina groot is. In mijn ogen is Ballerina een goed antwoord op het vraagstuk hoe de orchestratie van microservices te faciliteren op een wijze die aansluit op de manier waarop we die microservices ontwikkelen, beheren en deployen. Migratie van ESB naar Ballerina zal niet eenvoudig zijn, maar het ligt voor de hand dat er veelal sprake is van herbouw en nieuwbouw van services. Zeker als een organisatie de stap naar microservices gaat maken, gebaseerd op REST/JSON.