workshop/tutorial wso2 micro services server

87
Microservices Server – MSS Workshop Edgar Silva edgar @wso2.com

Upload: edgar-silva

Post on 08-Jan-2017

1.376 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Workshop/Tutorial WSO2 Micro Services Server

Microservices Server – MSS Workshop Edgar Silva edgar @wso2.com

Page 2: Workshop/Tutorial WSO2 Micro Services Server

o  This workshop is intend to cover how to use the WSO2 Microservices Server – MSS, we will cover some basic overview about some concepts, but we strongly recommend you look for more detailed basics about Microservices.

o  Recommended reading: o  http://nginx.com/blog/introduction-to-microservices/ o  https://www.nginx.com/blog/building-microservices-using-

an-api-gateway/

2

Page 3: Workshop/Tutorial WSO2 Micro Services Server

3

Page 4: Workshop/Tutorial WSO2 Micro Services Server

4

Basics Pre-Reqs

Page 5: Workshop/Tutorial WSO2 Micro Services Server

o  Java 8 o  Maven o  See the MSS’s releases page:

o  https://github.com/wso2/product-mss/releases o  Let’s work direct from the source:

o  Git pull o  https://github.com/wso2/product-mss

o  Or simply download from this url: (easier) https://github.com/wso2/product-mss/archive/master.zip

5

Page 6: Workshop/Tutorial WSO2 Micro Services Server

6

Page 7: Workshop/Tutorial WSO2 Micro Services Server

o  So, cd <MSS_HOME>/samples

o  Make you sure you could import the project hello_world

7

Page 8: Workshop/Tutorial WSO2 Micro Services Server

o  Go to the dir: o  <MSS_HOME>/samples/hello_world

o  Type: mvn package

8

Page 9: Workshop/Tutorial WSO2 Micro Services Server

o  After Maven process o  ( be pacient while downloading J ) o  What is happening:

o  The pom.xml inside the sample, inherits the dependencies from the root’s pom.xml, that’s why you don’t need to worry with this process

o  In a few (seconds) you will have a hello_service....jar into your target folder.

9

Page 10: Workshop/Tutorial WSO2 Micro Services Server

10

•  WSO2 Microservices Server booting in my case less than 300ms •  In the previous maven process, every dependency from other jars

were included into your helloworld-1.0.0-SNAPSHOT.jar, including the

reference to the Main Java Class. •  Everything you need is ready J

Page 11: Workshop/Tutorial WSO2 Micro Services Server

11

package org.wso2.carbon.mss.example; import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam; /** * Hello service resource class. */@Path("/hello")public class HelloService {  @GET @Path("/{name}") public String hello(@PathParam("name") String name) { return "Hello " + name; }  }}

JAX-RS

