Interview mit Paul Fremantle, Co-Founder und CTO von WSO2

Ballerina: Die neue Programmiersprache für Microservices-Architekturen
Keine Kommentare

Die Programmiersprache Ballerina hat zwar noch nicht Version 1.0 erreicht, doch still steht das Projekt keineswegs. WSO2, das Unternehmen hinter Ballerina, bietet derzeit ein Early-Access-Paket an, um Entwickler den Einsatz der Cloud-nativen Sprache in ihren Projekten schmackhaft zu machen. Wir haben bei Paul Fremantle, Co-Founder und CTO von WSO2, nachgehakt.

Ballerina wurde Anfang 2017 als Open-Source-Projekt veröffentlicht. Auch wenn es damit quasi ein brandneues Projekt ist (Fortran ist zum Beispiel bereits 1954 auf den Markt gekommen), hat die Programmiersprache bereits eine gewisse Reife erlangt.

Konsultiert man die FAQ der Sprache, erfährt man, dass „das Ballerina-Projekt derzeit die Veröffentlichung von Ballerina 1.0 anstrebt“. Enthalten sein soll eine Sprachspezifikation, eine virtuelle Maschine, Standardbibliotheken, Build-Management, zentralisiertes Package-Management auf central.ballerina.info, ein Unit-Test-Framework und eine Überwachungserweiterung.

Ballerina is an attempt to combine the agility of a type safe programming language with the syntax of integration sequence diagrams. Once compiled, the resulting binaries embed micro engines that perform inline integration semantics such as mediation, orchestration, transformations, asynchrony, event generation and transactions.

Wir sprachen mit Paul Fremantle, Co-Founder und CTO von WSO2, über die Funktionen der Sprache, die Vorteile des Einsatzes von Ballerina im Serverless-Bereich und darüber, was die Zukunft für die noch junge Programmiersprache in petto hat.

Entwickler: WSO2, das Unternehmen hinter Ballerina, hat vor Kurzem das Ballerina Early Access Development Support Package veröffentlicht. Was genau steckt dahinter?

Paul Fremantle: Ballerina ist ein Open-Source-Projekt und auch als Sprache Open Source. Die meisten Nutzer bekommen Unterstützung via Stack Overflow und Slack. Es gibt allerdings auch Organisationen, die einen etwas formaleren Ansatz für den Support wünschen, vor allem aktuell, da Ballerina noch nicht Version 1.0 erreicht hat. Um Projekte zu unterstützen, die Ballerina trotzdem jetzt schon testen wollen, bieten wir einen unlimitierten Query Support.

Entwickler: Wieso wurde diese Cloud-native Sprache erschaffen?

Paul Fremantle: Anwendungen werden immer öfter aus disaggregierten, verteilten Komponenten wie Microservices, APIs und Serverless-Funktionen zusammengesetzt. Während viele Sprachen die Möglichkeiten und die Unterstützung dafür in Form von Frameworks oder Librarys zur Verfügung stellen, gibt es einige Dinge, die nur im Kern der Sprache wirklich gelöst werden können.

Das Typsystem von Ballerina enthält die native Unterstützung für JSON, XML und gRPC.

Zum Beispiel ist die Nutzung von asynchronem IO ein Kernelement beim Erstellen von skalierbaren Netzwerksystemen. Die Programmierbibliotheken für asynchrones IO in Java sind in ihrer Nutzung sehr komplex, in Node.js macht einem das Callback-Modell das Leben schwer. Das Programmiermodell von Ballerina ist hingegen sehr simpel und um asynchrones IO wird sich komplett transparent gekümmert. Ein weiteres Beispiel ist das Typsystem von Ballerina, das native Unterstützung für JSON, XML und gRPC enthält.

Entwickler: Welches sind die Kernfunktionen der Sprache?

Paul Fremantle: Services, Netzwerkendpunkte und Konnektoren für verteilte Systeme sind die vorrangigen Kernpunkte der Sprache. Ruft man Netzwerk-Services auf, passt die Nachricht oft nicht angenehm in einen einzelnen Typ. Meine Nachricht könnte bspw. im JSON-Format sein, sofern sie erfolgreich übermittelt wurde. Es könnte abe rdurchaus sein, dass ein transparentes Proxy oder Gateway eine andere Art von Fehlermeldung ausgibt, oder der Netzwerk-Stack könnte mit lokalen Fehlern antworten. In der Sprache werden diese Möglichkeiten sehr natürlich repräsentiert, ohne dass der Entwickler komplexe Objekte extra hierfür erstellen müsste.

Ein Concurrency-Modell für Worker, das mit dem Blick auf Sequenzdiagramme designt wurde, it ebenfalls Teil der Sprache. Enthalten sind zudem Tools, mit denen man diese Sequenzdiagramme direkt aus dem Code extrahieren kann.

Services, Netzwerkendpunkte und Konnektoren für verteilte Systeme sind die vorrangigen Kernpunkte von Ballerina.

