July 2018
Increasing demand is causing disaggregation
Everything is
An Endpoint
Functions
APIs
Data
SaaS apps
Legacy apps
Devices
Disaggregation leads to more endpoints
Integration in an increasingly disaggregated world
Transactions
Circuit Breaking
Protocols
Payloads
Events
Security
Workflow
Streams
Compensation
The
Integration
Gap
ESB, BPM, EAI
Java / Spring
JavaScript / Node
The
Integration
Gap
- XPath for content access
- No data typing
- No compile time checks
- Complex dev/test lifecycle
- Decouples integration and runtime
- Code + config across many files
- Syntax is not integration-centric
- 3rd party build and packaging
AGILE
INTEGRATION SIMPLE
Ballerina is a compiled, type safe,
concurrent programming language.
Sequence
Diagrammatic
Syntax and effective coding model forces developers
into best practices for interaction semantics with
programs displayed as a sequence diagram of its flow.
Network Type System Structural types with primitive, record, object, tuple and
union types with heterogeneous data handling and
explicit nulls.
Worker Concurrency Parallel-first concurrency model with lightweight
workers that communicate with message passing and
non-blocking policies.
Shared Package &
Cloud-Aware Build
Native module versioning, dependency management,
and centralized registry with target-aware build for
cloud-native environments.
Ballerina design principles for integration
App 1
INTEGRATION
MESSAGING
DATA
SECURITY
Microservice
Hello World
caller hello
GET
Hello World
Annotations
caller hello
POST (name)
Hello, name!
Docker
@docker:Config {}
Ballerina init
CI/CD
http://b7a.freo.me
Connectors
caller hello
POST (status)
response
twitter
tweet (status)
response
caller hello
POST (status)
response
twitter
tweet (status)
response
transform
transform
Sequence Diagrammatic
Everything demoed is in the Ballerina By Guide repo
My setup
● Ballerina 0.980.0
● Docker Edge Version
18.05.0-ce-mac67 (25042)
○ includes k8s
● Visual Studio Code 1.25.1
● Ballerina vscode plugin
(0.980.0)
Ballerina is the glue between microservices
Transactions
Circuit Breaking
Protocols
Payloads
Events
Security
Workflow
Streams
Compensation
Kubernetes Jaeger
Docker Prometheus
etcd OAuth2 / OIDC
Istio / Envoy
LinkerD RabbitMQ
Consul AMQP
Swagger/OpenAPI
MySQL gRPC / Protobuf
Postgres WebSub
Cassandra
Spring/Java
Visual Studio Code
Intellij IDEA
Ecosystem extensions for
disaggregated architecture
In the demo
Discover at
ballerina.io
Ballerina bridges the Integration Gap
Agile Integration Simple
Edit / Build / Run Package management Services Transformations
Language server Ballerina Central Endpoints JSON primitive
IDE plugins Type safety Resources Annotations
Projects Union types Connectors Circuit breaker
Docker and K8S Flow control -> Async
Debugger Observability Workers, fork/join gRPC
Testerina: unit tests CI/CD Message broker Protobuf
Doc generation Table, vector, map Versioning XML type
CLI extensions Struct Bridge Streams
Dev tracing Lambda Swagger CSV
I/O Tasks, scheduling Databases Session mgmt
Projects Dependency mgmt
0.980.0 launched
https://ballerina.io/downloads/release-notes/#09800notes
How to get involved
Learn more
Open source
Get support
http://ballerina.io
http://github.com/ballerina-platform/
Stack Overflow #ballerina tag
Ballerina: Cloud Native Programming Language

Ballerina: Cloud Native Programming Language