Simple class (REST Endpoint

REST Java Method

Page 12: Workshop/Tutorial WSO2 Micro Services Server

o  The simplest Java Class startup o  See the main method:

12

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

Page 13: Workshop/Tutorial WSO2 Micro Services Server

13

edgar$curl-vhttp://localhost:8080/hello/valentina

Page 14: Workshop/Tutorial WSO2 Micro Services Server

o  Take a look on this: o  http://www.confusedbycode.com/curl/

14

Page 15: Workshop/Tutorial WSO2 Micro Services Server

o  Thanks @jpviragine for that great tip: https://github.com/jkbrzt/httpie

o  Really great tool, works like cURL, but much better and more user friendly

o  Syntax: http <options> service or URL o  But if you prefer to be “roots”, ok, continue if cURL

15

Page 16: Workshop/Tutorial WSO2 Micro Services Server

16

public class Application { public static void main(String[] args) { new MicroservicesRunner(7888, 8888) .deploy(new HelloService()) .start(); }

Services exposed through different ports(*)

(*) Default port is 8080 when no ports are specified

Page 17: Workshop/Tutorial WSO2 Micro Services Server

17

Page 18: Workshop/Tutorial WSO2 Micro Services Server

1.  Enter in the <mss_home>/samples/stockquote-service

2.  mvn package 3.  java -jar target/stockquote-service-1.0.0-

SNAPSHOT.jar

18

Page 19: Workshop/Tutorial WSO2 Micro Services Server

o  In the console type: (Windows Users o  curl -v http://localhost:8080/stockquote/GOOG

19

Page 20: Workshop/Tutorial WSO2 Micro Services Server

o  Now we will send a POST message to our Service: o  Please type (or copy and paste) the following command:

o  curl-v-XPOST-H"Content-Type:application/json"-d'{"symbol":"BVMF","name":"Bovespa","last":149.62,"low":150.78,"high":149.18,"createdByHost":"localhost"}'http://localhost:8080/stockquote

o  This command will save a new Symbol into our Stock Quote Service

20

Page 21: Workshop/Tutorial WSO2 Micro Services Server

o  You had used: o  Java 8 + maven for building our samples and

exercises o  Executed Microservices with basic jar –jar

approach o  You saw how easy you can build REST Services

and deploy them into your Mic’service Server (powered by WSO2)

21

Page 22: Workshop/Tutorial WSO2 Micro Services Server

22

Page 23: Workshop/Tutorial WSO2 Micro Services Server

o  Several approaches for a “decoupled SOA” o  In this tutorial we will use the “Container-

based approach” o  Microservices are about:

o  Lighter o  Business Need Oriented o  Composable

23

Page 24: Workshop/Tutorial WSO2 Micro Services Server

24

Web Server

ASP.NET ADO.NET

Windows OS

.NET CLR Runtime Front-Store HTML

Page 25: Workshop/Tutorial WSO2 Micro Services Server

25

Web Server

Web Framework (JSF, Struts,

etc)

Persitence (JPA,

Hibernate,SpringTemplates)

Any OS

JVM

Other (JMS, JTA

etc)

App Server

Front-Store HTML

Page 26: Workshop/Tutorial WSO2 Micro Services Server

26

ProductService

get/productspost/productsget/products/{id}get/products/offset/10/1

CustomerService

get/customerspost/customersget/customers/{id}get/customers/export

AddressService

get/addresspost/address/{zip}get/address/geo/{x}/{y}

3 Examples

Page 27: Workshop/Tutorial WSO2 Micro Services Server

27

ProductService

CustomerService

AddressService

AddressService ProductService

CustomerService

AddressService CustomerService

SinglePage APP HTML

FrontStoreService

Delivery Service

Page 28: Workshop/Tutorial WSO2 Micro Services Server

o  Quick deployments o  You are deploying a loosely-coupled, modular

component only J o  Not a huge EAR with dozens of Jars as you used to do in

a monolithic enterprise App

28

Page 29: Workshop/Tutorial WSO2 Micro Services Server

29

Monolithic

Microservices

Reference: http://martinfowler.com/articles/microservices.html#ComponentizationViaServices

Page 30: Workshop/Tutorial WSO2 Micro Services Server

30

Paulo Merson https://insights.sei.cmu.edu/saturn/2015/11/defining-microservices.html Great definition, written by another Brazilian J

From an architecture perspective, the microservice style belongs primarily to the deployment view. It dictates that the deployment unit should contain only one service or just a few cohesive services. The deployment constraint is the distinguishing factor. As a result, microservices are easier to deploy, become more scalable, and can be developed more independently by different teams using different technologies.

Page 31: Workshop/Tutorial WSO2 Micro Services Server

o  Benefits of using microservices:

o  Deployability o  Availability o  Scalability o  Modifiability o  Management

31

Paulo Merson https://insights.sei.cmu.edu/saturn/2015/11/microservices-beyond-the-hype-what-you-gain-and-what-you-lose.html ( Great post )

Page 32: Workshop/Tutorial WSO2 Micro Services Server

o  I would add: o  Deployability o  Availability (Auto-Scaling via Containers) o  Analytics o  Scalability o  Modifiability o  Management

32

Paulo Merson https://insights.sei.cmu.edu/saturn/2015/11/microservices-beyond-the-hype-what-you-gain-and-what-you-lose.html

Page 33: Workshop/Tutorial WSO2 Micro Services Server

33

Page 34: Workshop/Tutorial WSO2 Micro Services Server

o  Part 2: We ship in the distro an example showing how to run a whole deploy from several different container machines managed by Kubernetes.

34

Page 35: Workshop/Tutorial WSO2 Micro Services Server

o  In your command line, go to your: <mss_home>/samples/petstore

o  Enter in deployment folder and execute: run.sho  That’s all, time to get some juice, it will download everything you need:

o  Vagrant o  CoreOS o  Kubernetes o  Docker

35

Page 36: Workshop/Tutorial WSO2 Micro Services Server

o  https://github.com/wso2/product-mss/tree/master/samples/petstore/deployment/kubernetes-vagrant-coreos-cluster

o  Disclaimer: This tutorial is focused on WSO2 Micro Services Server – MSS, and some introduction to the basics on Kubernetes is strongly recommended before you move forward on this tutorial.

36

Page 37: Workshop/Tutorial WSO2 Micro Services Server

37

This step will get a few minutes, according to your internet and machine, So get relaxed while you can enjoy some “Matrix-like” in your console

http://thenextweb.com/wp-content/blogs.dir/1/files/2013/11/relax-at-work.jpg

Page 38: Workshop/Tutorial WSO2 Micro Services Server

è  Double check if your JAVA_HOME is Java 8 è  Please , if you are using MacOS, make sure you that you have

wget installed. è  Recommend you use brewinstallwget

è  If you get errors communicating with Kubernetes nodes, please add this variable before execute run.sh:

è  exportKUBERNETES_MASTER=http://172.17.8.101:8080è  That will be the default Kubernetes UI Console and API Address

38

Page 39: Workshop/Tutorial WSO2 Micro Services Server

39

Our traditional Pet Store Sample has the following Microservices …

fileserver frontend-admin frontend-user

Pet(store) transactionsecurity

Page 40: Workshop/Tutorial WSO2 Micro Services Server

o  If you are using VirtualBox as the Hypervisor (recommended), you will see the following 3 VMs started

40

Page 41: Workshop/Tutorial WSO2 Micro Services Server

o  Please, execute the command: o  kubectlgetpods

o  Theresultmustbelikethis:

41

All the pods, must be Like this, keep repeating This process until all get ready

Page 42: Workshop/Tutorial WSO2 Micro Services Server

o  Please, execute the command: o  kubectlgetpods

o  Theresultmustbelikethis:

42

Troubleshooting: If your pet-xxx appears the READY info as 0/1 It might be not initialized Syncronized with Redis. To solve that, execute: ./clean.sh and later on ./petstore.sh

Page 43: Workshop/Tutorial WSO2 Micro Services Server

o  Kubernetes UI o  Nodes o  Services o  Pods o  General Info

o  Pet Store Admin (PHP App) o  Pet Store Site (PHP App)

43

Page 44: Workshop/Tutorial WSO2 Micro Services Server

http://172.17.8.101:8080/ui Here is the Kubernetes Admin that you can open in your browser

44

Page 45: Workshop/Tutorial WSO2 Micro Services Server

Relationship between the VMs and Kubernetes (Nodes)

45

Here you can see the Ips Attached to the each Node

Page 46: Workshop/Tutorial WSO2 Micro Services Server

46

Viewing the Pods

http://kubernetes.io/v1.0/docs/user-guide/pods.html

Page 47: Workshop/Tutorial WSO2 Micro Services Server

47

Viewing the Pods

http://kubernetes.io/v1.0/docs/user-guide/pods.html

Page 48: Workshop/Tutorial WSO2 Micro Services Server

48

Viewing the Services

Page 49: Workshop/Tutorial WSO2 Micro Services Server

49

Viewing Replication Controllers

In Kubernetes, the base unit of deployment is a pod (intro to pods), which is a group of containers that work together and therefore are logically grouped. The replication controller stores a pod template in order to create new pods if needed.

https://coreos.com/kubernetes/docs/latest/replication-controller.html

Page 50: Workshop/Tutorial WSO2 Micro Services Server

50

Your Machine OS

Hypervisor

Kubernetes Cluster-Master

K8S Node 01 K8S Node 02

Pods Pods

Replication Controller

Service

Page 51: Workshop/Tutorial WSO2 Micro Services Server

51

Your Machine OS

Hypervisor Kubernetes Cluster-Master

K8S Node 01 K8S Node 02 Pods Pods

Replication Controller

Service

Browser

Page 52: Workshop/Tutorial WSO2 Micro Services Server

52

Your Machine OS

Hypervisor Kubernetes Cluster-Master

K8S Node 01 K8S Node 02 Pods Pods

Replication Controller

Service

Browser

NGINX

Page 53: Workshop/Tutorial WSO2 Micro Services Server

53

GettingActualpods:$kubectlgetpods

Page 54: Workshop/Tutorial WSO2 Micro Services Server

54

Gettingdetailsaboutsomepod,forinstance$kubectldescribepodsstore-fe-r43hm

Page 55: Workshop/Tutorial WSO2 Micro Services Server

55

Gettingdetailsaboutsomepod,forinstance$kubectldescribepodsstore-fe-r43hm

Please, note here which is the Pod internal IP: 10.244.36.23 And in which Node this pod Is actually running Important: notice that the pod’s id will change if you restart your environment J In my actual case, my pod is store-fe-<id>, id= r43m

Page 56: Workshop/Tutorial WSO2 Micro Services Server

56

GettingActualServices:$kubectldescribeservicestore-fe

Page 57: Workshop/Tutorial WSO2 Micro Services Server

57

Persistence Repository / Services

"Containerized” Microservices based in pure java –jar approach

Client Apps (PHP) petstore-admin petstore

Page 58: Workshop/Tutorial WSO2 Micro Services Server

58

You will need to browse the service: admin-fe

http:// NodeServerIP: NodePort

Ex:http://172.17.8.102:30984/

Page 59: Workshop/Tutorial WSO2 Micro Services Server

59

admin/admin

Page 60: Workshop/Tutorial WSO2 Micro Services Server
Page 61: Workshop/Tutorial WSO2 Micro Services Server
Page 62: Workshop/Tutorial WSO2 Micro Services Server

fileserver

Page 63: Workshop/Tutorial WSO2 Micro Services Server

63

You will need to browse the service: store-fe

http:// NodeServerIP: NodePort

Ex:http://172.17.8.102:31466/

Page 64: Workshop/Tutorial WSO2 Micro Services Server
Page 65: Workshop/Tutorial WSO2 Micro Services Server

Here the Microservices Transaction Is invoked.

Page 66: Workshop/Tutorial WSO2 Micro Services Server

o  Executing the petstore sample o  Understanding the basics from Kubernetes

and its concepts, such as pods, services and Replication Controller.

o  Executing the Services and Apps

Page 67: Workshop/Tutorial WSO2 Micro Services Server

o  Proposed Lab: o  Execute the previous samples from Part1 in

Kubernetes + Docker

67

Page 68: Workshop/Tutorial WSO2 Micro Services Server

68

Page 69: Workshop/Tutorial WSO2 Micro Services Server

o  Please go to : http://wso2.com/products/data-analytics-server/

o  Download the product o  Install the product:

1.  Unzip 2.  That’s all 3.  Let’s call your installation destination folder as DAS_HOME from

now on o  MySQL for this sample is also required

69

Page 70: Workshop/Tutorial WSO2 Micro Services Server

o  Step 1: Configure WSO2 DAS 1.  Go to <MSS_HOME>/analytics/das-setup and execute setup.sh :

1.  /setup.sh-d<DAS_HOME>-uadmin-p2.  Done, everything will be done by the script!

70

Page 71: Workshop/Tutorial WSO2 Micro Services Server

o  Step 2: Execute DAS Server 1.  Enter in DAS_HOME 2.  Make sure that Java 8 is in the path 3.  Type sh bin/wso2server.sh 4.  Wait until to see a message in the console like

this: 5.  Open this browser URL, it will let you see the

WSO2 Data Analytics Server Console (default user admin and password admin)

71

Page 72: Workshop/Tutorial WSO2 Micro Services Server

72

WSO2 DAS is ready and configured!

Page 73: Workshop/Tutorial WSO2 Micro Services Server

o  Step 3: (based on https://github.com/wso2/product-mss/tree/master/samples/metrics)

1.  Go to <MSS_HOME>/samples/metrics2.  Execute mvncleaninstall3.  Please, export the following system

variables: 1.  exportMETRICS_REPORTING_DAS_DATAAGENTCONFIGPATH="data-agent-conf.xml”2.  exportHTTP_MONITORING_DAS_DATAAGENTCONFIGPATH="data-agent-conf.xml”

73

Page 74: Workshop/Tutorial WSO2 Micro Services Server

4.  Execute: $java-jartarget/metrics-*.jar5.  Invoke the following URLs via command line:

o  curl-vhttp://localhost:8080/test/rand/500

o  curl-vhttp://localhost:8080/test/total/10

o  curl-vhttp://localhost:8080/test/echo/test

o  curl-vhttp://localhost:8080/student/910760234V

o  curl-v--data"{'nic':'860766123V','firstName':'Jack','lastName':'Black','age':29}"-H"Content-Type:application/json"http://localhost:8080/student

o  curl-vhttp://localhost:8080/student/860766123V

o  curl-vhttp://localhost:8080/student

74

Page 75: Workshop/Tutorial WSO2 Micro Services Server

o  What is happening: o  Now, after the invocation from cURLs, some

information were sent from WSO2 Microservices Server to WSO2 Data Analytics Server.

o  The Metrics are also present in the command line where you are running the jar:

75

Page 76: Workshop/Tutorial WSO2 Micro Services Server

76

Page 77: Workshop/Tutorial WSO2 Micro Services Server

@GET @Path("/{nic}") @Produces("application/json") @Timed @HTTPMonitoring public Student getStudent(@PathParam("nic") String nic) { return students.get(nic); }  @POST @Consumes("application/json") @Metered @HTTPMonitoring public void addStudent(Student student) { students.put(student.getNic(), student); }

org.wso2.carbon.mss.example.service.StudentService.java

Page 78: Workshop/Tutorial WSO2 Micro Services Server

78

<Agent> <Name>Thrift</Name> <DataEndpointClass> org.wso2.carbon.databridge.agent.endpoint.thrift.ThriftDataEndpoint </DataEndpointClass> <TrustSore>client-truststore.jks</TrustSore> <TrustSorePassword>wso2carbon</TrustSorePassword> ….

Thrift

This file is in charge to define how will MSS communicate with DAS

Page 79: Workshop/Tutorial WSO2 Micro Services Server

https://localhost:9443/monitoring/

79

Page 80: Workshop/Tutorial WSO2 Micro Services Server
Page 81: Workshop/Tutorial WSO2 Micro Services Server

o  http://kubernetes.io/v1.1/ o  https://www.digitalocean.com/community/tutorials/an-

introduction-to-kubernetes o  https://insights.sei.cmu.edu/saturn/2015/11/defining-

microservices.html o  http://www.slideshare.net/afkham_azeez/

wso2con-2015usintroductiontomssv2?related=1 o  http://www.slideshare.net/afkham_azeez/wso2conus-2015-

introduction-to-wso2-microservices-server-mss?related=2

Page 82: Workshop/Tutorial WSO2 Micro Services Server

82

Page 83: Workshop/Tutorial WSO2 Micro Services Server

o  http://wso2.com/products/microservices-server/ o  Lightweight and fast runtime

o  6MB pack size o  Starts within 400ms o  Based on the new WSO2 Carbon 5.0 kernel o  ~25MB memory consumption for the WSO2 MSS framework

o  Simple development, deployment, and monitoring o  WSO2 Developer Studio-based tooling for generating microservices projects starting from a

Swagger API definition o  Built-in metrics and analytics APIs via WSO2 Data Analytics Server o  Tracing of requests using a unique message ID

o  High scalability and reliability o  Transport based on Netty 4.0 o  JWT-based security o  Custom interceptors o  Streaming input and streaming output support o  Comprehensive samples demonstrating how to develop microservices applications

83

Page 84: Workshop/Tutorial WSO2 Micro Services Server

o  Tutorial done! o  Next steps:

o  Keep watching how WSO2 MSS will evolve o  Don’t miss our upcoming Webinars covering this

and even more

84

Page 85: Workshop/Tutorial WSO2 Micro Services Server

o  Please, if you need to understand more, or want to talk to one of our specialists to help you and your company’s projects, please contact us here:

o  http://wso2.com/contact/

85

Page 86: Workshop/Tutorial WSO2 Micro Services Server

86

@jedgarsilva

http://www.wso2.com

Edgar Silva [email protected]

Page 87: Workshop/Tutorial WSO2 Micro Services Server

Contact us !