wso2 summit london 2018 introduction
Post on 18-Mar-2018
34 Views
Preview:
TRANSCRIPT
Rapidly Changing Developer Consumption Models
Explosion of IT Assets Required for Digital Transformation
Operations & Digital
Security
Developers
Governance and integration for “exploding endpoint” problem
Universal identity integration
Productivity - every developer an integrator
#1 OSS integration company; #8 OSS software company5 trillion transactions / year; 40M identities; 20k APIs2018 exiting ARR ~$40M ARR2018 exiting HC ~5602018 EBITDA $5M
WSO2 DASHBOARD($000s)
Exiting Subscription ARRARR Growth
Subscription Customers
EBITDACash Generated(Spent) From Ops
Rule of 40
S&M Spend for $1 Net New ARRDollar-based Net Retention Rate
2015 2016 2017
$ 11,25239%
$ 16,38746%
$ 24,98352%
$ (13,482)$ (11,769)
$ (192)$ (799)
$ 603$ 2,747
$ 3.9796%
454
$ 1.78107%
461
$ 1.14118%
471
181 229 312
-39 32 56
Average Headcount
Colombo
Mountain View London São PauloJaffna
New York
2005 2007 2010 2012 2014 2015 2017
25 485
200
600
2018
ColomboLondon
Mountain ViewSão Paulo
JaffnaNew York
Australia(April 1st)Mexico(Soon)
Europe(Soon)
WSO2 API Manager
WSO2 Enterprise Integrator
WSO2 Identity Server
WSO2 Streaming Processor
WSO2 IoT
NewReleases
Q1
Q2
Q3
Q4
Quarterly Product Releases
Centralized Integration
Through a bus or broker
Concentrates expertise
Decentralized Integration
Every service embeds integration
Crowd sources integration
// 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 httpservice<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.
top related