Ballerina reinvents cloud-native middleware as programming language, puts ESB on path to extinction

Wednesday, 25 September 2019 00:00 -     - {{hitsCtrl.values.hits}}

 


 

  • Open source Ballerina 1.0 language radically simplifies how developers build and deploy cloud-native distributed apps and services

The growth of digital services, mobile apps, and connected devices is creating an explosion of endpoints – from APIs to events, data streams, microservices, serverless apps, and other digital assets. Developers today need a more modern and agile approach to connect to these endpoints than a traditional centralised enterprise service bus (ESB) can offer. 

Ballerina 1.0, now generally available, delivers on this by providing cloud-native middleware as a programming language for the first time. As a result, the new language from Ballerina, the open source project created and sponsored by WSO2, radically simplifies how developers will build and deploy cloud-native distributed applications and services.

“Modern applications are effectively integrations of services, data, transactions and processes from a vast array of resources to deliver innovative, new services. But ESBs and other traditional integration approaches have failed to keep pace,” said Dr. Sanjiva Weerawarana, founder and leader of the Ballerina project. “The Ballerina programming language is facilitating a major evolutionary leap in the development of cloud native distributed applications that is tearing down the outdated barriers between app development and integration to enable greater agility, performance and resiliency. And it’s accelerating the ESB’s path to extinction in the process.”

Ballerina for modern, cloud native programming

Ballerina is the first language based on the concept that modern application programming involves creating and consuming APIs. Modelled on the notion of sequence diagrams, Ballerina programs are self-documenting and fit cleanly into the patterns of microservices and cloud native development. Creating RESTful and gRPC APIs is concise, simple and clear. Early users report that developing APIs in Ballerina is more effective than other languages because the syntax is designed around services; endpoints; network types, such as JSON and ProtoBuf; and simple annotations automatically create deployments for Kubernetes, Docker and Istio. 

The Ballerina language has been architected to serve as the core of a language-centric platform for cloud native applications and microservices. It has all the general-purpose functionality expected of a modern programming language, but also introduces several unusual aspects that make it particularly suitable for programming and consuming APIs. These include:

  • Language constructs specifically for consuming and providing network services.
  • Abstractions and syntax for concurrency and network interaction that closely correspond with sequence diagrams – enabling a bidirectional mapping for any Ballerina source code between its textual representation and its graphical representation as a sequence diagram.
  • A structural type system that is more flexible and allows for looser coupling than traditional statically typed languages – particularly useful when combining data from multiple, independently-designed systems.

Tackling the cloud-native shortcomings of ESBs

Existing ESBs have significant shortcomings in meeting the needs of modern app development and integration, including promoting the bottleneck of centralised development, poor fit with agile development, and underpowered configuration languages that result in a poor reputation with developers. 

Unlike ESBs and business process workflow tools, Ballerina is designed to fit into a modern development lifecycle – working properly with continuous integration and continuous delivery (CI/CD) tools, such as Jenkins, Travis and Codefresh; observability tools, such as Prometheus, Zipkin and Honeycomb; and cloud orchestration systems like Kubernetes. And unlike an ESB configuration language, Ballerina is a full programming language, so developers don’t run out of headroom when solving complex problems. 

The Ballerina language has been designed in conjunction with the Ballerina platform, which provides comprehensive support for modern software engineering processes and tool chains. The Ballerina platform includes:

  • A framework for package/module management, including dependency and version management
  • Ballerina Central, a public web service for sharing modules amongst developers
  • IDE tool plugins for Visual Studio Code and IntelliJ Idea supporting both textual and graphical development and debugging of Ballerina programs
  • A framework for documentation and testing of Ballerina programs
  • Built-in tooling for OpenAPI (Swagger) and Protocol Buffers v3/gRPC
  • A comprehensive standard library with support for many network protocols, data sources and data formats to ease adoption of the language

Version 1.0 of Ballerina adds several new features over earlier pre-production releases, including:

  • Support for a stable language specification: 2019R3
  • A new Ballerina compiler that targets the Java Virtual Machine (JVM)
  • Java interoperability, which allows users to call Java code from Ballerina
  • A major redesign of Ballerina developer tools

Ballerina 1.0 also includes experimental features that add constructs for other middleware functionality, such as event stream processing and distributed transactions. Workflow and reliable messaging capabilities are also in the pipeline.

Ballerina is a 100% open source project, and all parts of the project are developed openly at https://github.com/ballerina-platform.

Early users cite Ballerina advantages 

“We were attracted by Ballerina’s cloud-native features, such as automatic generation of Docker, Kubernetes and Helm artefacts, as well as its small footprint and faster boot times. It also capable of running as Lambda function (serverless) in AWS. Together, these capabilities have enabled us to easily run microservices in containers at scale and integrate with CI/CD tools with less effort,” stated Sri Harsha Pulleti, integration architect and senior manager, Motorola.

“Ballerina will enable fast, quality, 12-factor ready deployments out of the box. The strong annotation set is a great ‘batteries included’ approach that will have Devs and Ops collaborating from the start of development,” said Jim Kittle, an application architect at a leading university in the United States. 

“[With Ballerina] you can get sequence diagrams automatically. When things start to get complicated and you need to understand and socialise with the rest of your team what it is that you’re building, these diagrams become very helpful,” stated Christian Posta, field CTO, solo.io.

Availability and support

Ballerina 1.0 is available today. As a fully open source implementation released under the Apache License 2.0, it does not carry any licensing fees and can be freely downloaded. Users can find support through its growing open source community on Ballerina’s Slack Channel, Google Group, or Github. Additionally, resources such as the Quick Tour and Ballerina by Examples can be found online.

For organisations seeking to go beyond community support, commercial support is available from WSO2, the creator and lead sponsor of the Ballerina project. Provided under the WSO2 Platform license, this subscription includes security updates, performance enhancements, bug fixes, and 24x7 enterprise support. WSO2 also offers consulting services around Ballerina –including agility assessments, microservice transformation planning, training, development and deployment – as well as cloud hosting services. To learn more, visit https://wso2.com/subscription.

Sponsored and developed by WSO2

WSO2 invested in the creation of Ballerina to address significant shortcomings that it saw in how middleware was evolving to play in the cloud native world. WSO2’s founder, Dr. Sanjiva Weerawarana, created the project in August 2016 and led its technical design in collaboration with James Clark, bringing in their decades of software development and enterprise integration experience. 

Sanjiva’s professional career has been focused on creating technology to facilitate large scale distributed systems, including co-creating WSDL, BPEL4WS and several domain-specific programming languages. James was a co-creator of XML and led the design of XPath, XSLT and RELAX NG. WSO2’s engineering effort for Ballerina has averaged more than 50 engineers during its three-plus years of development.

“Few technologies have the potential to reshape an entire market. We believe Ballerina is one of those technologies and that WSO2 will fundamentally disrupt the integration market using Ballerina as the basis of its future,” said Vinny Smith, executive chairman of the WSO2 board and founder of Toba Capital, WSO2’s majority stockholder. “Based on this vision, we have invested more than 150 person years of effort in bringing the first production release to market. And, knowing that it takes time to get a language established, we are making a long-term commitment to advancing both Ballerina technology innovations and building the community around this ground-breaking software.”

COMMENTS