The year that was 2015

As 2015 comes to an end, we take a look back at the year that was filled with new products, great people, and reasons to celebrate.

This year was a big year for us as we marked 10 years of WSO2. From the humble beginnings of a handful of people, a small office in Colombo, and an idea for a revolutionary middleware platform, we have grown to be strong contender in the enterprise middleware space with a 500+ team, 5+ office locations and brand name customers all around the world. The 10 year website we launched gives you glimpse of how far we have come in this short period of time.

The website got a new look

,website1

we won championships,

bbchamps2015

took WSO2Con to London and San Francisco,

wso2conUSwso2coneu2wso2conEU

and rolled out a great set of products.

The year of Platforms

One of our key advantages is our unified comprehensive middleware platform, which is of course 100% open source (and will continue to be so). This year we identified individual platforms that position our products and defines our offering as a platform of platforms. Based on the needs of your architecture you can choose which platform to start with and enhance them in an iterative manner on-premise or in the cloud.

Platform

We also looked at the common architecture patterns such as EDA, ROA, and the new kid on the block Microservice Architecture (MSA). We introduced the Architect’s Vault specifically for enterprise architects, so that they can learn how to enhance their projects and be a leader in their space.

In addition WSO2 and Axiata launched a radical new open source digital enablement platform for Mobile Network Operators: WSO2.Telco. The platform represents a new milestone in agility and scalability, allowing telcos to expose, manage and orchestrate multiple network services at a fraction of the cost of legacy systems. Check it out here.

New products and upgrades

This year we launched four new products

  • WSO2 App Manager, the industry’s first 100% open source product to provide a unified approach for securely managing an enterprise’s applications across multiple platforms.
  • WSO2 Data Analytics Server, which combines into one integrated platform real-time and batch analysis of data with predictive analytics via machine learning to support the multiple demands of Internet of Things (IoT) solutions, as well as mobile and Web apps.
  • WSO2 Machine Learner, pairing data gathering and analytics with predictive intelligence to help you understand not just the present, but to predict scenarios and generate solutions for the future.
  • WSO2 API Cloud, the public cloud version of WSO2 API Manager giving a complete API platform as a service (PaaS), right-sized for an enterprise’s current demands and backed by the power to scale as their needs grow.

And also introduced products which are currently in Alpha with GA expected early next year.

  • WSO2 Gateway, an ultra high performance, lightweight and configuration-driven message gateway based on standard gateway patterns.
  • WSO2 Microservices Server offering an end-to-end microservices architecture to ensure agile delivery and flexible deployment of complex, service-oriented applications.
  • WSO2 Process Center which provides a complete, end-to-end solution for business process management

Many existing products got major upgrades too

  • WSO2 Enterprise Service Bus has several new inbound endpoints that enable transports to work in multi-tenant environments, new functionality for creating custom inbound endpoints, and 100+ connectors.
  • WSO2 API Manager supports Swagger 2.0, is open to third-party key servers for authenticating API Consumers, and includes enhances analytics
  • WSO2 Identity Server includes workflow support and is Fast Identity Online (FIDO U2F) compliant.
  • WSO2 Enterprise Store enables greater extensibility and customization in managing any enterprise asset type, adds REST APIs for the Store and Publisher components, and enhances role-based access.
  • WSO2 Governance Registry now integrates WSO2 Enterprise Store and WSO2 API Manager capabilities, providing a single center for governing APIs, services, tokens and more via a consumer-like interface.
  • WSO2 Message Broker  adds new features and enhancements to provide enterprises with a scalable and distributed architecture for easily managing the high messaging volume demands of IoT solutions.
  • WSO2 Business Process Server now includes the Activiti BPM engine, which supports BPMN 2.0, the specification recognized as one of the most IoT-aware approaches to process modeling.
  • WSO2 Data Services Server supports the open, standard OData 4.0 protocol, which enables the use of RESTful APIs to query data from a range of sources.

Looking forward to 2016

Apart from new products such as a Dashboard Server, Log-analytics Server and IoT Server, a major update comes in the form of  WSO2 Carbon 5. Carbon is our middleware kernel that powers our products and will include

  • An artifact deployment engine
  • A startup order resolver
  • Execution multi-tenancy with containers
  • Logging with Log4J-2.0
  • Transport management
  • JDK-8 features
  • RESTful kernel foundation services

This also signifies a change in our product strategy. All WSO2 products will have three main components:

  • Runtime: to run the different types of artifacts and execute functionality
  • Tooling: to manage, develop, configure and integrate the product
  • Analytics: to monitor the product’s execution

