The document summarizes WSO2's annual summit in London from March 2018. It discusses rapidly changing developer consumption models and the explosion of IT assets required for digital transformation. It then outlines WSO2's solutions to help with open source integration, operations, security, developer productivity, and governance. Specific metrics are provided on WSO2's financial performance and product portfolio. The document also discusses trends toward centralized vs decentralized integration and previews Ballerina, a new programming language from WSO2 for cloud native integration and composition of APIs.
8. Colombo
Mountain View London São Paulo
Jaffna
New York
2005 2007 2010 2012 2014 2015 2017
25 485
200
600
2018
Colombo
London
Mountain View
São Paulo
Jaffna
New York
Australia
(April 1st
)
Mexico
(Soon)
Europe
(Soon)
9. WSO2 API Manager
WSO2 Enterprise Integrator
WSO2 Identity Server
WSO2 Streaming Processor
WSO2 IoT
New
Releases
Q1
Q2
Q3
Q4
Quarterly Product Releases
13. Centralized Integration
Through a bus or broker
Concentrates expertise
Decentralized Integration
Every service embeds integration
Crowd sources integration
14.
15. // Deployment annotations generate architecture artifacts during build
@kubernetes:deployment{}
@kubernetes:service{}
@kubernetes:ingress{ host:"wso2.com", path:"/customer" }
// A “service” is a network-accessible server endpoint, in this case http
service<http> updateService {
// An “endpoint” is a named connection to a networked endpoint
endpoint<http:HttpClient> customerSystem {
create http:HttpClient("http://networkedSystem", {});
}
// A “resource” is a named invocation point for this API
@http:resourceConfig { methods:["POST"], path: "/" }
resource update (http:Connection conn, http:InRequest req) {
http:OutResponse response = { statusCode : 200 };
// Atomic operations for network actions
transaction {
// JSON, XML, and ProtoBuf are built-in data types
json customerData = req.getJsonPayload();
http:OutRequest out = {};
out.setJsonPayload(customerData);
// Multi-return values and type inference!
var cust, custerr = customerSystem.post("/updateCustomer", out);
var bill, billerr = customerSystem.post("/billCustomer", out);
if (billerr != null || custerr != null) { abort; }
} failed { response.statusCode = 500; }
// Send response to initiating client and ignore any error
_ = conn.respond(response);
}
}
Ballerina is a cloud native programming language and
runtime, including a message broker and API gateway,
which make it easy to create resilient services that integrate
and orchestrate transactions across distributed endpoints.
A programming language for orchestration and
composition of API and streaming endpoints.
A service runtime tuned for serverless and cloud native: it
boots faster than average network latency, small memory
footprint, and is stateless.
Frameworks to extend Ballerina’s resilience and transaction
properties to existing applications and code:
1. A sidecar to bridge legacy services available over localhost
2. Ballerina for Java to package Java code into Ballerina services
An API gateway, message broker, and transaction
coordinator to enforce runtime policies, scale event-driven
architecture, and orchestrate transactions across services.
Agile toolchain plugins with a compiler, composer, and IDE
extensions.
Ballerina Central to discover reusable integration
extensions in a global package registry.