Auch Streams sind Teil des Sprachkerns und es existiert ein integriertes Query-Modell. Letzteres erlaubt es, Muster über eine in Streams über eine gewisse Zeit ohne komplizierten Code zu erfassen. Direkte Unterstützung für Asynchronität und Event-basierte Modelle (inklusive WebSub) bilden ebenfalls einen wichtigen Bestandteil der Sprache.

Hinzu kommt, dass jeder HTTP-Service automatisch zu OpenAPI mappt und Ballerina ein eingebautes Package-Management und Versionierungsmodell besitzt.

Lesen Sie auch: Angular in einer Microservices-Welt

Entwickler: Welche Vorteile hat es, Ballerina im Serverless-Kontext einzusetzen?

Paul Fremantle: Serverless-Plattformen sind richtig gut darin, APIs und Event-basierte Systeme zu hosten. Ballerina unterstützt nativ das Erstellen von APIs und Event-basierten Services mit prägnantem und zweckmäßigem Code und das zugehörige Typsystem ist ebenfalls darauf ausgelegt. Ballerina wird übrigens auch von OpenWhisk und Kubeless vollständig unterstützt, zwei Serverless-Plattformen.

Entwickler: Wie vereinfacht Ballerina das Deployment von Microservices?

Paul Fremantle: Ballerina bringt einige Funktionen mit sich, die die Entwicklung von Microservices vereinfachen.

  • Es gibt Annotationen für Docker und Kubernetes, die sich ins Build-System integrieren lassen, um Container- und Deployment-Artefakte zu generieren. Mit ein paar wenigen Zeilen integriertem Ballerina-Code wird ein Docker File und das Kubernetes YAML generiert, sodass man direkt in Microservices-Umgebungen deployen kann.
  • Eine großere Herausforderung im Microservices-Bereich ist das verteilte Tracing und die Observability. Ballerina hat auch hierfür nativen Support, sodass ohne zusätzlichen Code Tracing, Monitoring und die Observability aktiivert werden können. Dies funktioniert bereits in Verbindung mit Zipkin, OpenTracing, Prometheus und Honeycomb.
  • Bei Cloud-native und Microservices geht es darum, Netzwerk-Services anzubieten und zu nutzen – das ist genau das, wofür Ballerina erschaffen wurde.

Entwickler: Wie sieht die Zukunft von Ballerina aus? Was steht auf dem Plan für die Programmiersprache?

Paul Fremantle: Die Sprachspezifikation ist noch nicht ganz fertig und wir arbeiten daran, sie zu optimieren und zu verbessern. Dies wird den Rest des Jahres in Anspruch nehmen, am Ende soll die Sprache dann erstmal abgeschlossen werden. Wir arbeiten aber auch an einer Reihe anderer Dinge:

  • Wir haben viele Möglichkeiten identifiziert, den DevOps Flow rund um die Sprache zu optimieren und zu verbessern. Außerdem möchten wir die Art und Weise überarbeiten, wie die Sprache mit anderen Sprachen zusammenarbeitet.
  • Es gibt unserer Ansicht nach Verbesserungsmöglichkeiten dabei, wie ein Set von miteinander verbundenen Netzwerk-Services besser repräsentiert werden kann. Vor allem die Überstrapazierung von YAML soll damit verhindert werden, Entwickler würden von einer stärkeren Typsierung profitieren.
  • Gerade wird übrigens sehr viel Arbeit in die Optimierung des Kompilierungsmodells gesteckt. Dieses Langzeitprojekt begeistert unser Entwicklerteam.

Lesen Sie auch: Microservices – zu klein und zu gut, um nur ein Hype zu sein

Entwickler: Wie kann sich die Community an Ballerina beteiligen?

Unser Motto ist ‚Program the World‘!

Paul Fremantle: Es gibt drei recht einfache Wege: Da sich die Sprache noch immer in der Entwicklung befindet, ist Feedback auf Stack Overflow, im Slack, auf den Mailing-Listen oder auf GitHub Gold wert. Eine weitere Möglichkeit ist natürlich ein Pull Request mit einer Verbesserung für die Sprache. Zu guter Letzt gibt es eine ganze Menge an Erweiterungsmöglichkeiten für Ballerina, etwa in Form von Konnektoren zu bpsw. Build-Systemen und DevOps.

Wir würden gerne zu so vielen Systemen wie möglich Verkünpfungen herstellen, denn unser Motto ist „Program the World!“

Weitere Informationen zu Ballerina gibt es übrigens auf unserer Homepage!

Entwickler: Vielen Dank!

Paul Fremantle is the CTO and co-founder of WSO2. He is known as the father of the Cloud Native computing concept and has a long history of working in open source and middleware, including work on Apache Axis2, Synapse and WSO2 Carbon. Most recently Paul completed a PhD looking at how personal middleware can improve IoT security and privacy, from the University of Portsmouth. Paul is a visiting lecturer at the University of Oxford, has published a number of peer-reviewed articles and has two patents. Paul previously worked at IBM where he was an STSM.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -