Building Services with WSO2 Microservices framework for Java and WSO2 AS
Feb. 19, 2016•0 likes•8,546 views
Download to read offline
Report
Software
In this WSO2Con tutorial session, we go through how to create microservices with the WSO2 MSF4J library, and how to create web services with WSO2 Application Server.
Building Services with WSO2 Microservices framework for Java and WSO2 AS
1. Building Services with WSO2
Microservices Framework for
Java and WSO2 Application
Server
Kasun Gajasinghe & Kishanthan Thangarajah
WSO2
2. 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
3. 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.
6. 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
7. 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
10. 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
25. Security
• Security is done via a central server issuing JWT or
OAuth tokens.
• The OAuth2SecurityInterceptor verifies the token
before accessing the resources.
27. Hello World!
1. Build the sample - wso2msf4j-dist-1.0.0
/samples/helloworld
mvn clean install
2. Run the sample
java -jar helloworld-*.jar
3. Test the sample
curl http://localhost:8080/hello/wso2
28. Generate a sample with Maven
archetype
mvn archetype:generate -
DarchetypeGroupId=org.wso2.msf4j -
DarchetypeArtifactId=msf4j-microservice
-DarchetypeVersion=1.0.0
29. 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
30. Service class annotations
• JAX-RS HTTP resource methods - @GET @POST
@PUT @DELETE
• Content-negotiation - @Produces @Consumes
• Service lifecycle - @PreDestroy
@PostDestroy
31. HTTP Monitoring with Data Analytics
Server
1. Refer the sample -
wso2msf4j-1.0.0/samples/metrics-
httpmon/metrics-httpmon-fatjar
37. 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.”
46. 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
47. Future plan for Application Server
• Upcoming release - AS 6.0
• NOT based on WSO2 Carbon or OSGi!
• Built on top of Apache Tomcat
48. 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!)