There will also be a change in our PaaS strategy. Not only will we be supporting Apache Stratos but also Container as a Service platforms such as Kubernetes. Even with the public cloud the plan is to transition from Stratos to Docker and Kubernetes by early next year.

Our vision is to continue to create lean, high-performance middleware runtimes that enable agile and iterative architecture. We aim to provide a powerful platform for your digital transformation, so here’s to a fantastic 2016!

greeting2016

WSO2 Microservices Server: Microservices in Ten Minutes!

Before we begin, I’d like to start by saying that this is not an introduction to microservices. Much has been written about the microservices paradigm and monolithic hell. If what you’re after is a good introduction, look no further than NginX’s introduction to microservices or Microservices: a definition to this architectural term by Martin Fowler and James Lewis.

Instead, we’re going to talk about WSO2 Microservices Server. At WSO2, we’ve put together a lightweight, high-performance microservices runtime with a  simple programming model for developing Java based microservices. It’s new, starts in under 300 milliseconds, and of course, integrates with our Data Analytics Server for additional insight. Let’s get started.

Hello, World

Let’s run through the process of getting the most basic sample running. This is literally a Hello World.

Firstly, make sure you have Java 8 and Maven installed. Then grab the zip from Github.

This folder is basically <MSS_HOME>. Make sure you mount the pom.xml into your Java IDE of choice. Then navigate to <MSS_HOME>/samples/hello_world. If you haven’t fired up your command prompt already, do it and type mvn package.

This’ll take a short while, and when you’re done you’ll have a helloworld*.jar. Run it.

From the target directory, use java -jar.

Congratulations! You’ll see a Netty listener starting up. You’ll also see that the Microservices Server has started up – in so many milliseconds.

It’s alive!

Of course, you need to test it. Use the curl command:

curl -v http://localhost:8080/hello/wso2 (depending on where you’ve put it)

For windows users, try http://www.confusedbycode.com/curl/. You can also forgo Curl entirely and use HTTPie.

You should get a response similar to the following:

* Adding handle: conn: 0x7fc9d3803a00
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* – Conn 0 (0x7fc9d3803a00) send_pipe: 1, recv_pipe: 0
* About to connect() to localhost port 8080 (#0)
*   Trying ::1…
* Connected to localhost (::1) port 8080 (#0)
> GET /hello/wso2 HTTP/1.1
> User-Agent: curl/7.30.0
> Host: localhost:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: */*
< Content-Length: 10
< Connection: keep-alive
<
* Connection #0 to host localhost left intact
Hello wso2

What happens here?

Open up the HelloService class.

import javax.ws.rs.GET;

import javax.ws.rs Path;

import javax.ws.rs Pathparam;

That’s JAX-RS, which comes in handy when creating RESTful web services.

@Path(“/hello”)

public class HelloService{
@GET
@Path (“(/name)”)
public String hello(@PathParam(“name”) String name) {
return “Hello “ + name;
}
}

Here we have a simple class acting as a REST endpoint. This is what says hello.
How does this get started? By something like this:

public class Application (
public static void main(String[] args) {
new MicrosevicesRunner(8080)
.deploy(new HelloService())
.start();
}

If you want to pass services through different ports, all you need to do is modify the arguments passed to MicroserviceRunner(). MicroservicesRunner(7888, 8888) will start up two Netty Listeners on port 7888 and 8888 respectively.

Now for a second exercise: stockquotes.

In the same manner as before, enter the <MSS_HOME> folder, navigate to samples, and enter the stockquotes-services folder. Technically, this sample is meant to demonstrate the use of @Produces and @Consumes annotations for bean conversion. We’re going to use it to see how a simple way of sending a POST message to our service.
Use mvn package.

curl -v http://localhost:8080/stockquote/GOOG

You should get an output along these lines: (“symbol”: “GOOG”, “name”: “Alphabet Inc.”: “last”:652.3, “low”:657.81,”high”:643.15”)
We’ve just pulled data that’s in our stockquote service.
What if we wanted to add data, say, the stock price of another company? We can add it via a POST message using the same format.

curl -v -X POST -H “Content-Type:application/json” -d ‘{“symbol”:”BVMF”,”name”: “Bovespa”,”last”:149.62,”low”:150.78,”high”:149.18,”createdByHost”:”localh ost”}’ http://localhost:8080/stockquote

This command will save a new symbol into the Stock Quote Service.

Congratulations! You’ve successfully used Java 8 and Maven for setting up the WSO2 Microservices Server and building our services and samples, executed Microservices with a basic java -jar approach and seen how easy it to to deploy a REST Service onto our Microservices Server.
For more exploration, drop by our documentation page for more samples and check out our more detailed slideshow.