Right Money Management App For Your Financial Goals
Building Services with WSO2 Application Server and WSO2 Microservices Framework for Java
1. Building Services with WSO2
Microservices Framework for Java and
WSO2 Application Server
Sagara Gunathunga & Sameera Jayasoma
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
27. Security
• Security is done via a central server issuing JWT or OAuth
tokens.
• The OAuth2SecurityInterceptor verifies the token before
accessing the resources.
32. The Essence of Micro-Services
• Micro-Services are all about…
– Proper granularity of components
– Independent deployment
• They are not a counter-proposal to SOA
• They do not prove that SOA failed
– In the opposite: they require loose coupling,...
• They require a methodology to determine “proper granules”
for components
– Something like the holy grail of software engineering for
decades!
– So, don’t expect your middleware vendors to solve this problem
for you! It’s all about YOU solving an very difficult
architecture/design problem!!!
33. The Essence of Micro-Services
• No shared DBs
• Transactions
• Forward Compatibility
• Micro service security
• Composition with other micro services
• Service Discovery
• Routing
• Monitoring
• Automation
36. What is Docker
• Container Virtualization
• Build, pack, ship and run applications as containers
• Build once, run in many places
• Lightweight, Isolated
42. 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.”
44. Kubernetes Work Units
• Pods - Generally represents one or more containers that
should be controlled as a single “application".
• Services - A unit that act as a basic load balancer for
other containers.
• Replication Controllers - Concept of a replicated pod.
Handles horizontal scaling of containers / pods. Maintain
the desired number of containers.
49. 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
50. Future plan for Application Server
• Upcoming release - AS 6.0
• NOT based on WSO2 Carbon or OSGi!
• Built on top of Apache Tomcat
51. AS 6.0
• HTTP Request Monitoring for Tomcat
• Seamless integration with WSO2 Identity Server for
SAML SSO Authentication
• Classloading improvements