Top Banner
Building Services with WSO2 Microservices Framework for Java and WSO2 Application Server Kasun Gajasinghe & Kishanthan Thangarajah WSO2
51

Building Services with WSO2 Microservices framework for Java and WSO2 AS

Apr 16, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Building Services with WSO2 Microservices Framework for Java and WSO2 Application Server Kasun Gajasinghe & Kishanthan ThangarajahWSO2

Page 2: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Agenda

• Introduction to Microservices Architecture• Introduction to WSO2 MSF4J

– Hands-on Sessions• Introduction to Kubernetes/Docker• Demonstrating MSF4J deployment with Kubernetes

• Introduction to WSO2 Application Server– Hands-on Session

Page 3: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Microservices Architecture

A method of developing software applications as a suite of independently deployable, small, modular services in which each service runs a unique process and communicates through a well-defined, lightweight mechanism to serve a business goal.

Page 4: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Microservices

http://martinfowler.com/articles/microservices.html

Page 5: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Inner & Outer Architecture

http://blogs.gartner.com/gary-olliffe/2015/01/30/microservices-guts-on-the-outside/

Page 6: Building Services with WSO2 Microservices framework for Java and WSO2 AS

WSO2 Microservices Framework for Java (MSF4J)

• Lightweight & fast runtime• Use Java annotations as a way of defining microservices APIs as well

as metrics• Support well known & widely used methods such as JAX-RS

annotations• Provide simple ways to develop & deploy microservices• Built-in Metrics & Analytics APIs with out-of-the-box integration with

WSO2 Data Analytics Server (DAS)• To be used in the WSO2 platform as a way of replacing all admin

services as well as defining other microservices for inter-component interactions

Page 7: Building Services with WSO2 Microservices framework for Java and WSO2 AS

MSF4J Implementation

• Based on the new WSO2 Carbon 5.0 kernel • Transport is based on Netty 4.0• Supports streaming• High performance• 5MB pack size• Starts within 300ms• ~25MB memory consumption for the framework

Page 8: Building Services with WSO2 Microservices framework for Java and WSO2 AS

MSF4J Performance Comparison

Page 9: Building Services with WSO2 Microservices framework for Java and WSO2 AS

MSF4J Memory Consumption Comparison

Page 10: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Core Features of MSF4J

• Quick & simple development model using simple annotations• Lightweight & high performance• Custom interceptors• OAuth based security• Metrics gathering & publishing• Streaming input & streaming output support• WSO2 DevStudio based tooling for generating microservices projects

starting from a Swagger API definition• Comprehensive samples demonstrating how to develop microservices

application

Page 11: Building Services with WSO2 Microservices framework for Java and WSO2 AS

MSF4J Flow & Thread Model

Page 12: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Developer Experience & Programming Model

Page 13: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Development Model

• Maven Archetype• IDE/Build Classpath (msf4j-all.jar)• Tooling (Swagger -> Code)

Page 14: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Maven pom.xml

Page 15: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Maven Archetype

mvn archetype:generate-DarchetypeGroupId=org.wso2.msf4j-DarchetypeArtifactId=msf4j-microservice-DarchetypeVersion=1.0.0-DgroupId=org.example -DartifactId=myservice-Dversion=1.0.0-SNAPSHOT-Dpackage=org.example.service

Page 16: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Example - StockQuote Microservice

Page 17: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Application - Main Class

Page 18: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Build and Run !!!

mvn clean install

java -jar stockquote-1.0.0.jar

Page 19: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Tooling - WSO2 Developer Studio

Page 20: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Types of Deployment

• Standalone, Self contained jar files• OS / Container images

Page 21: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Analytics & Monitoring

Supports annotations• Timed – measures execution • Metered – measures rate of events • Counted – counts the total invocations • HTTPMonitored – monitors HTTP requests

Page 22: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Analytics & Monitoring

Page 23: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Service Metrics - Console Output

Page 24: Building Services with WSO2 Microservices framework for Java and WSO2 AS
Page 25: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Security

• Security is done via a central server issuing JWT or OAuth tokens.

• The OAuth2SecurityInterceptor verifies the token before accessing the resources.

Page 26: Building Services with WSO2 Microservices framework for Java and WSO2 AS

MSF4J Hands-on Sessions

Page 27: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Hello World!

1. Build the sample - wso2msf4j-dist-1.0.0/samples/helloworldmvn clean install

2. Run the samplejava -jar helloworld-*.jar

3. Test the samplecurl http://localhost:8080/hello/wso2

Page 28: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Generate a sample with Maven archetypemvn archetype:generate -DarchetypeGroupId=org.wso2.msf4j -DarchetypeArtifactId=msf4j-microservice -DarchetypeVersion=1.0.0

Page 29: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Hands-on - Write a StudentService

• API -– GET /student/getAll - get all students– GET /student/get/{id} - get student with {id}– POST /add - add a student

• Intercept requests• Monitoring

Page 30: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Service class annotations

• JAX-RS HTTP resource methods - @GET @POST @PUT @DELETE

• Content-negotiation - @Produces @Consumes• Service lifecycle - @PreDestroy @PostDestroy

Page 31: Building Services with WSO2 Microservices framework for Java and WSO2 AS

HTTP Monitoring with Data Analytics Server1. Refer the sample - wso2msf4j-1.0.0/samples/metrics-httpmon/metrics-httpmon-fatjar

Page 32: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Production Deployment with Kubernetes and Docker

Page 33: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Virtual Machines vs Containers

Page 34: Building Services with WSO2 Microservices framework for Java and WSO2 AS

What is Docker

• Container Virtualization• Build, pack, ship and run applications as containers• Build once, run in many places• Isolated

Page 35: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Docker Filesystem

Page 36: Building Services with WSO2 Microservices framework for Java and WSO2 AS

StockQuote Service Dockerfile

Page 37: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Kubernetes

• Kubernetes is an open source orchestration system for Docker containers

• Docker -> Container lifecycle management• Kubernetes -> Orchestration and container cluster

management

“Kubernetes, I need 5 Tomcat and one MySQL server running at all times.”

Page 38: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Kubernetes in a Nutshell

Page 39: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Kubernetes UI

Page 40: Building Services with WSO2 Microservices framework for Java and WSO2 AS

PetStore sample

Page 41: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Petstore sample

Page 42: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Petstore sample

Page 43: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Petstore sample - deployment view

Page 44: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Demo - Petstore

Page 45: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Building Services with WSO2 Application Server

Page 46: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Current status of Application Server

• Latest release - AS 5.3.0• Built on top of WSO2 Carbon• Embedded Apache Tomcat 7 and Apache TomEE 7• First class support for

– JAX-WS and JAX-RS services– JavaEE 6 Web Profile applications

Page 47: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Future plan for Application Server

• Upcoming release - AS 6.0• NOT based on WSO2 Carbon or OSGi!• Built on top of Apache Tomcat

Page 48: Building Services with WSO2 Microservices framework for Java and WSO2 AS

AS 6.0

• HTTP Request Monitoring for Tomcat• Seamless integration with WSO2 Identity Server for

SAML SSO Authentication • Classloading improvements

Upcoming- Integration with WSO2 API Manager for exposing

APIs. (API Everywhere!)

Page 49: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Hands-on Session

Page 50: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Questions?

Page 51: Building Services with WSO2 Microservices framework for Java and WSO2 AS

Thank You