View
756
Download
4
Category
Preview:
Citation preview
Developing Microservices for Cloud using Java
Senaka Fernando Solutions Architect, WSO2 (UK)
Agenda
• Introduction to Microservices Architecture • Introduction to WSO2 MSF4J
– Hands-on Sessions • Introduction to Kubernetes/Docker • Demonstrating MSF4J deployment with Kubernetes
– Demos
Links
• https://github.com/wso2/msf4j/releases/tag/v1.0.0 • https://docs.wso2.com/display/MSF4J100/Running+a
+Basic+Microservice • http://wso2.com/products/data-analytics-server/ • http://wso2.com/products/identity-server/
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.
Microservices
h"p://mar)nfowler.com/ar)cles/microservices.html6
Inner & Outer Architecture
http://blogs.gartner.com/gary-olliffe/2015/01/30/microservices-guts-on-the-outside/
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
MSF4J Implementation
• Based on the new WSO2 Carbon 5.0 kernel • Transport is based on Netty 4.0 • Supports streaming • High performance • Very small pack size • Starts within 300ms • ~25MB memory consumption for the framework
MSF4J Performance Comparison
MSF4J Memory Consumption Comparison
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
MSF4J Flow & Thread Model
Developer Experience & Programming Model
Development Model
• Maven Archetype • IDE/Build Classpath (msf4j-all.jar) • Tooling (Swagger -> Code)
Maven pom.xml
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
Example - StockQuote Microservice
Application - Main Class
Build and Run !!!
mvn clean install java -jar stockquote-1.0.0.jar
Tooling - WSO2 Developer Studio
Types of Deployment
• Standalone, Self contained jar files • OS / Container images
Analytics & Monitoring
Supports annotations • Timed – measures execution • Metered – measures rate of events • Counted – counts the total invocations • HTTPMonitored – monitors HTTP requests
Analytics & Monitoring
Service Metrics - Console Output
Security
• Security is done via a central server issuing JWT or OAuth tokens.
• The OAuth2SecurityInterceptor verifies the token before accessing the resources.
MSF4J Hands-on Sessions
Hello World!
• Build the sample - wso2msf4j-dist-1.0.0/samples/helloworld
mvn clean install • Run the sample
java -jar helloworld-*.jar • Test the sample
curl http://localhost:8080/hello/wso2
Fat JAR samples
• Refer the sample - https://docs.wso2.com/display/MSF4J100/Developing+a+Microservice+in+Fat+JAR+Mode
Download WSO2 Data Analytics Server
• http://wso2.com/products/data-analytics-server
HTTP Monitoring with Data Analytics
• Refer the sample - https://docs.wso2.com/display/MSF4J100/Using+Metrics+and+HTTP+Monitoring+Interceptors
Simple File Server
• Refer the sample - https://docs.wso2.com/display/MSF4J100/Handling+Files
Download WSO2 Identity Server
• http://wso2.com/products/identity-server
Security for Microservices
• Refer the sample - https://docs.wso2.com/display/MSF4J100/Securing+Microservices
Your First MS - Maven Build
mvn archetype:generate -DarchetypeGroupId=org.wso2.msf4j -DarchetypeArtifactId=msf4j-microservice -DarchetypeVersion=1.0.0
Your First MS - 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
Your First MS - Annotations
• JAX-RS HTTP resource methods - @GET @POST @PUT @DELETE
• Content-negotiation - @Produces @Consumes • Service lifecycle - @PreDestroy @PostDestroy
Production Deployment with Kubernetes and Docker
Virtual Machines vs Containers
What is Docker
• Container Virtualization • Build, pack, ship and run applications as containers • Build once, run in many places • Isolated
Docker Filesystem
StockQuote Service Dockerfile
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.”
Kubernetes in a Nutshell
Kubernetes UI
PetStore sample
Petstore sample
Petstore sample
Petstore sample - deployment view
CONTACT US !
Recommended